クラウド時代が到来し、ますます広がりを見せつつあるコンテナ技術。第2回は、AWS ECS上でSpringアプリケーションを構築する方法を説明します。本稿は以下のステップに沿って、解説しています。
前回の記事「 【第4回】ECSコンテナAP開発(1)VPC構築 」では、以下イメージの構成に沿って、VPC環境を構築しました。今回は「2.アプリケーションロードバランサ(ALB)の作成」です。
VPCの環境では、パブリックとプライベートにサブネットを分割しました。プライベートサブネットのECSコンテナへは、基本VPC内以外からのアクセスは受け付けないよう、ロードバランサーにもセキュリティグループを設定しておく必要があり、 一方、パブリックサブネットのECSコンテナはインターネットからの接続を受け付けるようにするため、ロードバランサーもパブリック用とプライベート用2種類作成します。
注釈
AWSでロードバランサーはElastic Load Balancer(ELB)というサービス名で提供されてます。ELBにはいくつか種類があり、代表的なものはアプリケーションロードバランサー(ALB)です。ALBの代表的な機能としては、パケットの内容に応じたコンテントベースのルーティングで、レイヤー7(L7)スイッチが備える機能をもちます。ALBが提供される以前のロードバランシングサービスは「Classic Load Balancer(CLB)」という名称に変更されました。 ELBは、新しいALBと従来のCLB、後述するNLBを合わせたロードバランシングサービスの総称として表現されます。ALBの特徴は以下の通りです。
[ALBの特徴]
ALB、ELBはリバースプロキシ型の負荷分散サービスを提供する一方、もっとも最新のNLBはL4 NATロードバランサです。
[NLBの特徴]
各ロードバランシングサービスの比較は Elastic Load Balancing 製品の詳細 に詳細がまとめられていますので、適宜参考にしてください。
次回(3)でも後述しますが、パブリックサブネットのBFFアプリケーションでは、バックエンドのコンテナアプリケーションを呼び出す際に、ロードバランサーを経由するHTTPリクエストを送信します。この時、ロードバランサーでは、ALBのパスベースルーティング機能を使ってコンテナアプリケーションを識別しますので、ロードバランサーにはALBを指定しておいてください。
「EC2」サービスから、「ロードバランサー」メニューを選択し、「ロードバランサーの作成」を押下します。ALBを選択し、「作成」ボタンを押下します。
以下の要領に従って、ALBを設定します。「セキュリティ設定の構成」ボタンを押下後、そのまま「セキュリティグループの設定」ボタンを押下し、先に進んでください。
入力項目 | 説明 |
名前 | ALBに設定する任意の名前を入力します。 |
スキーム | ALBが使用されるサブネットに従って、設定します。パブリックサブネットはインターネット向け、プライベートサブネットは内部向けを設定してください。 |
アドレスタイプ | ロードバランサーで取り扱うIPアドレスタイプを設定します。ここではIPv4を設定してください。 |
リスナー:ロードバランサーのプロトコル・ポート | HTTPかHTTPSかを指定します。本番環境などはHTTPSを指定しますが、今回はHTTP:80を設定しておきます。 |
アベイラビリティゾーン:VPC | 前回作成したVPCを指定します。 |
アベイラビリティゾーン:アベイラビリティゾーンおよびサブネット | ロードバランシングするアベイラビリティゾーンおよびそのサブネットを指定します。上記のスキームに合わせて設定してください。 |
ロードバランサーのセキュリティグループを作成します。後々、作成するECSクラスタのセキュリティグループの発信元ソースに、このロードバランサーのセキュリティグループを許可対象として設定することになるので、ここでは今回ユニークに割り当てるセキュリティグループを新規作成してください。
注釈
プライベートサブネットのロードバランサー設定では、以下の通り、VPC内からのアクセスしか許可しないよう、セキュリティグループを設定しておきます。
コンテナを実行するECSクラスタ向けのターゲットグループを指定します。ちなみに複数の違う種類のコンテナを配置する場合は、各コンテナアプリケーションごとにターゲットグループを指定されることになります。
[ターゲットグループ]
[ヘルスチェック]
注釈
ヘルスチェックするアプリケーションのURLがhttp://localhost:8080/backend-for-frontend/index.htmlであれば、パス名はアプリケーションコンテキストパス以下となる/backend-for-frontend/index.htmlを指定します。
ターゲットグループにはECSサービスの作成で改めて登録するので、ここでは特に何もターゲットの登録をせずALBを作成してください。
作成したロードバランサーにパスベースのルーティングをターゲットグループに対して設定します。「EC2」サービスから「ロードバランサー」メニューを選択し、作成した2つのパブリック・プライベート用のロードバランサーを各々選択し、「リスナー」タブから「ルールの表示/編集」リンクを押下します。
画面上部のプラスボタンを押下し、ルールを追加します。各ターゲットグループにどのパスで、どのターゲットグループへルーティングするかを設定します。条件を設定した後、「保存」ボタンを押して、パスベースのルーティングのルールを保存してください。
注釈
パスとして指定する値は、アプリケーションのコンテキストルートに相当するだけを設定しておくと、次回(3)で作成するSpringアプリケーションで柔軟なサービス呼び出しができます。
以上で、ALBの設定は終了です。次回はECSコンテナで実行するSpringアプリケーションについて実装方法を解説します。