みなさん、こんにちは。しずかと申します。2022年12月に4か月の研修を終え、MSP事業の部門に本配属されました。4,5年ぶりにZabbixなどをいじってます。 とりあえずZabbix6.0サーバを立てて、ふむふむとデフォルトのダッシュボードを眺めてました。
以前は3.0系をいじっていたので、ダッシュボードの表示が変わったなぁ、と眺めていると・・・
HAクラスター という項目を発見しました!! 以前は Corosync と Pacemaker などで冗長化をするのが、よくある構成パターンだったと思いますが、新機能が増えてる!!ということでブログにまとめてみました。
目次
はじめに
この記事の手順や構成については、あくまでも検証目的です。 当社のサービス提供時の構築手順や、システム構成とは異なりますので、ご了承ください。
Zabbix HA について
Zabbix HA(High availability) は、Zabbix6.0.0でリリースされた新機能です。
これまでは、他のパッケージなどを用いて冗長化していたケースが多いかと思いますが、Zabbix自身の機能として提供されるようになった ことがポイントかと思います。
またHA機能の詳細は、公式ドキュメントに記載されています。
構成と設定
構成
以下の構成で検証してみました。
EC2インスタンス
項目 | 1号機パラメータ | 2号機パラメータ |
---|---|---|
OS | Ubuntu 22.04 | Ubuntu 22.04 |
Zabbix | 6.0.x LTS | 6.0.x LTS |
AZ | AZ-a | AZ-c |
ホスト名 | zab6-ha-a | zab6-ha-c |
RDS
項目 | パラメータ |
---|---|
エンジン | MySQL 8.0.x |
なお記載のない部分は特にこだわりはありません。
設定
まず設定方法の流れは以下の通りです。
- Zabbix1号機用のEC2インスタンス作成
- RDSインスタンス作成
- (任意) Zabbixの日本語化
- Zabbixサーバ・データベースの設定
- Zabbix1号機のAMI作成、Zabbix2号機用のEC2インスタンス作成
- Zabbix1号機のHA設定、エージェント設定修正
- Zabbix2号機のサーバ・HA・エージェント設定
- HA構成の状況確認
1~ 4 については、以下のブログでまとめてみましたので、ここでは割愛します。 よかったら読んでみてください。
設定前の状態
ここからは、Zabbixサーバ・データベースの作成が完了している状態から進みます。
まずは設定前のHAのステータスを確認しておきます。
サイドバー > レポート > システム情報
から 確認します。
HAクラスター の項目が 無効 になってます。
Zabbix1号機のAMI作成、Zabbix2号機用のEC2インスタンス作成
1号機のインスタンスからAMIを取得します。 そのAMIからインスタンスを起動し、1号機と別AZに配置します。 2号機のプライベートIPが採番されたら控えておきます。
またデータベースは1号機と同一のものを使用するため、スキーマ投入などの設定は不要です。
Zabbix1号機のHA設定、エージェント設定修正
HA設定
HAの設定のため、zabbix_server.conf
にて、HANodeName
NodeAddress
を設定します。
NodeAddress
は自身のプライベートIPアドレスを指定します。
HANodeName=zab6-ha-a NodeAddress=10.0.1.xxx:10051
なんとZabbix Serverとしての設定はこれだけです!
エージェント設定修正
次に zabbix_agent.conf
にて、Server
ServerActive
を修正します。
それぞれ、ループバックアドレスに加えて、自身と2号機のプライベートIPアドレスを記載します。
Server=127.0.0.1,10.0.1.xxx,10.0.2.yyy ServerActive=127.0.0.1,10.0.1.xxx,10.0.2.yyy
修正したら、プロセスを再起動します。
systemctl restart zabbix-server zabbix-agent apache2
HAステータス確認
HAのステータス確認コマンドを実行すると、1号機(zab6-ha-a)が active
であることがわかります。
# zabbix_server -R ha_status Failover delay: 60 seconds Cluster status: # ID Name Address Status Last Access 1. cldral4c60001gfmcilxa7znx zab6-ha-a 10.0.1.xxx:10051 active 2s
WebUIで確認すると、HAクラスター が 有効 に変わり、1号機が追加されていることがわかります。
Zabbix2号機のサーバ・HA・エージェント設定
前項と同様に、zabbix_server.conf
zabbix_agent.conf
を修正します。
なお、 NodeAddress
は2号機のプライベートIPアドレスを記載します。
HANodeName=zab6-ha-c NodeAddress=10.0.2.yyy:10051
また 1号機のAMIから作成したため、1号機のサーバ名になっているので、zabbix.conf.php
にて $ZBX_SERVER_NAME
を修正します。
1から2号機を作成している場合は不要です。
$ZBX_SERVER_NAME = 'zab6-ha-c';
最後にプロセスを再起動します。
systemctl restart zabbix-server zabbix-agent apache2
HAステータスの確認
HAのステータス確認コマンドを実行すると、2号機(zab6-ha-c)が standby
で追加されていることがわかります。
# zabbix_server -R ha_status Failover delay: 60 seconds Cluster status: # ID Name Address Status Last Access 1. cldral4c60001gfmcilxa7znx zab6-ha-a 10.0.1.xxx:10051 active 3s 2. cldrc132c0001qumefonhzi64 zab6-ha-c 10.0.2.yyy:10051 standby 0s
なおスタンバイ機で上記のコマンドは実行できないようです。
# zabbix_server -R ha_status Runtime commands can be executed only in active mode
WebUIでも2号機が スタンバイ で追加されていることがわかります。WebUIでは2号機からも情報が確認できました。
Webインターフェースの準備
上記のドキュメントにて以下の記載があります。
Webインターフェースの設定ファイル(Webインターフェースのファイルがあるディレクトリ内または/etc/zabbix/webディレクトリ内にある conf/zabbix.conf.php)内で、Zabbixサーバーの アドレス:ポート番号 が 設定されていない ことを確認してください。
デフォルトでは上記のよう設定済みのようですが、念のため確認しておきましょう。
# cat /etc/zabbix/web/zabbix.conf.php | grep "ZBX_SERVER" // $ZBX_SERVER = ''; // $ZBX_SERVER_PORT = '';
まとめ
ホストの登録の仕方や実際にフェイルオーバーした時の挙動は、次回以降にまとめてみたいと思います。 それでは今回のまとめです。
- Zabbix HAクラスター は 6.0.0 でリリースされた新機能です。
- Zabbix HAクラスター は ネイティブ提供されるZabbixサーバの高可用性(HA)クラスタリング機能です。
- HA設定は
zabbix_server.conf
、zabbix_agent.conf
の2つを修正するだけで、簡単に設定可能でした。
最後まで読んでいただき、ありがとうございました。
静 優(執筆記事の一覧)
オンプレからクラウドに転身したインフラエンジニア