Elastic Load Balancing でトラフィックを複数のターゲットに分散する
記事の「実践」を 1 項目ずつ進めるためのページです。AWS マネジメントコンソールで操作したら、右の一覧にチェックを入れてください。チェックはこのブラウザに保存されます。
前提条件
- リージョン:
ap-northeast-1(東京) - 以下のリソースが作成済みであること
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| VPC | elb-lab-vpc | 検証用 VPC(CIDR: 10.0.0.0/16) |
| パブリックサブネット | elb-lab-public-subnet-1a | AZ-a のパブリックサブネット(CIDR: 10.0.1.0/24) |
| パブリックサブネット | elb-lab-public-subnet-1c | AZ-c のパブリックサブネット(CIDR: 10.0.2.0/24) |
| インターネットゲートウェイ | elb-lab-igw | インターネット接続用 |
| EC2 インスタンス | elb-lab-web-1a | AZ-a の Web サーバー |
| EC2 インスタンス | elb-lab-web-1c | AZ-c の Web サーバー |
| セキュリティグループ | elb-lab-web-sg | EC2 用 SG(ポート 80 を許可) |
- 2 台の EC2 インスタンスにはそれぞれ簡易的な Web サーバーが起動しており、HTTP(ポート 80)でレスポンスを返す状態であること
この実践で作成するリソース
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| セキュリティグループ | elb-lab-alb-sg | ALB 用 SG |
| ターゲットグループ | elb-lab-tg | EC2 インスタンスのグループ |
| Application Load Balancer | elb-lab-alb | トラフィック分散用 ALB |
ALB 用セキュリティグループの作成
AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します。
上部の検索バーに EC2 と入力し、表示された「EC2」を選択します。
左側ナビゲーションの「ネットワーク&セキュリティ」→「セキュリティグループ」を選択します。
「セキュリティグループを作成」をクリックします。
以下の情報を入力します。
- セキュリティグループ名:
elb-lab-alb-sg - 説明:
Security group for ALB - VPC:
elb-lab-vpc
「インバウンドルール」セクションで「ルールを追加」をクリックし、以下を入力します。
- タイプ:
HTTP - リソースタイプ:
Anywhere-IPv4(選ぶと、ソース欄に0.0.0.0/0が入ります) - 説明:
Allow HTTP from anywhere
アウトバウンドルールはデフォルト(すべてのトラフィックを許可)のままにします。
「セキュリティグループを作成」をクリックします。
EC2 セキュリティグループのインバウンドルール更新
EC2 インスタンスのセキュリティグループ elb-lab-web-sg に、ALB からのトラフィックを許可するルールを追加します。elb-lab-web-sg には、前提として 0.0.0.0/0 からの HTTP を許可するルールが入っています。
左側ナビゲーションの「ネットワーク&セキュリティ」→「セキュリティグループ」を選択し、elb-lab-web-sg を選択します。
「インバウンドルール」タブを選択し、「インバウンドルールを編集」をクリックします。
「ルールを追加」をクリックし、以下を入力します。
- タイプ:
HTTP - リソースタイプ:
カスタム(デフォルト)のまま、ソース欄にelb-lab-alb-sgと入力し、候補に表示されたelb-lab-alb-sg | sg-…を選択 - 説明:
Allow HTTP from ALB
「ルールを保存」をクリックします。
ターゲットグループの作成
左側ナビゲーションの「ロードバランシング」→「ターゲットグループ」を選択します。
「ターゲットグループの作成」をクリックします。作成は「ターゲットグループの作成」→「ターゲットを登録」→「確認と作成」の 3 ステップです。
「基本的な設定」セクションで以下を設定します。
- ターゲットタイプの選択:
インスタンス - ターゲットグループ名:
elb-lab-tg - プロトコル / ポート:
HTTP/80 - VPC:
elb-lab-vpc - プロトコルバージョン:
HTTP1
「ヘルスチェック」セクションでは以下を確認します。
- ヘルスチェックプロトコル:
HTTP - ヘルスチェックパス:
/
その他の項目はデフォルトのままにします。
「次へ」をクリックします。
「使用可能なインスタンス」の一覧から elb-lab-web-1a と elb-lab-web-1c を選択し、「保留中として以下を含める」をクリックします(インスタンスを選ぶまで、このボタンは押せません)。
「次へ」をクリックし、確認画面で「ターゲットグループの作成」をクリックします。
ALB の作成
左側ナビゲーションの「ロードバランシング」→「ロードバランサー」を選択します。
「ロードバランサーの作成」をクリックします。
「Application Load Balancer」の「作成」をクリックします。
「基本的な設定」セクションで以下を設定します。
- ロードバランサー名:
elb-lab-alb - スキーム:
インターネット向け - IP アドレスタイプ:
IPv4
「ネットワークマッピング」セクションで以下を設定します。
- VPC:
elb-lab-vpc - マッピング:
ap-northeast-1a(elb-lab-public-subnet-1a)とap-northeast-1c(elb-lab-public-subnet-1c)を選択
「セキュリティグループ」セクションで以下を設定します。
- 最初から選択されている
defaultのセキュリティグループを削除し、elb-lab-alb-sgを選択
「リスナーとルーティング」セクションで以下を設定します。
- プロトコル:
HTTP - ポート:
80 - デフォルトアクション:
elb-lab-tgを選択
その他の項目はデフォルトのままにします。
画面最下部の「ロードバランサーの作成」をクリックします。
作成が完了すると、ロードバランサーの詳細画面に遷移し、成功のメッセージが表示されます。ステータスが「プロビジョニング中」から「アクティブ」に変わるまで待ちます(今回は 2 分ほどでした)。
動作確認
ロードバランサーの詳細画面で「DNS 名」をコピーします。
ブラウザで ALB の DNS 名にアクセスします。
http://<ALB の DNS 名>
Web サーバーからのレスポンスが表示されることを確認します。ページをリロードすると、異なるインスタンスからレスポンスが返される(トラフィックが分散されている)ことが確認できます。
ターゲットのヘルスステータス確認
左側ナビゲーションの「ロードバランシング」→「ターゲットグループ」を選択し、elb-lab-tg を選択します。
「ターゲット」タブを選択し、登録された 2 台のインスタンスのヘルスステータスが「Healthy」であることを確認します。