実質的にダウンタイムを発生させられない重要なインフラストラクチャーでは、高可用性(HA)が求められます。したがって、停止してしまう可能性があるサービスについては、現在のサービスが停止してしまったときに処理を引き継げるようにするためのフェールオーバーオプションが必要です。
Zabbixは、セットアップが簡単で、以前のHAの専門知識を必要としない 組み込まれた高可用性のソリューションを提供します。組み込まれたZabbixのHAは、Zabbixサーバーのソフトウェア/ハードウェアの障害に対する保護やメンテナンスに伴うダウンタイムを削減するのに役に立つでしょう。
Zabbixの高可用性モードでは、複数のZabbixサーバーがクラスター内のノードとして実行されます。クラスター内の1台のZabbixサーバーがアクティブである間、他のサーバーはスタンバイ状態となり、必要に応じて引き継ぐことができるよう準備されます。
ZabbixのHAへの切り替えは戻すことが可能で、いつでもスタンドアロン環境に戻すことができます。
こちらも参照: 実装の詳細
Zabbixサーバーをクラスターノードとして起動するには、サーバー設定で2つのパラメーターを設定する必要があります。
これは、エージェントおよびプロキシ構成でサーバーが参照される一意のノード識別子 (例: zabbix-node-01
) です。 HANodeName が指定されていない場合、サーバーはスタンドアロン モードで起動されます。
The NodeAddress parameter (address:port) will be used by Zabbix frontend to connect to the active server node. NodeAddress must match the IP or FQDN name of the respective Zabbix server. NodeAddress パラメータ (アドレス:ポート番号) は、Zabbix フロントエンドがアクティブなサーバー ノードに接続するために使用されます。 NodeAddress は、それぞれの Zabbix サーバーの IP または FQDN 名と一致する必要があります。
設定ファイル変更後、すべての Zabbix サーバーを再起動します。 これでクラスタノードとして機能します。 サーバーの最新ステータスは、レポート → システム情報 で確認できます。
zabbix_server -R ha_status
上記ランタイム コマンドは、現在の HA クラスターの状態を Zabbix サーバー ログ (および stdout) に記録します。
Webインターフェースの設定ファイル(Webインターフェースのファイルがあるディレクトリ内または/etc/zabbix/webディレクトリ内にある conf/zabbix.conf.php
)内で、Zabbixサーバーの アドレス:ポート番号 が 設定されていない ことを確認してください。
ZabbixのWebインターフェースは、Zabbixデータベースのノードテーブルから設定を読み取って、アクティブノードを自動的に検出します。アクティブノードのノードアドレスがZabbixサーバーのアドレスとして使用されます。
HAクラスターノード (サーバー) は、パッシブまたはアクティブモードの Zabbix プロキシの設定ファイルにリスト化されている必要があります。
パッシブプロキシの場合、ノード名をプロキシ設定ファイルの Server パラメータ に カンマ 区切りでリスト化する必要があります。
Server=zabbix-node-01,zabbix-node-02
アクティブプロキシの場合、ノード名をプロキシ設定ファイルの Server パラメータ に セミコロン 区切りでリスト化する必要があります。
Server=zabbix-node-01;zabbix-node-02
HAクラスターのノード(サーバー)は、ZabbixエージェントまたはZabbixエージェント2の設定ファイルに並べて記述することが必要です。
パッシブチェックを行うのならば、ノード名をServerパラメーターに カンマ 区切りで設定する必要があります。
Server=zabbix-node-01,zabbix-node-02
アクティブチェックを行うのならば、ノード名をServerActiveパラメーターに セミコロン 区切りで設定する必要があります。例:
ServerActive=zabbix-node-01;zabbix-node-02
アクティブなノードが停止すると、Zabbix は自動的に別のノードにフェイルオーバーします。 フェイルオーバーが発生するには、少なくとも 1 つのノードがスタンバイ状態である必要があります。
フェイルオーバーはどのくらいの速さで実行されるか。 すべてのノードは5 秒ごとに最終アクセス時刻 (および変更されている場合はステータス) を更新します。 よって: - アクティブ ノードがシャットダウンし、そのステータスが"停止"と報告された場合、別のノードが 5 秒以内に引き継ぎます。
フェイルオーバー遅延は構成可能で、サポートされる範囲は 10 秒から 15 分 (デフォルトでは 1 分) です。 フェイルオーバー遅延の変更は次で実行できます。
zabbix_server -R ha_set_failover_delay=5m
HA クラスターの現在のステータスは、専用の ランタイム コントロール オプションを使用して管理できます。 HA クラスターの現在のステータスは、専用の ランタイム コントロール オプションを使用して管理できます。 The current status of the HA cluster can be managed using the dedicated runtime control options:
ha_status
- Zabbix サーバー ログ (および標準出力) に HA クラスターのステータスを記録します。ha_remove_node=target
- リスト内のノードの番号 (この番号は、ha_status を実行した出力から取得できます)を<target> で指定してHAノードを削除します。 例:zabbix_server -R ha_remove_node=2
アクティブ/スタンバイ ノードは削除できないことに注意してください。
ha_set_failover_delay=delay
- HA フェイルオーバー遅延の設定(10 秒から 15 分まで。タイムサフィックスがサポートされています。例: 10s, 1m)ノードのステータスを監視できます。
ha_status
ランタイム制御オプション(上記を参照)zabbix[クラスター,ディスカバリ,ノード]
の内部アイテムは、高可用性ノード情報を含む JSON を返すため、ノード検出に使用できます。
高可用性クラスターを無効にするには:
高可用性 (HA) クラスターはオプトイン ソリューションであり、Zabbix サーバーでサポートされています。 ネイティブ HA ソリューションは、簡単に使用できるように設計されており、複数のサイトで機能し、Zabbix が認識するデータベースに関する特定の要件はありません。 ユーザーは、環境の高可用性要件に最適なものに応じて、ネイティブの Zabbix HA ソリューションまたはサードパーティの HA ソリューションを自由に使用できます。
このソリューションは複数の zabbix_server インスタンスまたはノードで構成されています。
ノード毎に: - 個別に構成 - 同じデータベースを使用 - いくつかのモードがあります: アクティブ、スタンバイ、使用不可、停止
一度にアクティブ (稼働) できるノードは 1 つだけです。 スタンバイ ノードは、HA マネージャーという 1 つのプロセスのみを実行します。 スタンバイ ノードは、データの収集、処理、またはその他の通常のサーバー アクティビティを行いません。 ポートをリッスンしません。 データベース接続は最小限です。
アクティブ ノードとスタンバイ ノードの両方が、最終アクセス時刻を 5 秒ごとに更新します。 各スタンバイ ノードは、アクティブ ノードの最終アクセス時刻を監視します。 アクティブ ノードの最後のアクセス時間が'failover delay'秒を超えている場合、スタンバイ ノードは自身をアクティブ ノードに切り替え、以前のアクティブ ノードに'使用不可'ステータスを割り当てます。
アクティブ ノードは自身のデータベース接続を監視します。接続がfailover delay-5
秒を超えて失われた場合は、すべての処理を停止してスタンバイ モードに切り替ります。 アクティブ ノードは、スタンバイ ノードのステータスも監視します。スタンバイ ノードの最終アクセス時間が'failover delay'秒を超えている場合、スタンバイ ノードには'unavailable'ステータスが割り当てられます。
ノードは、Zabbix のマイナー バージョン間で互換性があるように設計されています。