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. 管理 > プロキシグループ に移動します。
  2. プロキシグループの作成 をクリックします。

パラメータ 説明
名前 プロキシグループの名前。
フェイルオーバー期間 プロキシグループ内のプロキシがオンラインとみなされるために、Zabbixサーバーと通信する必要がある期間(秒単位)(デフォルト: 1m、範囲: 10s-15m)。この期間内にプロキシが通信しない場合、プロキシの状態はオフラインに変更され、そのホストは直ちに他のプロキシに再分配されます。プロキシの負荷分散は、この期間の10倍が経過した後に開始されます。
時間のサフィックス(例: 30s、1m)およびユーザーマクロをサポートします。
プロキシの最小数 プロキシグループをオンラインに維持するために必要なオンラインプロキシの最小数(デフォルト: 1、範囲: 1-1000)。
ユーザーマクロをサポートします。

この値は、グループ内のプロキシの総数より少なくする必要があります。たとえば、10台のプロキシで構成されるグループで最小数を10に設定すると、いずれかのプロキシに障害が発生した場合にグループがオフラインになります。オフラインのグループ内にあるオンラインプロキシは通常どおり機能し続けますが、負荷分散や高可用性は機能しません。
説明 プロキシグループの説明。
プロキシ プロキシを含むグループを編集する際に、最大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の負荷が増加します。
  • プロキシグループ内のプロキシからの自動登録データに基づいて作成されたホストは、そのプロキシグループによって監視されるように設定されます。 ただし、プロキシグループ内のプロキシからのネットワーク検出データに基づいて作成されたホストは、そのプロキシによって監視されるように設定されます。