Pacemaker
Pacemaker 集群中的死節點:“無法完成 CIB 註冊”
我有一種情況,升級後兩節點 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
. 包pacemaker
fromjessie-backports
僅需要>= 1.0.10
(可能是目前包描述中的錯誤),但libpe-rules2
(也來自jessie-backports
)的目前版本是 1.1.16。由於動態庫中未定義的符號,舊版本的庫導致程序
cib
失敗。pacemakerd
這是通過從 開始(並且實際上cib
)揭示的strace -f
。升級apt-get install libpe-rules2
解決了這種情況。