プロキシの負荷分散と高可用性

概要

Zabbix プロキシは、プロキシグループにまとめることで、プロキシの負荷分散と高可用性を実現できます。

プロキシの負荷分散と高可用性とは、プロキシグループ内でホストをプロキシ間に自動的に再配置することです。

  • プロキシがオフラインになると、そのホストは他のプロキシへ移動され、高いプロキシ可用性が維持されます。
  • あるプロキシのホスト数が他のプロキシより大幅に多い、または少ない場合、そのホストは他のプロキシへ移動され、プロキシの負荷が均等化されます。

ホストの再配置は、次の条件を満たすグループ内のプロキシ間でのみ機能します。

  • プロキシが Zabbix 7.0 以降で動作していること。
  • プロキシのバージョン が Zabbix サーバーのバージョンと一致していること。Zabbix エージェント(パッシブ)を使用している場合は、プロキシのバージョンがエージェントのバージョンと一致している必要があります。アクティブエージェントでは、Zabbix 7.0 以降であることのみが必要です。
  • プロキシグループが オンライン状態 であること。
  • ホストが個別のプロキシではなく、プロキシグループによって 監視対象として設定 されていること。

プロキシグループの健全性は、プロキシグループに割り当てられた任意のホストから 内部チェック で監視できます。 ただし、グループ内の単一のプロキシの健全性を監視するには、そのプロキシにホストを割り当ててください。そうしないと、結果が一貫しない場合があります。

ホストの再分配

プロキシの負荷分散と高可用性は、Zabbix サーバーによって proxy group manager を通じて管理されます。proxy group manager は、各プロキシグループ内のすべてのプロキシの状態と、そのホスト分散を継続的に監視します。

グループ内のプロキシの高可用性は、プロキシのフェイルオーバーによって確保されます。プロキシがオフラインになると、そのホストは直ちに他のプロキシへ再分配されます。ホストは、割り当て済みホスト数が最も少ないプロキシへ再割り当てされるため、プロキシの負荷分散も行われます。

さらに、プロキシのホスト数がグループ平均から少なくとも 10 ホスト、かつ 2 倍の差(ホスト過剰またはホスト不足)がある場合にも、プロキシの負荷分散がトリガーされます。猶予期間(10 x failover delay)の後も不均衡が続く場合、プロキシグループはホスト再分配のキューに入れられます。

proxy group manager は、次のロジックでホストを再分配します。

  1. プロキシごとの平均ホスト数を計算します。
  2. ホスト過剰のプロキシについては、余分なホストを未割り当てのプロキシプールへ移動します。
  3. ホスト不足のプロキシについては、バランスを取るために必要なホスト数を計算します。
  4. 最も多くのホストを持つプロキシから、必要な数のホストを削除します。
  5. 未割り当てのホストを、最も少ないホスト数のプロキシへ移動します。

ホスト再分配の例:

プロキシ上のホスト数 グループ平均 ホストの再割り当て
100 50 Yes
60 50 No
40 50 No
25 50 Yes
15 5 Yes
10 5 No

監視対象 のホスト数が 10 未満のプロキシグループでは、グループ内のプロキシ間でホスト分散が不均一になる可能性があります。

プロキシグループの設定

Zabbix Webインターフェースでプロキシグループを設定するには、次の手順を実行します。

  1. Administration > Proxy groups に移動します
  2. Create proxy group をクリックします

Parameter Description
Name プロキシグループの名前。
Failover period プロキシグループ内のプロキシがオンラインと見なされるために Zabbix サーバーと通信しなければならない秒数。 (デフォルト: 1m; 範囲: 10s-15m)。この期間内にプロキシが通信しない場合、プロキシの状態は Offline に変更され、そのホストは直ちに他のプロキシへ再割り当てされます。プロキシの負荷分散は、この期間の 10 倍経過後に開始されます。
時間サフィックス(例: 30s、1m)およびユーザーマクロをサポートします。
Minimum number of proxies オンラインのプロキシプロキシグループをオンライン に保つために必要な最小数です (デフォルト: 1; 範囲: 1-1000)。
ユーザーマクロをサポートします。

