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 をクリックします

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