ECS FargateとALBを用いて、冗長化&負荷分散された環境を構築します。
ECS Fargateを単体で構築したシンプルな構成は、こちらの記事を参照してください。ECS Fagateの基本的な解説もしています。
ECS FargateとALBの構築手順
必要となるAWSリソースが多岐にわたります。ひとつずつ順番に作成します。
なお今回はあらかじめ用意されているデフォルトのVPCとサブネットを利用します。
セキュリティグループの作成
ALB用セキュリティグループ と ECS用セキュリティグループの2つを作成します。
AWSコンソールにログイン後、 画面上部検索窓 [ EC2 ] で検索 → 当該サービスをクリックし、EC2画面の左ペイン [ セキュリティグループ ] → [ セキュリティグループを作成 ] をクリックします。
ALB用セキュリティグループの作成
外部からのHTTPアクセスを許可します。以下のとおり設定し、画面右下の [ セキュリティグループを作成 ] をクリックします。
アウトバウンドルールはデフォルトで設定されている、すべてのトラフィックを許可のままにしておいてください。
基本的な詳細
| 項目名 | 値 |
|---|---|
| セキュリティグループ名 | demo-sg-for-alb |
| 説明 | わかりやすい説明を(日本語は不可) |
| VPC | default |
インバウンドルール
[ ルールを追加] をクリックし、以下のとおり設定します。
| 項目名 | 値 |
|---|---|
| タイプ | HTTP |
| ソース | マイIP or Anywhere-IPv4 |
ECS用セキュリティグループの作成
ALBからのHTTPアクセスのみ許可します。以下のとおり設定し、画面右下の [ セキュリティグループを作成 ] をクリックします。
アウトバウンドルールはデフォルトで設定されている、すべてのトラフィックを許可のままにしておいてください。
基本的な詳細
| 項目名 | 値 |
|---|---|
| セキュリティグループ名 | demo-sg-for-ecs |
| 説明 | わかりやすい説明を(日本語は不可) |
| VPC | default |
インバウンドルール
[ ルールを追加] をクリックし、以下のとおり設定します。
| 項目名 | 値 |
|---|---|
| タイプ | HTTP |
| ソース | セキュリティグループ demo-sg-for-alb を指定 |
ターゲットグループの作成
ALBに紐付けるサーバ群を定義するため、ターゲットグループを作成します。
EC2画面の左ペイン [ ターゲットグループ ] → [ ターゲットグループの作成 ] をクリックします。以下のとおり入力します。
基本的な設定
| 項目名 | 値 |
|---|---|
| ターゲットタイプの選択 | IPアドレス |
| ターゲットグループ名 | demo-target |
| プロトコル:ポート | HTTP:80 |
| IPアドレスタイプ | IPv4 |
| VPC | defaultのVPCを選択 |
| プロトコルバージョン | HTTP1 |
ヘルスチェック
| 項目名 | 値 |
|---|---|
| ヘルスチェックプロトコル | HTTP |
| ヘルスチェックパス | / |
以上を設定したら、[ 次へ ] をクリックし、次画面でそのまま [ ターゲットグループの作成 ] をクリックします。
ALBの作成
EC2画面の左ペイン [ ロードバランサー ] → [ ロードバランサーの作成 ] をクリックし、次画面で、Application Load Balancer の [ 作成 ] をクリックします。
以下を設定し、画面右下の [ ロードバランサーの作成 ] をクリックします。
基本的な設定
| 項目名 | 値 |
|---|---|
| ロードバランサー名 | demo-alb |
| スキーム | インターネット向け |
| IPアドレスタイプ | IPv4 |
ネットワークマッピング
defaultのVPCを選択し、少なくとも 2 つのAZのサブネットを指定します。
セキュリティグループ
demo-sg-for-alb を選択します。
リスナーとルーティング
| 項目名 | 値 |
|---|---|
| プロトコル | HTTP |
| ポート | 80 |
| デフォルトアクション | demo-target |
ECSの作成
ここからECSの作成を行っていきます。画面上部検索窓 [ ECS ] で検索 → 当該サービスをクリックします。
タスク定義の作成
こちらの記事のタスク定義の作成を参照してください。任意の名前については、以下のとおり設定します。
| 項目名 | 値 |
|---|---|
| タスク定義ファミリー名 | demo-task |
| コンテナ名 | demo-container |
クラスターの作成
ECSトップ画面の左ペイン [ クラスター ] → [ クラスターの作成 ] をクリックし、以下のとおり設定します。設定後、画面右下の [ 作成 ] をクリックします。
| 項目名 | 値 |
|---|---|
| クラスター名 | demo-cluster |
| AWS Fargate (サーバーレス) | チェックを入れる |
サービスの作成
ECS画面の左ペイン [ クラスター ] → 作成したクラスター名 → サービス タブの [ 作成 ] をクリックし、以下のとおりに設定します。明記してないものはデフォルトのままでOKです。
設定後、画面右下の [ 作成 ] をクリックします。
環境
| 項目名 | 値 |
|---|---|
| コンピューティングオプション | 起動タイプ |
| 起動タイプ | FARGATE |
| プラットフォームのバージョン | LATEST |
デプロイ設定
以下のとおりに設定します。明記していないものはデフォルトのままでOKです。
| 項目名 | 値 |
|---|---|
| アプリケーションタイプ | サービス |
| ファミリー | demo-task |
| リビジョン | 特定の数字(最新) |
| サービス名 | demo-service |
| サービスタイプ | レプリカ |
| 必要なタスク | 2 |
ネットワーキング
以下のとおりに設定します。明記していないものはデフォルトのままでOKです。
| 項目名 | 値 |
|---|---|
| VPC | デフォルトのVPC を選択 |
| サブネット | ALBで選択したものと同じサブネットを選択 |
| セキュリティグループ | 既存のセキュリティグループを使用 |
| セキュリティグループ名 | demo-sg-for-ecs |
| パブリックIP | オン |
ロードバランシング
以下のとおりに設定します。明記してないものはデフォルトのままでOKです。
| 項目名 | 値 |
|---|---|
| ロードバランサーの種類 | Application Load Balancer |
| Application Load Balancer | 既存のロードバランサーを使用 |
| ロードバランサー | demo-alb |
| ロードバランス用のコンテナの選択 | demo-container 80:80 |
| リスナー | 既存のリスナーを使用 80:HTTP |
| ターゲットグループ | 既存のターゲットグループを使用 demo-target |
疎通テスト
ALBに設定されているドメインにアクセスします。ALBの詳細からDNS名を確認できます。
$ curl demo-alb-1234567890.ap-northeast-1.elb.amazonaws.com
<html><body><h1>It works!</h1></body></html>
$ブラウザなどでアクセスすると、デフォルトの “It works!” という文字が表示されると思います。
Tips
ECS Execでコンテナ内に入ってデバッグする
ECS Execを使用して、ローカルPCからコンテナの中に入ることができます。以下の記事をご参照ください。
今回は以上です〜ノシ
参考
(`・ω・´)ノ アリガトウゴザイマス!!


