corosync 绑定到 127.0.0.1 而不是正确的接口

corosync 绑定到 127.0.0.1 而不是正确的接口

当我尝试使用 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。”

希望这对某人有用。

相关内容