どうも、サイオステクノロジー 山田です。
本記事は Pacemaker を利用して Zabbixサーバ をHAクラスタ化するという内容になります。
前編で Pacemaker/Corosync の構築までをご紹介しましたが、今回は動作確認となります。
リソース切り替え
HOST01 から HOST02 へリソースを切り替えます。
# pcs status resources Master/Slave Set: mariadb-clone [mysql] Masters: [ [HOST01] ] Slaves: [ [HOST02] ] Resource Group: zabbix-group zabbix-server (systemd:zabbix-server): Started [HOST01] apache (ocf::heartbeat:apache): Started [HOST01] vip (ocf::heartbeat:IPaddr2): Started [HOST01] ## 一時的にスタンバイ状態にする # pcs cluster standby [HOST01] ~ 少し待つ ~ ## スタンバイ状態から解除する # pcs cluster unstandby [HOST01] # pcs status resources Master/Slave Set: mariadb-clone [mysql] Masters: [ [HOST02] ] Slaves: [ [HOST01] ] Resource Group: zabbix-group zabbix-server (systemd:zabbix-server): Started [HOST02] apache (ocf::heartbeat:apache): Started [HOST02] vip (ocf::heartbeat:IPaddr2): Started [HOST02]
※注意
“pcs resource move” コマンドを利用してリソースを切り替えることができますが、以下のようなメッセージが表示され、自動的に制約が追加されますので、基本は利用しない方がいいかと思われます。
# pcs resource move zabbix-server Warning: Creating location constraint cli-ban-zabbix-server-on-[HOST01] with a score of -INFINITY for resource zabbix-server on node [HOST01]. This will prevent zabbix-server from running on [HOST01] until the constraint is removed. This will be the case even if [HOST01] is the last node in the cluster.
MariaDB プロセス障害
MariaDB がプロセス障害になった場合にフェイルオーバーするかを確認します。
# pcs status resources Master/Slave Set: mariadb-clone [mysql] Masters: [ [HOST01] ] Slaves: [ [HOST02] ] Resource Group: zabbix-group zabbix-server (systemd:zabbix-server): Started [HOST01] apache (ocf::heartbeat:apache): Started [HOST01] vip (ocf::heartbeat:IPaddr2): Started [HOST01] ## プロセスをKILLする # kill -kill `pgrep -f mariadb` ~ 少し待つ ~ # pcs status resources Master/Slave Set: mariadb-clone [mysql] Masters: [ [HOST02] ] Stopped: [ [HOST01] ] Resource Group: zabbix-group zabbix-server (systemd:zabbix-server): Started [HOST02] apache (ocf::heartbeat:apache): Started [HOST02] vip (ocf::heartbeat:IPaddr2): Started [HOST02] ## リソース障害の状態を消去 # pcs resource cleanup
Zabbix プロセス障害
Zabbix がプロセス障害になった場合にフェイルオーバーするかを確認します。
# pcs status resources Master/Slave Set: mariadb-clone [mysql] Masters: [ [HOST01] ] Slaves: [ [HOST02] ] Resource Group: zabbix-group zabbix-server (systemd:zabbix-server): Started [HOST01] apache (ocf::heartbeat:apache): Started [HOST01] vip (ocf::heartbeat:IPaddr2): Started [HOST01] ## プロセスをKILLする # kill -kill `pgrep -f zabbix_server` ~ 少し待つ ~ # pcs status resources Master/Slave Set: mariadb-clone [mysql] Masters: [ [HOST02] ] Slaves: [ [HOST01] ] Resource Group: zabbix-group zabbix-server (systemd:zabbix-server): Started [HOST02] apache (ocf::heartbeat:apache): Started [HOST02] vip (ocf::heartbeat:IPaddr2): Started [HOST02] ## リソース障害の状態を消去 # pcs resource cleanup
Apache プロセス障害
Apache がプロセス障害になった場合にフェイルオーバーするかを確認します。
# pcs status resources Master/Slave Set: mariadb-clone [mysql] Masters: [ [HOST01] ] Slaves: [ [HOST02] ] Resource Group: zabbix-group zabbix-server (systemd:zabbix-server): Started [HOST01] apache (ocf::heartbeat:apache): Started [HOST01] vip (ocf::heartbeat:IPaddr2): Started [HOST01] ## プロセスをKILLする # kill -kill `pgrep -f httpsd` ~ 少し待つ ~ # pcs status resources Master/Slave Set: mariadb-clone [mysql] Masters: [ [HOST02] ] Slaves: [ [HOST01] ] Resource Group: zabbix-group zabbix-server (systemd:zabbix-server): Started [HOST02] apache (ocf::heartbeat:apache): Started [HOST02] vip (ocf::heartbeat:IPaddr2): Started [HOST02] ## リソース障害の状態を消去 # pcs resource cleanup
VIP 障害
VIP 障害が発生した場合にフェイルオーバーするかを確認します。
# pcs status resources Master/Slave Set: mariadb-clone [mysql] Masters: [ [HOST01] ] Slaves: [ [HOST02] ] Resource Group: zabbix-group zabbix-server (systemd:zabbix-server): Started [HOST01] apache (ocf::heartbeat:apache): Started [HOST01] vip (ocf::heartbeat:IPaddr2): Started [HOST01] ## IPアドレスを強制的に解除する # ip addr del [Virtual IPaddr]/[Netmask] dev [IFNAME] ~ 少し待つ ~ # pcs status resources Master/Slave Set: mariadb-clone [mysql] Masters: [ [HOST02] ] Slaves: [ [HOST01] ] Resource Group: zabbix-group zabbix-server (systemd:zabbix-server): Started [HOST02] apache (ocf::heartbeat:apache): Started [HOST02] vip (ocf::heartbeat:IPaddr2): Started [HOST02] ## リソース障害の状態を消去 # pcs resource cleanup
最後に
今回は動作確認の結果をご紹介させていただきました。
Pacemaker に関わらず、HAシステムを構築する際に思っていることですが、とにかく設計が大変ですね。
ユーザによって、考え方やポリシーが全く異なるため、一つ一つ丁寧に時間をかけて設計する必要があるからです。
また今回は MariaDB のレプリケーション機能を利用する方法でご紹介しましたが、OSSのデータミラーリングソフト DRBD(Distributed Replicated Block Device) を利用して低レイヤーで実装する方法もありますので、機会があればご紹介したいと思います。
3回に渡り、お付き合いありがとうございました。
サイオステクノロジー株式会社 山田