我有一种情况,升级后两节点 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
解决了这种情况。