我正在创建一个基于云的集群,所以现在我使用单播连接到其他起搏器/corosync 节点。我能够使用私有 IP 创建一个集群。要创建跨区域集群,我想使用公共 IP。我尝试使用通用配置,为 memberaddr 提供公共 IP,为 bindnetaddr 提供节点的公共 IP。像这样的东西
interface {
member {
memberaddr: <public ip 1>
}
member {
memberaddr: <public ip 2>
}
member {
memberaddr: <public ip 3>
}
ringnumber: 0
bindnetaddr: <current nodes public Ip>
mcastport: 5405
ttl: 1
}
transport: udpu
这是行不通的。难道我做错了什么 ?我能找到的所有参考资料都是 corosync 2.x
谢谢
如果 Corosync 配置适用于您的专用网络,它也应该适用于您的公共网络。我将验证是否存在允许 UDP 端口 5404 和 5405 在节点之间通信的防火墙规则。
此外,
bindnetaddr
不一定是 IP 地址;它正在寻找一个网络地址。只需确定您为网络掩码使用了正确的网络地址。从 Corosync.conf 手册页:
我几乎忘记了这一点,如果有人试图让 corosync 1.4 在具有公共 IP 的云上工作。Corosync 根据您提供的绑定地址绑定到接口,并生成一个绑定地址,该地址将是您的接口地址。
据我了解,它是将这个 IP 广播给所有节点,这些节点反过来响应这个地址,而不是它接收数据包的地址。
因此,如果您的公共 IP 不像在某些云上那样在盒子上,那么可能无法像公共 IP 一样使用 Corosync