AWS ECS上に構築するSpringアプリケーション(2)

【連載】

AWSで作るクラウドネイティブアプリケーションの基本

【第5回】AWS ECS上に構築するSpringアプリケーション(2)

[2019/04/10 08:00]川畑 光平 ブックマーク ブックマーク

開発ソフトウェア

前回は、以下の構成イメージに沿って、VPC環境の構築手順について説明しました。

開発するアプリケーションの構成イメージ

続く今回は、アプリケーションロードバランサ(ALB)を作成していきます。

ALBの作成

前回構築したVPCの環境では、パブリックとプライベートにサブネットを分割しました。プライベートサブネットのECSコンテナへは、基本VPC内以外からのアクセスは受け付けないよう、ロードバランサにもセキュリティグループを設定しておく必要があります。一方、パブリックサブネットのECSコンテナはインターネットからの接続を受け付けるようにするため、ロードバランサもパブリック用とプライベート用の2種類作成します。

AWSのロードバランサについて

AWSにおいて、ロードバランサは「Elastic Load Balancer(ELB)」というサービス名で提供されてます。ELBにはいくつか種類がありますが、代表的なものがALBです。

ALBの代表的な機能としては、パケットの内容に応じたコンテントベースのルーティングで、レイヤー7(L7)スイッチが備える機能に相当します。ALBが提供される以前のロードバランシングサービスは「Classic Load Balancer(CLB)」という名称に変更されました。

ELBは、新しいALBと従来のCLB、後述するNLB(Network Load Balancer)を合わせたロードバランシングサービスの総称として使われます。ALBの特徴は以下の通りです。

  • パスベースルーティング
  • コンテナ化されたアプリケーションのサポート
  • HTTP/2サポート
  • WebSocketサポート
  • StickySessionの強化
  • ヘルスチェックの強化
  • インスタンスのヘルスチェックは従来通りHTTP/HTTPSでpingを実行
  • レスポンスコードの指定(200~299複数)
  • CloudWatchのメトリクス強化(ターゲットグループ単位)

ALB、ELBはリバースプロキシ型の負荷分散サービスを提供します。一方、最も新しいELBであるNLBが「L4 NATロードバランサ」です。NLBの特徴は以下の通りです。

  • 固定IPアドレス
  • Pre-warming申請不要
  • ゾーナリティ
  • Source Address Preservation
  • フェイルオーバーに対応

各ロードバランシングサービスの比較は「Elastic Load Balancing製品の詳細」に詳細にまとめられていますので、適宜参考にしてください。


次回も解説しますが、パブリックサブネットのBFF(Backends for Frontends)アプリケーションでは、バックエンドのコンテナアプリケーションを呼び出す際に、ロードバランサを経由するHTTPリクエストを送信します。この時、ロードバランサでは、ALBのパスベースルーティング機能を使ってコンテナアプリケーションを識別するので、ロードバランサにはALBを指定しておいてください。

「EC2」サービスから、「ロードバランサ」メニューを選択し、「ロードバランサの作成」を押下します。ALBを選択し、「作成」ボタンを押下します。

「ロードバランサの種類の選択」画面

ALBの設定

続いて、ALBの設定を行います。設定項目は以下の通りです。

入力項目 説明
名前 ALBに設定する任意の名前を入力します
スキーム ALBが使用されるサブネットに従って、設定します。パブリックサブネットはインターネット向け、プライベートサブネットは内部向けを設定してください
アドレスタイプ ロードバランサで取り扱うIPアドレスタイプを設定します。ここではIPv4を設定してください
リスナー:ロードバランサのプロトコル・ポート HTTPかHTTPSかを指定します。本番環境などはHTTPSを指定しますが、今回はHTTP:80を設定しておきます
アベイラビリティゾーン:VPC 前回作成したVPCを指定します
アベイラビリティゾーン:アベイラビリティゾーンおよびサブネット ロードバランシングするアベイラビリティゾーンおよびそのサブネットを指定します。上記のスキームに合わせて設定してください

「ロードバランサーの設定」画面

入力が終わったら、「セキュリティ設定の構成」ボタンを押下後、そのまま「セキュリティグループの設定」ボタンを押下し、先に進んでください。

