Zabbix6.0 HAクラスター 設定編

記事タイトルとURLをコピーする

みなさん、こんにちは。しずかと申します。2022年12月に4か月の研修を終え、MSP事業の部門に本配属されました。4,5年ぶりにZabbixなどをいじってます。 とりあえずZabbix6.0サーバを立てて、ふむふむとデフォルトのダッシュボードを眺めてました。

以前は3.0系をいじっていたので、ダッシュボードの表示が変わったなぁ、と眺めていると・・・

HAクラスター という項目を発見しました!! 以前は Corosync と Pacemaker などで冗長化をするのが、よくある構成パターンだったと思いますが、新機能が増えてる!!ということでブログにまとめてみました。

目次

はじめに

この記事の手順や構成については、あくまでも検証目的です。 当社のサービス提供時の構築手順や、システム構成とは異なりますので、ご了承ください。

Zabbix HA について

Zabbix HA(High availability) は、Zabbix6.0.0でリリースされた新機能です。

www.zabbix.com

これまでは、他のパッケージなどを用いて冗長化していたケースが多いかと思いますが、Zabbix自身の機能として提供されるようになった ことがポイントかと思います。

またHA機能の詳細は、公式ドキュメントに記載されています。

www.zabbix.com

構成と設定

構成

以下の構成で検証してみました。

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

なお記載のない部分は特にこだわりはありません。

設定

まず設定方法の流れは以下の通りです。

  1. Zabbix1号機用のEC2インスタンス作成
  2. RDSインスタンス作成
  3. (任意) Zabbixの日本語化
  4. Zabbixサーバ・データベースの設定
  5. Zabbix1号機のAMI作成、Zabbix2号機用のEC2インスタンス作成
  6. Zabbix1号機のHA設定、エージェント設定修正
  7. Zabbix2号機のサーバ・HA・エージェント設定
  8. HA構成の状況確認

1~ 4 については、以下のブログでまとめてみましたので、ここでは割愛します。 よかったら読んでみてください。

blog.serverworks.co.jp

設定前の状態

ここからは、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.confzabbix_agent.conf の2つを修正するだけで、簡単に設定可能でした。

最後まで読んでいただき、ありがとうございました。

静 優(執筆記事の一覧)

オンプレからクラウドに転身したインフラエンジニア