Pacemaker

Pacemaker 集群中的死節點:“無法完成 CIB 註冊”

  • March 19, 2018

我有一種情況,升級後兩節點 Pacemaker 集群不再工作。軟體包版本在 Debian Jessie 下pacemaker 1.1.16-1~bpo8+corosync 2.4.2-3~bpo8+1

Pacemaker 仍然能夠在一個節點上啟動。crm_node -l然後將該節點列為線上,第二個列為失去。

Pacemaker 無法再在第二個節點上啟動。以下日誌消息/var/log/corosync/logfile似乎相關:

cib: info: validate_with_relaxng: Creating RNG parser context
pacemakerd: error: pcmk_child_exit: The cib process (1234) exited: Key has expired (127)
pacemakerd: notice: pcmk_process_exit: Respawning failed child process: cib
...
cib: info: validate_with_relaxng: Creating RNG parser context
pacemakerd: error: pcmk_child_exit: The cib process (1235) exited: Key has expired (127)
pacemakerd: notice: pcmk_process_exit: Respawning failed child process: cib
...
crmd: warning: do_cib_control: Couldn't complete CIB registration 1 times... pause and retry
...
crmd: warning: do_cib_control: Couldn't complete CIB registration 16 times... pause and retry 
crmd: notice: crm_shutdown: Shutting down cluster resource manager | limit=1200000ms
pacemakerd: notice: pcmk_shutdown_worker: Shutdown complete

因此,似乎第二個節點嘗試 CIB 註冊並在 16 次嘗試失敗後取消 Pacemaker 啟動,並且第一個節點認為第二個節點可能因為無法註冊而死亡。

誰能擺脫這樣的局面?

根本原因原來是包的太舊版本libpe-rules2,它提供了libpe-rules2.so. 包pacemakerfromjessie-backports僅需要>= 1.0.10(可能是目前包描述中的錯誤),但libpe-rules2(也來自jessie-backports)的目前版本是 1.1.16。

由於動態庫中未定義的符號,舊版本的庫導致程序cib失敗。pacemakerd這是通過從 開始(並且實際上cib)揭示的strace -f。升級apt-get install libpe-rules2解決了這種情況。

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