Linux

corosync 綁定到 127.0.0.1 而不是正確的介面

  • June 26, 2013

在嘗試使用 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。”

希望這對某人有用。

引用自:https://serverfault.com/questions/518069