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

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

どうも、サイオステクノロジー 山田です。
本記事は 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回に渡り、お付き合いありがとうございました。

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

アバター画像
About 山田康裕 27 Articles
20代前半からLinux系OSSや認証基盤を中心とした提案/設計/構築を担当。特に仕事を選ばない、何でも屋さん。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる