![Pacemaker 集群中的死节点:“无法完成 CIB 注册”](https://linux22.com/image/719097/Pacemaker%20%E9%9B%86%E7%BE%A4%E4%B8%AD%E7%9A%84%E6%AD%BB%E8%8A%82%E7%82%B9%EF%BC%9A%E2%80%9C%E6%97%A0%E6%B3%95%E5%AE%8C%E6%88%90%20CIB%20%E6%B3%A8%E5%86%8C%E2%80%9D.png)
我遇到过这样的情况:双节点 Pacemaker 集群在升级后无法再工作。软件包版本为Debian Jessiepacemaker 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
解决了这个问题。