VMware NSX Advanced Load Balancer(以降、NSX ALBと表記)の Azure 上への展開手順ご紹介、本記事で第4回目になります。
前回記事では Azure 連携に必要な Cloud 設定について掲載しました。
VMware NSX Advanced Load Balancer on Azure その3 ~Cloud 設定~ - JBS Tech Blog
その他の記事は以下リンク先をご参照ください。
VMware NSX Advanced Load Balancer on Azure その1 ~コントローラの展開~ - JBS Tech Blog
VMware NSX Advanced Load Balancer on Azure その2 ~コントローラクラスタの構成~ - JBS Tech Blog
今回はデータプレーンである Service Engine(以降、SE と表記)の 設定を定義する Service Engine Group(以降、SE Group と表記)についてご紹介します。
冗長やスケーリング、パフォーマンスに適した仮想マシン選択等の負荷分散を提供するうえで土台となる設定を行います。
SE Group とは
SE Group では SE の高可用性モードや Virtual Service の配置とスケーリング、SE として展開する Azure VM サイズ等を定義します。
また、以下の項目について上限値を設定します。
- SE Group ごとの最大 SE 数
- SE ごとの最大 Virtual Service 数
- 1つの Virtual Service を配置可能な最大/最小 SE 数
上記の上限値については、指定する高可用性モードによって設定可能な項目や値の範囲は異なります。
Virtual Service
ここで、Virtual Service(以降、VS と表記)について説明します。
VS 設定ではクライアントからのリクエストを受け付ける仮想 IP アドレス(以降、VIPと表記)とポート番号、各プロファイルや VS を配置する SE Group、負荷分散先となる Pool を指定します。
他社のロードバランサ製品で「Virtual Server」と呼ばれる設定と同じイメージです。
1つの SE/SE Group に複数の VS を配置可能です。
また、複数の SE Group を定義して配置する VS を分けることでデータプレーンを分離して管理できます。
データプレーン分離のユースケースとして、システムの障害影響範囲の分離やネットワーク帯域利用の大きい VS を分離する等が考えられます。
各 SE Group の前段に Azure Load Balancer が自動展開されて、スケールアウトされた VS 宛のトラフィックを分散します。
高可用性モードと VS 配置
SE Group の高可用性モードは以下の3種類があります。
- Legacy HA Active/Standby
- 2台の SE のみ展開されます。スケールアウトはできません。
- VS は 1台の SE に集中配置(Compact)、もしくは2台の SE に分散配置(Distributed)できます。
- 障害発生した SE 上の VS はもう1台の SE にフェイルオーバーします。
- 従来のロードバランサ製品にて利用される高可用性設定をそのまま移行して利用できます。
- Elastic HA Active-Active
- 定義した最大数まで SE を展開可能です
- 1つの VS は2台以上の複数 SE に配置されて、すべて Active として動作するためスケールアウトできます。
- 既設の SE に 可能な限り VS を配置する(Compact)、もしくは上限台数まで新しく SE を展開して VS を分散配置(Distributed)できます。
- 障害発生した SE 上の VS は 新しい SE の展開完了後に配置されます。その間、VS のサービスは 他の SE 上にある VS にて継続されますが、新しい SE が展開されるまでパフォーマンスは縮退状態で動作します。
-
サービス継続が必要なシステムに適しています。
- Elastic HA N+M
- 定義した最大数まで SE を展開可能です。
- 1つの VS は1台以上の SE に配置されます。
- SE Group 全体で M 台の SE 障害を処理可能なように VS を配置できるバッファ容量を確保します。
- 既設の SE に 可能な限り VS を配置する(Compact)、もしくは上限台数まで新しく SE を展開して VS を分散配置(Distributed)できます。
- 障害発生した SE 上の VS は 各 SE の バッファに配置されます。新しい SE が展開される前に VS が配置されるため、パフォーマンスは縮退しませんが VS を配置する SE が決まるまでの間、短時間のサービス断が発生します。
- 短時間のサービス断を許容できるシステムに適しています。
負荷分散対象となるシステムの要件に合った高可用性モードを設定します。
VS 配置については、リソース効率を重視して SE の vCPU ライセンス消費を抑える場合は「集中配置(Compact)」、パフォーマンス重視の場合は「分散配置(Distributed)」に設定します。
Azure VM サイズの選択
展開する SE の CPU/メモリ/ディスクが求められるパフォーマンスを満たすように、Azure VM サイズを選択します。
SE のサイジング目安として、SSL TPS(Transaction per sec)の値が掲載された表を VMware 社のドキュメント*1から引用します。
Azure VM サイズ | SSL TPS パフォーマンス |
---|---|
F1s | 1,900 |
F2s | 3,850 |
F4s | 6,300 |
F8s | 11,000 |
SE Group 設定手順
上記の情報を参考に SE Group を設定します。本記事では設定必須項目と重要項目のみ抜粋して説明します。
コントローラ UI にログインします。
[Infrastructure]-[Cloud Resources]-[Service Engine Group]を選択します。
[Select Cloud:]にて作成済の Azure Cloud を選択します。
[CREATE]ボタンをクリックします。
General
以下の項目を入力します。
- Name : 任意の名前を入力します。
- Enable Real-Time Metrics : メトリックをトラブルシュート用途で一時的にリアルタイムで取得する場合は有効にします。今回は無効のまま進めます。
Placement
- High Availability Mode : 高可用性モードを選択します。今回は [Active/Active] を選択します。
- Number of Service Engines : SE Group で展開できる最大 SE 数を指定します。Active/Standby 構成の場合は[2]で固定されて変更はできません。
- Buffer Service Engines : SE がフェイルオーバーした場合に VS の新たな配置先となるバッファを予め確保する SE 数を指定します。Active/Standby 構成では Standby SE に VS を移設するので[0]で固定されて変更はできません。
- Override Data Network : Cloud 設定で指定した SE のデータ用 NIC サブネットを上書きで指定できます。SE Group ごとにデータ用 NIC サブネットを分けることが可能です。
- Virtual Services per Service Engine : SE ごとの最大 VS 数を指定します。
- Virtual Service Placement Across Service Engines : VS 配置を[Compact]または[Distributed]に設定します。今回のように高可用性モードが Elastic HA Active-Active の場合、デフォルト値は[Distributed]です。
- Scale per Virtual Service
- Minimum : 1つの VS を配置する最小 SE 数を指定します。
- Maximum : 1つの VS を配置する最大 SE 数を指定します。
Resources
- Instance Flavor : Azure VM サイズを指定します。[Select from list]を選択後、プルダウンメニューから選択します。今回は[Standard _F2s]を選択します。
- Service Engine Name Prefix : SE の VM名の先頭につける文字列を指定します。デフォルトは[Avi]です。VM 名は[Avi-se-xxxxx]( xxxxx はランダム5文字のアルファベット)となります。
- Use Hyperthreading : SE でハイパースレッディングを有効にします。デフォルトは有効です。*2
Memory
- Memory for Caching : HTTPキャッシュに利用する共有メモリプールの割合を指定します。
- Available Memory for Connections and Buffers : 接続処理とバッファに利用する共有メモリプールの割合を指定します。
- Connections : 接続処理に利用する共有メモリプールの割合を指定します。この値は SE あたりの同時接続数に影響します。
- Buffers : バッファに利用する共有メモリプールの割合を指定します。クライアント ~ SE 間の通信遅延が大きい場合、SE からクライアントへの応答パケットを徐々に返すようにサーバからの応答パケットをバッファ領域に持たせる設定です。今回は全てデフォルトのまま進めます。
- SE 展開後に上記設定を変更した場合、展開済の SE に設定を反映させるには SE の再起動が必要です。
Security
- HSM Profile : 外部のHSM(証明書やキーを保存するデバイス)を利用する場合はアクセス設定を行います。今回は設定せず進めます。
Logs
- Significant Log Throttle : Significant Log(トランザクションエラーログ)のコアあたり1秒間の保存件数を指定します。
- Non-significant Log Throttle : Non-significant Log(正常なトランザクションログ)のコアあたり1秒間の保存件数を指定します。
SE のディスク I/O や容量に影響する設定のため、値を増やす場合は慎重に行う必要があります。今回はデフォルトのまま進めます。
Tags
タグを付与する場合は[ADD]をクリックして設定します。今回は設定せずに進めます。
[SAVE]をクリックします。
設定確認
コントローラ UI にて、Service Engine Group が追加されました。
Service Engine Group を作成しても Service Engine が展開される訳ではありません。
本構成は Azure と連携しているので SE は自動展開される仕様ですが、負荷分散設定が未実施なのでまだ展開されません。
Pool や Virtual Service を作成して初めて SE は自動展開されて、作成した VS がその上に配置されます。
まとめ
- 3種類の高可用性モードがある。システムの可用性要件に適したモードを選択する
- SE のサイジングはパフォーマンス要件を満たす Azure VM サイズを選択する
- メモリ割当やログ出力件数などパフォーマンスに影響する設定は慎重に行う
次回以降は、負荷分散設定の紹介に入っていきます。Pool 設定と Virtual Service 設定をご紹介する予定です。
*1:Azure VM Sizes for the NSX Advanced Load Balancer Service Engines (vmware.com)
*2:ハイパースレッディングに対応していない Azure VM サイズを選択した場合、この設定に依らず無効となります。ハイパースレッディング対応かどうか Microsoft 社のドキュメントで予めご確認ください。