当我尝试使用 Hetzner 作为托管提供商实现双节点故障转移群集时遇到以下问题。
我的corosync.conf如下:
# Please read the corosync.conf.5 manual page
compatibility: whitetank
totem {
version: 2
secauth: off
interface {
member {
memberaddr: 144.76.91.XXX
}
member {
memberaddr: 5.9.121.XXX
}
ringnumber: 0
bindnetaddr: 5.9.121.0
mcastport: 5405
ttl: 1
}
transport: udpu
}
logging {
fileline: off
to_logfile: yes
to_syslog: yes
debug: on
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
` 问题是 5.9.121.XXX 绑定正确(并且在 crm_mon 下显示为集群的一部分)
udp 0 0 5.9.121.XXX:5405 0.0.0.0:* 8281/corosync
但 144.76.91.XXX 失败并绑定到本地主机。
udp 0 0 127.0.0.1:5405 0.0.0.0:* 7889/corosync
tcpdump 日志分析表明,144.76.91.XXX 使用 ICMP 类型 3(目标不可达)、代码 3(端口不可达)回复 5.9.121.XXX。
corosync -f 输出将重复打印:
6 月 24 日 12:53:28 corosync [TOTEM ] Totem 因操作系统或网络故障无法形成集群。此消息最常见的原因是本地防火墙配置不正确。
两个主机之间启用了 UDP 通信,目前没有安装防火墙,并且我正在使用 Debian(因此没有 SELinux)。
有没有办法解决这个问题?是否有可能创建一个由不同子网上的两台机器组成的集群,还是我需要在同一子网内订购服务器?提前感谢大家的回复。
答案1
摘自邮件列表(解决了我的问题),由 Dan Friscu 提供:
“您不应该在两个地方使用相同的 bindnetaddr,它仅与 UDPU(您的用例)的节点级别相关。在您拥有 144.* 地址的节点上,将其用作 bindnetaddr。”
希望这对某人有用。