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からコンテナの中に入ることができます。以下の記事をご参照ください。
今回は以上です〜ノシ
参考
(`・ω・´)ノ アリガトウゴザイマス!!