Pacemaker で Zabbixサーバ をHAクラスタ化してみた (動作確認編)

どうも、サイオステクノロジー 山田です。
本記事は 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 <code>pgrep -f mariadb</code>

~ 少し待つ ~

# 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 <code>pgrep -f zabbix_server</code>

~ 少し待つ ~

# 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 <code>pgrep -f httpd</code>

~ 少し待つ ~

# 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回に渡り、お付き合いありがとうございました。

サイオステクノロジー株式会社 山田

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*