我遇到過這樣的情況:升級後,兩節點 Pacemaker 叢集不再運作。軟體包版本pacemaker 1.1.16-1~bpo8+
在corosync 2.4.2-3~bpo8+1
Debian Jessie 下。
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 啟動,而第一個節點可能因為無法註冊而認為第二個節點已死亡。
誰能擺脫這樣的困境呢?
答案1
根本原因是libpe-rules2
提供的軟體包版本太舊libpe-rules2.so
。pacemaker
來自 的軟體包jessie-backports
僅需要>= 1.0.10
(可能是當前軟體包描述中的錯誤),但libpe-rules2
(也來自jessie-backports
)的當前版本是 1.1.16。
cib
由於動態庫中未定義的符號,舊版本的庫導致進程失敗。這是透過以 開始pacemakerd
(並且實際上cib
)揭示的strace -f
。升級apt-get install libpe-rules2
解決了這個問題。