CJです。
VMware Cloud on AWS (以下、VMC on AWS)上で稼働している仮想マシンをロードバランサー (以下、LB)で分散させたいケースがあるかと思います。今日はその際に有効なソリューションとして、AWSの ELBと連携する方法について共有したいと思います。
イメージ図

ELBが Webサーバー2台へ分散しているイメージ。
事前準備
・VMC on AWS上の Webサーバー2台 (CJ-VM01, CJ-VM02)が存在すること。#本記事では特に作成方法などは割愛させていただきます。
・VMC on AWSのSDDC環境が、AWSアカウントと接続されていること。#SDDC作成時に Skipした状態のままの場合はこちらの設定を先に行ってください。
設定の流れ
- VMC on AWS : 接続されている AWS環境情報を確認
- AWS : LBのTarget Groupを作成
- AWS : Security Groupの設定
- AWS : LBの作成
- VMC on AWS : 仮想マシンの Groupを作成
- VMC on AWS : Gateway Firewall の設定
1. VMC on AWS : 接続されている AWS環境情報を確認
以下の通りに、VMC on AWS上で現在接続されている AWSの環境情報を確認してください。
・VPC [ID、Subnet、AZ ]

2. AWS : LBのTarget Groupを作成
VMC on AWSと接続されている環境を管理している AWS マネジメントコンソール画面へアクセスし、LBのターゲットグループ (本例では、Webサーバー2台)を設定してください。
Target group name | CJ-TEST |
Target type | IP |
Protocol | HTTP |
Port | 80 |
VPC | 上記手順1で確認した、VPCを指定 |

その後、作成したらターゲットグループを選択し、以下の通りにターゲット情報を登録してください。
Network | Other private IP address |
Availability Zone (AZ) | all |
IP | 192.168.2.10 (CJ-VM01) 192.168.2.20 (CJ-VM02) |
Port | 80 |

3. AWS : Security Groupの設定
以下の通りに、ここではテストのため HTTP(80 port) のインバウンドアクセスを許可するセキュリティグループを作成してあります。既存のものがあればそちらを使っても大丈夫です。

4. AWS : LBの作成
ELBには、3種類のLB (ALB、NLB、Classic)が存在します。本テストでは、L7で動作する ALBの作成例となります。ご自身の環境に合わせて、最適な LBの種類を選択してください。
Name | VMC-JPN-LB |
Scheme | Internet-facing |
IP address type | ipv4 |
Load Balancer protocol | HTTP |
Load Balancer port | 80 |
VPC | 上記手順1で確認した、VPCを指定 |
Availability Zones (AZ) | ALBの仕様上、LBノードをデプロイするマルチAZを選択する必要があります。 ターゲット(Webサーバー)と同一のAZを含んだ方が最も効果的なのでおすすめです。 |

Step2 : HTTPSなどの設定が入ってないため、警告が出ます。テストのため、今回はこのまま次へ。
Step3 : 手順3で設定した、セキュリティグループを選択して、次へ。
Step4 : 手順2で作成した、ターゲットグループを選択して、次へ。

Step5&6 : 登録したターゲット情報 (Webサーバー)が確認、レビュー後、作成。
以下の通りに、作成された LBの DNS nameをメモ帳などにコピーしてください。
#ALBのため、DNS nameでのアクセスとなります。

5. VMC on AWS : 仮想マシンの Groupを作成
以下の通りに、ターゲットの Webサーバーを VMC on AWS上でグルーピングします。

6. VMC on AWS : Gateway Firewall の設定
以下の通りに、VMC on AWS側の Firewallを行います。VMC on AWS上の Firewall設定においては双方向にそれぞれ設定を行う必要があります。
Name | CJ-VMC |
Source | CJ-VMs (手順5で作成した、仮想マシンの Groupを指定) |
Destination | Connected VPC Prefixes (VMC on AWS上で事前に定義されているため、検索して選択) |
Services | Any (今回はテストのため、Anyにしてあります。) |
Action | Allow |
Applied To | All Uplinks |

動作確認
Web ブラウザを開いて、手順4でメモしておいた ALBの DNS名へアクセスします。そうすると、以下の通りにターゲットの Webサーバーへ順番に割り振りが行われていることが確認できます。

いかがでしょうか。
VMC on AWS の大きなメリットの一つとして、このように AWSの Nativeサービスと連携が可能な点があげられます。数クリックの設定だけで簡単に LBが使えるので、ぜひご自身の環境に合わせてお試しください。
Info
ちなみに、VMC on AWS の標準機能としての LBも、現時点のロードマップに載っており、開発中のようです。VMC on AWS 環境のみで構成を完結したい方には期待の機能ではないでしょうか。

参考情報