我正在创build一个基于云的群集,所以现在我正在使用uni cast连接到其他的pacemaker / corosync节点。我能够使用私有IP创build一个群集。 要创build跨区域群集,我想使用公有IP。 我尝试使用通用configuration,为memberaddr和节点的公网IP绑定bindnetaddr。 像这样的东西
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
这不起作用。 难道我做错了什么 ? 所有我可以find的参考是corosync 2.x
谢谢
如果Corosyncconfiguration适用于您的专用networking,则它也适用于您的公共networking。 我将validation是否有适当的防火墙规则允许UDP端口5404和5405在节点之间进行通信。
此外, bindnetaddr
不一定是一个IP地址; 它正在寻找一个networking地址。 只要确定你的networking掩码使用了正确的networking地址即可。
从Corosync.conf手册页:
bindnetaddr This specifies the network address the corosync executive should bind to. bindnetaddr should be an IP address configured on the system, or a network address. For example, if the local interface is 192.168.5.92 with netmask 255.255.255.0, you should set bindnetaddr to 192.168.5.92 or 192.168.5.0. If the local interface is 192.168.5.92 with net‐ mask 255.255.255.192, set bindnetaddr to 192.168.5.92 or 192.168.5.64, and so forth. This may also be an IPV6 address, in which case IPV6 networking will be used. In this case, the exact address must be specified and there is no automatic selection of the network interface within a specific subnet as with IPv4. If IPv6 networking is used, the nodeid field in nodelist must be specified.
我几乎忘记了这一点,如果有人正在试图让公有IP的corosync 1.4在云上工作。 Corosync根据您提供的绑定地址绑定到接口,并生成绑定地址,这将是您的接口地址。
据我所知,它将这个IP广播给所有的节点,而所有的节点又将这个地址作为响应,而不是从接收到数据包的地址中得到地址。
所以如果你的公共IP不在盒子里,就像是在某些云层上,那么就可能不可能像使用公共IP一样使用Corosync