VMware NSX Advanced Load Balancer on Azure その5 ~Pool/VIP/Virtual Service 設定~

VMware NSX Advanced Load Balancer(以降、NSX ALBと表記)の Azure 上への展開手順ご紹介、本記事で第5回目になります。

前回記事では データプレーンである Service Engine(以降、SEと表記) の設定を定義する Service Engine Group(以降、SE Groupと表記) について掲載しました。

VMware NSX Advanced Load Balancer on Azure その4 ~Service Engine Group 設定~ - JBS Tech Blog

その他の記事は以下リンク先をご参照ください。

今回はサーバ負荷分散設定(Pool/VIP/Virtual Service)についてご紹介します。

サーバ負荷分散コンポーネント

NSX ALB では以下のコンポーネントを構成して、サーバ負荷分散を実装します。

Pool

クライアントからの接続が負荷分散されて到達するサーバ群を定義します。

サーバが接続を待ち受けるポート番号、負荷分散アルゴリズム、パーシステンス設定など負荷分散動作に関する設定を行います。

VIP(仮想 IP アドレス)

クライアントが接続するIPアドレスを定義します。

Azure Cloud では、プライベート VIP とパブリック VIP を設定可能です。

プライベート IP でアクセス可能な場合、プライベート VIP を設定します。

インターネットからアクセス可能にするにはパブリック VIP を設定します。

設定された VIP は SE の前段に自動展開される Azure Load Balancer(以降、Azure LBと表記)に配置されます。

Virtual Service

クライアントが接続する仮想サービスを定義します。以降、VS と表記します。

接続を待ち受けるポート番号、VIP/Pool/SE Groupの選択、VSが動作するレイヤー(L4/L7)の選択などを設定します。

以下、各コンポーネントを図示した構成図です。

通信フロー

パブリック VIP 宛の通信フローは[クライアント]→[External Azure LB 上のパブリック VIP]→[Service Engine]→[サーバ]となります。

戻りの通信は Azure LB を経由せず、SE から直接クライアントへ返されます。

プライベート VIP 宛の通信フローは[クライアント]→[Private Azure LB 上のプライベート VIP]→[Service Engine]→[サーバ]となります。

戻りの通信は Azure LB を経由せず、SE から直接クライアントへ返されます。

設定手順

本記事では HTTP トラフィックの負荷分散において、設定必須項目と重要項目のみ抜粋して説明します。*1

Pool 設定手順

コントローラ UI にログインします。[Applications]-[Pools]を選択します。[CREATE]ボタンをクリックします。 以下の項目を入力します。

  • Name : 任意の名前を入力します。

[SET CLOUD & VRF]ボタンをクリックします。

  • Cloud : 作成済の Azure Cloud を選択します。
  • VRF Context : [global] を選択します。

[SET]ボタンをクリックします。

  • Default Server Port : サーバに送信されるトラフィックの宛先ポート番号を入力します。
  • Load Balance Algorithm : 負荷分散アルゴリズムを指定します。今回はサーバに対して順番に分散するように[Round Robin]を選択します。

  • Select Servers By : 負荷分散先サーバの指定方法を選択します。IPアドレス/DNS名で指定する場合は[IP Address, Range or DNS Name]を選択します。下の入力欄にサーバのIPアドレスまたはDNS名を入力して[ADD]ボタンをクリックします。すべてのサーバを定義するまで操作を繰り返します。

  • Health Monitor : サーバが Up 状態とみなす判断方法を指定します。デフォルトで設定済の Health Monitor を選択、またはカスタムで Health Monitor を作成して指定します。例えば、HTTP のレスポンスコードによって Up 状態を判断する場合は[ADD]ボタンをクリックして[System-HTTP]を選択します。

  • Persistence Profile : パーシステンスを有効にする場合、Persistence Profile を選択します。デフォルトで設定済のプロファイルとして、クライアント IP をもとにパーシステンスを行う[System-Persistence-Client-IP]や HTTP Cookie をもとにパーシステンスを行う[System-Persistence-HTTP-Cookie]等を選択できます。カスタムで作成したプロファイルの指定も可能です。今回はパーシステンスは行わないため選択せず進めます。

  • SSL Profile : トラフィックをサーバへ送信する際に SSL で暗号化を行う場合は SSL Profile を選択します。

  • Fail Action : Pool 上のサーバがすべて Down してる場合にクライアントへの応答方法を定義します。デフォルトは TCP 接続をクローズする[Close Connection]です。[HTTP Redirect]を選択すると、予め用意したホストにリダイレクトできます。