この値は、グループ内のプロキシ総数より小さくする必要があります。たとえば、10 台のプロキシがあるグループで最小数を 10 に設定すると、いずれか 1 台のプロキシが停止しただけでグループはオフラインになります。オフラインのグループ内にあるオンラインのプロキシは通常どおり動作し続けますが、負荷分散/高可用性は行われません。
Description プロキシグループの説明。
Proxies プロキシを編集する際に、最大 5 台のプロキシの一覧を表示します(プロキシに対するユーザー権限に応じて、リンクまたはプレーンテキストで表示されます)。

プロキシ負荷分散の設定

プロキシ負荷分散を使用するには、Zabbix Webインターフェースでプロキシグループを設定し(上記参照)、ホストが個別のプロキシではなくプロキシグループによって監視されるようにする必要があります(ホストをプロキシからプロキシグループへ移動するには、ホストの一括更新を使用できます)。

Zabbix エージェントを使用する場合は、次のようにも設定します。

  • パッシブチェックでは、Server パラメーターにプロキシグループ内のすべてのプロキシを列挙します。
  • アクティブチェックでは、ServerActive パラメーターにプロキシグループ内のすべてのプロキシ、または Zabbix サーバーを列挙することを推奨します。 プロキシグループをアクティブモードで使用できるのは、Zabbix エージェント 7.0(以降)のみです。

ServerActive パラメーターにプロキシグループ内の 1 つのプロキシ(または Zabbix サーバー)だけが含まれている場合でも、エージェントは正しいプロキシに接続できます。 エージェントサービスが起動して指定されたプロキシに接続すると、エージェントはプロキシ IP の完全な一覧と、グループ内での現在の負荷を受け取り、キャッシュします。 その後、アクティブチェックは、プロキシグループ内の現在のプロキシ-ホスト割り当てに基づいて、ホストに対して正しいオンラインのプロキシへ転送されます。

Zabbix エージェントの ServerActive パラメーターに 1 つのプロキシだけを指定すると、指定したプロキシがオフラインの状態でエージェントが起動または再起動された場合に、監視データが失われる可能性があります。

Zabbix sender を使用する場合も、データ要求はプロキシグループ内の現在のプロキシ-ホスト割り当てに基づいて、ホストに対して正しいオンラインのプロキシへ転送されます。 ただし、入力ファイルから複数ホストの値を送信する場合は、誤ったプロキシにデータが送信されないように、-g オプションを使用してください。

Zabbix エージェントは、ファイアウォール経由でプロキシグループ内のすべてのプロキシにも接続できる必要があります。 そうでない場合、アクティブチェックは転送やフェイルオーバー中に停止したり、失敗したりする可能性があります。たとえば、次のようなケースです。

  • アクティブチェック中に、プロキシがエージェントを別のプロキシへ転送することがあります。そのプロキシがファイアウォールでブロックされていると、応答を待つ間に通信が停止します。
  • 最近の再バランスが行われていない安定した高可用性構成では、エージェントがバックアッププロキシに接続しないままになることがあります。ファイアウォールルールが変更されていて検証されていない場合、フェイルオーバーが失敗する可能性があります。
プロキシ負荷分散のテスト

プロキシ負荷分散をテストするには、次の手順を実行します。

  1. プロキシグループを設定します。
  2. プロキシグループが オンライン状態 であることを確認します。
  3. ホストが個別のプロキシではなく、プロキシグループによって 監視されている ことを確認します(ホストをプロキシからプロキシグループへ移動するには、ホストの 一括更新 を使用できます)。
  4. 設定の更新と、プロキシグループ内のプロキシ間でのホストの分散が反映されるまで数秒待ちます。管理 > プロキシ でホスト一覧を更新し、変更を確認します。
重要な注意事項
  • SNMPトラップ は、プロキシグループ内のプロキシではサポートされていません。
  • 外部設定に依存するチェック(例: 外部チェック 用のスクリプトや、データベースチェック 用の ODBC 設定)は、プロキシグループ内のすべてのプロキシで同じ設定にする必要があります。
  • データベースチェック には、データベースオブジェクト/サーバーに対する拡張権限が必要です。
  • プロキシグループによって 監視される VMware ホストは、グループ内のプロキシ間でランダムに分散されます。そのため、各プロキシがすべての VMware データをキャッシュすることになり、vCenter に追加の負荷がかかります。
  • プロキシグループ内のプロキシからの自動登録データに基づいて作成されたホストは、そのプロキシグループによって 監視される ように設定されます。ただし、プロキシグループ内のプロキシからのネットワークディスカバリデータに基づいて作成されたホストは、そのプロキシによって 監視される ように設定されます。