ロードバランサのセキュリティグループを作成する

次に、ロードバランサのセキュリティグループを作成します。後々、作成するECSクラスタのセキュリティグループの発信元ソースに、このロードバランサのセキュリティグループを許可対象として設定することになるので、ここでは今回、ユニークに割り当てるセキュリティグループを新規作成してください。設定項目は以下の通りです。

  • セキュリティグループの割り当て:新しいセキュリティグループを作成する
  • セキュリティグループ名:任意のセキュリティグループ名を入力
  • タイプ:HTTP
  • プロトコル:TCP
  • ポート範囲:80
  • ソース:0.0.0.0/0

「セキュリティグループの設定」画面

プライベートサブネットのロードバランサ設定

プライベートサブネットのロードバランサ設定では、以下の通り、VPC内からのアクセスしか許可しないよう、セキュリティグループを設定しておきます。

  • タイプ:HTTP
  • プロトコル:TCP
  • ポート範囲:80
  • ソース:172.0.0.0/16

プライベートサブネットのロードバランサ設定

ルーティングの設定

ルーティングの設定画面では、コンテナを実行するECSクラスタ向けのターゲットグループを指定します。ちなみに、複数の違う種類のコンテナを配置する場合は、各コンテナアプリケーションごとにターゲットグループを指定することになります。

【ターゲットグループ】

  • ターゲットグループ:新しいターゲットグループ
  • 名前:任意のターゲットグループ名(32文字以内)
  • ターゲットの種類:ECSクラスタとなるインスタンスを指定するため、インスタンスを指定してください
  • プロトコル:HTTP
  • ポート:80

【ヘルスチェック】

  • プロトコル:HTTP
  • パス:アプリケーションを実行した時に正常応答する場合のパスを指定してください

なお、ヘルスチェックするアプリケーションのURLが「http://localhost:8080/backend-for-frontend/index.html」であれば、パス名はアプリケーションコンテキストパス以下の「/backend-for-frontend/index.html」を指定します。

「ルーティングの設定」画面

ターゲットグループの登録

ターゲットグループにはECSサービスの作成で改めて登録するので、ここでは特に何もターゲットの登録をせずALBを作成してください。

「ターゲットの登録」画面。ここでは特に何も設定しない

パスベースのルーティング設定

作成したロードバランサでターゲットグループに対し、パスベースのルーティングを設定します。「EC2」サービスから「ロードバランサー」メニューを選択して、作成した2つのパブリック/プライベート用のロードバランサを各々選択し、「リスナー」タブから「ルールの表示/編集」リンクを押下します。

ターゲットグループにルーティングを設定

画面上部の「+」ボタンを押下し、ルールを追加します。各ターゲットグループに対し、どのパスで、どのターゲットグループへルーティングするかを設定します。条件を設定した後、「保存」ボタンを押して、パスベースのルーティングのルールを保存してください。

パスとして指定する値は、アプリケーションのコンテキストルートだけを設定しておくと、次回作成するSpringアプリケーションで柔軟なサービス呼び出しが可能となる    

以上で、ALBの作成は終了です。次回はECSコンテナで実行するSpringアプリケーションについて実装方法を解説します。

著者紹介


川畑 光平(KAWABATA Kohei)

某システムインテグレータにて、金融機関システム業務アプリケーション開発・システム基盤担当を経て、現在はソフトウェア開発自動化関連の研究開発・推進に従事。

Red Hat Certified Engineer、Pivotal Certified Spring Professional、AWS Certified Solutions Architect Professionalなどの資格を持ち、アプリケーション基盤・クラウドなどさまざまな開発プロジェクト支援にも携わる。

本連載の内容に対するご意見・ご質問は Facebook まで。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

ヤフーの情シスが、レガシーアプリをモダン化する前にやったこと

ヤフーの情シスが、レガシーアプリをモダン化する前にやったこと

もともと内製の文化が強かったというヤフーの情報システム部門。しかしここ数年は、外部の製品も取り入れつつ、内製のシステムとうまく使い分けながら社内ITのモダン化を進めているという。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
知りたい! カナコさん 皆で話そうAIのコト
教えてカナコさん! これならわかるAI入門
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
ソフトウェア開発自動化入門
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る