新しいロード バランサをテストする際の一般的な要件は、ロード バランサがロード バランシングを正しく行っていることを検証することです。ラウンドロビン ロード バランシング アルゴリズムは、一般的に単純なテスト ケースとして使用されます。
最も古く信頼性の高いロード バランシング方法であるラウンドロビン ロード バランシング アルゴリズムで、予期せず不均等なトラフィック分布が見られる場合があります。多くの場合、トラフィックのこの不均等な分布は、他の機能との相互運用が原因です。
tcpdump を介した場合などの外部ビューでは、接続が不均等な方法で分散されているため、ラウンド ロビンが正しく動作していないように表示されることがあります。ラウンド ロビンが他の機能と問題なく相互運用することを想定するのは妥当ですが、負荷分散が均等でない場合、次のような理由が考えられます。
不均等なラウンドロビン ロード バランシングの潜在的な原因
- パーシステンス
-
パーシステンスは、ロード バランシングとは逆です。クライアントが接続されると、パーシステンスによって一定期間同じサーバに接続できるようになります。プール内にパーシステンスが構成されていないかどうかを検証します。
- パッシブ健全性モニター
-
このモニターは、クライアントとサーバ間の通信を待機し、送信する応答に応じて、サーバが受信するトラフィックの比率を動的に調整します。そのため、サーバがアクティブ(静的)な健全性モニターを通過し、このサーバが 503(サーバがビジー状態)メッセージを送信する場合、パッシブ モニターはサーバに送信されるトラフィックの量を調整し、想定されるラウンドロビン動作を中断します。
- サーバ比率
-
プールの [サーバ] タブで、すべてのサーバの比率が同じであることを確認します。
- 接続の多重化
-
デフォルトでは、HTTP アプリケーション プロファイル内で接続の多重化が有効になっています。クライアント接続を終了して、次のクライアント用に新しい接続をすぐに開くのではなく、以降も再利用するためにアイドル状態の接続を開いたままにして、トラフィックを高速化しようとします。この再利用により、クライアント接続とサーバ接続の間の相互関係が、明確な 1 対 1 にならなくなります。
- SE 間でのスケーリング
-
NSX Advanced Load Balancer SE は、分散システム モデルに基づいています。これは、さまざまなレベルでラウンドロビンに影響します。まず、キャパシティの増加や高可用性の向上のために、仮想サービスを複数の SE 間でスケールアウトする必要があります。各 SE は、管理されている接続に対してラウンド ロビンを個別に実行します。
- CPU コア間でのスケーリング
-
SE の内部では、CPU コアがディスパッチャとして指定され、NIC からパケットを取得し、それらを(配置されているコアを含む)CPU コアに(パケット ストリーム/接続に基づいて)配布します。各コアのビジー状態を考慮して、負荷の最も低い CPU コアが接続に確実に応答するようにします。
ビジー状態のシステムで、これは、ディスパッチャを持つ CPU コア(通常は vCPU0)が他のコアよりも少ないトラフィックを処理する傾向になることを意味します。SE 内の各 CPU または vCPU は、個別にロード バランシングの決定を行います。したがって、CPU0 と CPU1 の両方がラウンド ロビンを実行します。最初のクライアント接続は CPU0 に送信され、サーバ 1 に接続が送信されます。2 つ目の接続は CPU1 に送信され、こちらでもサーバ 1 に接続が送信される可能性があります。
検証
ロード バランシングの動作が正しいことを検証するには、上記の推奨事項に基づいて構成を変更し(該当する場合)、仮想サービスのログを表示します。重要なログと重要でないログの両方が表示されていることを確認します。重要でないログがキャプチャされない場合は、仮想サービス構成の [分析] ページで有効にする必要があります。
ログを開いて、展開されたビューを表示します。[サービス エンジン] フィールドには、接続で使用される vCPU が表示されます。仮想サービスが複数の SE にまたがってスケーリングされている場合は、SE の IP アドレスをクリックしてログ フィルタに追加します。この CPU によって処理された接続のログをフィルタリングする vCPU 番号をクリックします。
結果のログをダウンロードするには、[ログ] ページの右上隅にある [エクスポート] ボタンをクリックします。結果の CSV ファイルの Server_IP 列には、フィルタリングされた SE CPU からサーバに送信された要求または接続の順序が表示されます。上記の例では、列 AU はラウンドロビン サーバの選択が正しく行われていることを示しています。