Linux
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 失敗並改為綁定到 localhost。
UDP 0 0 127.0.0.1:5405 0.0.0.0:* 7889/corosync
tcpdump 日誌分析表明,144.76.91.XXX 回复 5.9.121.XXX,ICMP 類型為 3(目標不可達),程式碼為 3(埠不可達)。
corosync -f 輸出將重複列印:
6月24日12:53:28
$$ TOTEM $$由於作業系統或網路故障,Totem 無法形成集群。此消息的最常見原因是本地防火牆配置不正確。 兩台主機之間啟用了 UDP 流量,目前沒有防火牆,我使用的是 Debian(因此沒有 SELinux)。
有什麼想法可以解決這個問題嗎?甚至可以在不同的子網上創建一個包含 2 台機器的集群,還是我需要在同一個子網中訂購伺服器?提前感謝您的任何回复。
來自郵件列表(解決了我的問題),由 Dan Friscu 提供:
“您不應該在兩個地方使用相同的 bindnetaddr,它僅在節點級別與 UDPU(您的案例)相關。在您擁有 144.* 地址的節點上,將其用作 bindnetaddr。”
希望這對某人有用。