[SAVE]ボタンをクリックします。

以上で Pool 設定は完了です。

VIP 設定手順

[Applications]-[VS VIP]を選択します。 [CREATE]ボタンをクリックします。

以下の項目を入力します。

  • Name : 任意の名前を入力します。

[SET CLOUD & VRF]ボタンをクリックします。

  • Cloud : 作成済の Azure Cloud を選択します。
  • VRF Context : [global] を選択します。

[SET]ボタンをクリックします。

[VIPs]の[ADD]ボタンをクリックします。

以下の項目を選択します。

  • [Private IP]にて[Auto-Allocate]を選択します。
  • VIP Address Allocation Network : VIP を払い出す Azure ネットワークを選択します。
  • IPv4 Subnet : VIP を払い出すサブネットを選択します。

[Public IP]の VIP を割り当てる場合は以下の項目を入力します。

  • [Public IP]にて[Auto-Allocate]を選択します。

[SAVE]ボタンをクリックします。

[SAVE]ボタンをクリックします。

以上で VIP 設定は完了です。

Virtual Service 設定手順

[Applications]-[Virtual Services]-[CREATE VIRTUAL SERVICE]-[Advanced Setup]を選択します。

[Select Cloud]にて、作成済の Azure Cloud を選択して[NEXT]ボタンをクリックします。

以下の項目を入力します。

  • Name : 任意の名前を入力します。
  • VS VIP : 作成済の VIP を選択します。
  • TCP/UDP Profile : デフォルトプロファイルの[System-TCP-Proxy]を選択します。
  • Application Profile : HTTP(L7)負荷分散の場合は[System-HTTP]を選択します。L4負荷分散の場合は[System-L4-Application]を選択します。
  • Service Port : クライアントの接続を待ち受けるポート番号を入力します。
  • Pool : 作成済の Pool を選択します。

[NEXT]ボタンをクリックします。

[Policies]画面では指定したヘッダに一致した場合のアクション定義や Data Script の設定等を行います。今回はそのまま[NEXT]ボタンをクリックします。

[Analytics]画面では、[Log all headers]を有効にすると全てのヘッダをログに含めることができます。正常なトラフィックログ(Non-significant ログ)を取得する設定も可能です。今回は[Log all headers]を有効にして[NEXT]ボタンをクリックします。

[Advanced]画面にて、以下の項目を入力します。

  • Service Engine Group : 作成済の SE Group を選択します。

[SAVE]ボタンをクリックします。

以上でVirtual Service 設定は完了です。

状態確認

Service Engine

SE が2台自動展開されました。SE Group の高可用性モードを[Active/Active] に設定している場合、最小台数である2台展開されます。展開にかかる所要時間は2台合わせて約10分でした。

Azure Portal 上では Azure 仮想マシンとして存在していました。

Azure LB

SE の前段として Azure LB も2台自動展開されてました。

フロントエンド IP にパブリック VIP が割り当てられた Azure LB とプライベート VIP が割り当てられた Azure LB がそれぞれ展開されました。

バックエンドプールには Service Engine の Data インタフェース IP アドレスが割り当てられてました。SE は Active/Active 構成のため、2台の SEがトラフィック処理できるように Azure LB にて各 SE 宛にトラフィックが振り分けられます。

Virtual Service

Health Score が緑色で正常な状態でした。

疎通確認

クライアントのWebブラウザにて、HTTP で VIP にアクセスします。ブラウザにてリロードを繰り返します。Web01とWeb02のページが交互に表示されました。

Round Robin で負荷分散されました。Virtual Service の画面でサーバごとのログカウント数が表示されています。同じカウント数で均等に分散されていました。

まとめ

  • NSX ALB のサーバ負荷分散設定は、以下のコンポーネントを構成します
    • Pool
    • VIP
    • Virtual Service
  • Pool と VIP を作成後、Virtual Service 設定にて作成済の Pool、VIP、SE Groupや各種プロファイルを選択します
  • 設定完了後に SE と Azure LB が自動展開されます

マルチクラウドへの負荷分散環境展開において、NSX ALB は大きな力を発揮する製品と考えております。

Azure 上へ展開する際には本記事を参考にして頂ければと思います。

*1:前回までの記事と同様の検証環境を用いています

執筆担当者プロフィール
菅原 丈晴

菅原 丈晴(日本ビジネスシステムズ株式会社)

ネットワーク機器の設計/構築エンジニア。最近は仮想基盤・クラウドを触っています。

担当記事一覧