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

概要

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

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

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

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

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

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

ホストの再分配

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

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

さらに、プロキシのホスト数がグループ平均と比較して少なくとも10ホスト、かつ2倍の差(ホスト超過またはホスト不足)になった場合にも、プロキシの負荷分散がトリガーされます。
この不均衡が猶予期間(10 x failover delay)を過ぎても継続する場合、そのプロキシグループはホスト再分配の対象としてキューに入れられます。

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

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

ホスト再分配の例:

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

プロキシグループによって監視されるホスト数が10未満の場合、グループ内のプロキシ間でホスト分散が不均一になる可能性があります。

プロキシグループの設定

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

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

パラメータ 説明
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 option を使用してください。

Zabbix エージェントは、ファイアウォール経由でプロキシグループ内のすべてのプロキシに接続できる必要もあります。 そうでない場合、アクティブチェックはリダイレクトまたはフェイルオーバー中にハングしたり、失敗したりする可能性があります。例:

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

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

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