Pacemaker 集群中的死节点:“无法完成 CIB 注册”

Pacemaker 集群中的死节点:“无法完成 CIB 注册”

我遇到过这样的情况:双节点 Pacemaker 集群在升级后无法再工作。软件包版本为Debian Jessiepacemaker 1.1.16-1~bpo8+corosync 2.4.2-3~bpo8+1Debian 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。 软件包pacemakerjessie-backports需要>= 1.0.10(可能是当前软件包描述中的错误),但libpe-rules2(也来自jessie-backports)的当前版本是 1.1.16。

旧版本的库会cib因为动态库中未定义的符号而导致进程失败。这是通过启动pacemakerd(并实际cib) 来发现的strace -f。升级到apt-get install libpe-rules2解决了这个问题。

相关内容