アップグレード後、2 ノードの Pacemaker クラスターが動作しなくなる状況があります。パッケージ バージョンはpacemaker 1.1.16-1~bpo8+
、corosync 2.4.2-3~bpo8+1
Debian Jessie では です。
Pacemaker は 1 つのノードでまだ起動できます。crm_node -l
その後、そのノードはオンラインとしてリストされ、2 番目のノードは失われたものとしてリストされます。
Pacemaker は 2 番目のノードで起動できなくなりました。次のログ メッセージは/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
したがって、2 番目のノードが CIB 登録を試行し、16 回の失敗後に Pacemaker の起動をキャンセルし、おそらく登録できないために最初のノードが 2 番目のノードをデッドと見なすように見えます。
このような状況から誰が抜け出せるでしょうか?
答え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
状況は解決しました。