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

概要

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

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

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

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

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

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

ホストの再分配

プロキシの負荷分散と高可用性は、プロキシグループマネージャによってZabbixサーバーが管理します。これは、各プロキシグループ内のすべてのプロキシの状態とホストの分配を継続的に監視します。

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

さらに、プロキシのホスト数がグループの平均値から少なくとも10台かつ2倍以上(ホスト過剰またはホスト不足)異なる場合にも、プロキシの負荷分散がトリガーされます。 猶予期間(10 x フェイルオーバー遅延)後も不均衡が続く場合、プロキシグループはホストの再分配のためにキューに入れられます。

プロキシグループマネージャは、次のロジックでホストを再分配します。

  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 パラメータに単一のプロキシのみを指定すると、指定したプロキシがオフラインの状態でエージェントが起動または再起動された場合に、監視データが失われる可能性があります。

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

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

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

プロキシの負荷分散をテストするには:

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