AWS設定 · 1 min read · Dec 10, 2025

AWSアプリケーションロードバランサーにおけるパスベースのルーティングの設定方法

AWSでは、ELBおよびElastic Load Balancingという概念が存在し、サーバーはアプリケーションの需要や受信トラフィックに応じて追加または削除できます。アプリケーションからの受信トラフィックは、複数のターゲットに分散されます。これらのターゲットは、EC2インスタンス、コンテナ、および1つまたは複数のアベイラビリティゾーン内のIPアドレスです。AWS Elastic Load Balancersのサポートされているタイプは、アプリケーションロードバランサー(ALB)、ネットワークロードバランサー(NLB)、ゲートウェイロードバランサー(最近発表)、およびクラシックロードバランサーです。これらのロードバランサーは異なる構成を持ちます。例えば、

  1. アプリケーションロードバランサー:これは、受信アプリケーショントラフィックを2つ以上のEC2インスタンス間で自動的に分配することによって機能します。リクエストの内容に応じてルーティングルールを定義できます(コンテンツベースのルーティング)。これはレイヤー7のロードバランサーです。

  2. ネットワークロードバランサー:NLBは、IPプロトコルデータ(TCPおよびUDP)を使用して、EC2、マイクロサービス、コンテナなどのAWSリソースへの接続をルーティングします。これはレイヤー4のロードバランサーです。

  3. ゲートウェイロードバランサー:これは、EC2インスタンス上で動作する次世代ファイアウォール(NGFW)、IPS、IDSなどのサードパーティの仮想アプライアンスと共に使用されます。これは、複数の仮想アプライアンスからのトラフィックのために単一のゲートウェイを配置することによって機能し、これらの複数の仮想アプライアンスは需要に応じてスケールアップまたはスケールダウンできます。これはネットワークの安定性に良いです。これはレイヤー3(ゲートウェイ)およびレイヤー4(ロードバランシング)のロードバランサーです。

  4. クラシックロードバランサー:CLBは、複数のEC2インスタンス間での負荷分散に使用されるAWSのレガシーロードバランサーです。EC2-Classicネットワーク内で設計されたアプリケーションに推奨されます。これはレイヤー4/7のロードバランサーです。AWSはこのロードバランサーの使用を避けることを推奨しています。

このガイドの概要

このチュートリアルでは、AWS上のアプリケーションロードバランサーのためにパスベースのルーティングを設定します。このタスクにはIAMユーザーアカウントを使用します。このセットアップのために以下のリソースがあります:

  1. 各アベイラビリティゾーンに少なくとも1つのEC2インスタンスを含む2つのアベイラビリティゾーン。

  2. 上記の2つのアベイラビリティゾーンのそれぞれに1つのパブリックサブネットを持つVPC。このパブリックサブネットはロードバランサーの設定に使用されます。

  3. 各インスタンスにウェブサーバーをインストールし、セキュリティグループを使用してこれらのインスタンスでポート80のアクセスを許可します。

EC2インスタンスの設定

このガイドでは、Apache Httpdウェブサーバーがインストールされた2つのAmazon Linux EC2インスタンスを設定しました。1つのサーバーには、内容が「Welcome User? Sign in to proceed…」のindex.htmlファイルを含む「signin」ディレクトリがあります。

もう1つのサーバーには、内容が「New User? Sign Up First…」のindex.htmlファイルを含む「signup」ディレクトリがあります。

「signin」と「signup」の両方のディレクトリは、ルートディレクトリ (/var/www/html) 内にあります。

ターゲットグループの設定

ステップ1. リクエストをルーティングするために、まず各サーバー用に2つのターゲットグループを作成します。EC2コンソールを開き、左側のパネルで「ターゲットグループ」を見つけて選択します(これは負荷分散の下にあります)。

ステップ2. 新しいページで、「ターゲットグループの作成」ボタンをクリックします:

ステップ3. 現在「グループの詳細を指定」ページにいます。基本設定の下で、以下を行います:

  1. ターゲットタイプを選択:ここで「インスタンス」を選択します。
  2. ターゲットグループ名:ターゲットグループに適切な名前を付けます(この場合は「Sign-In」)。
  3. プロトコル:HTTP
  4. ポート:80
  5. VPC:ここでVPC名を選択します。
  6. プロトコルバージョン:デフォルトの選択を維持します(HTTP1)

「ヘルスチェック」設定の下で:

  1. ヘルスチェックプロトコル:HTTP
  2. ヘルスチェックパス:「使用したいパス」(この場合は「/signin」)
  3. 「高度なヘルスチェック設定」をデフォルトのままにします。必要に応じてタグを追加します(オプション)。「次へ」をクリックして続行します。

EC2インスタンスをターゲットグループに登録

ステップ1. 上記のターゲットグループにEC2インスタンスの1つを追加します。インスタンスを選択し、「以下に保留として含める」ボタンをクリックします。

EC2インスタンスをターゲットグループに登録

ステップ2. 上記で選択したインスタンスが「ターゲットのレビュー」の下に表示されます。次に「ターゲットグループの作成」をクリックします。

ターゲットグループの作成
ステップ3. 次のウィンドウで再度「続行」をクリックします。次に、別のターゲットグループに対して同じ手順を繰り返し、「Sign-Up」と名付けます。このターゲットグループには別のインスタンス(別のアベイラビリティゾーン)を使用し、異なるヘルスチェックパス(この場合は「/signup」)を使用します:

ターゲットグループ

アプリケーションロードバランサーの作成

ステップ1. EC2コンソールから、ロードバランサーに移動し、「ロードバランサーの作成」ボタンをクリックし、新しいページで「アプリケーションロードバランサー」を選択します:

アプリケーションロードバランサーのページ
ステップ2. ロードバランサーに適切な名前(ここでは「My_Path_ALB」)を付けます。スキームはデフォルト(「インターネット向け」)のままにし、IPアドレスタイプをIPv4に選択します。

ロードバランサー基本設定
ステップ3. ネットワークマッピングセクションで、ターゲットVPCを選択し、マッピングセクションでトラフィックをルーティングするターゲットを含む2つのアベイラビリティゾーンを選択します。

ネットワークマッピング
ステップ4. ロードバランサーのためにセキュリティグループを設定し、ターゲットポート(この場合はポート80)がリッスンできるようにします:

セキュリティグループの設定
ステップ5. リスナーを選択(この場合はHTTP)し、リッスンするポートを入力するか、HTTPリクエストのデフォルトポート80を使用することを選択します。デフォルトアクションの下で、「forward to」列に「Sign-in」ターゲットを選択します:

リスナーの設定
ステップ6. オプションの手順はスキップできます。今、要約を確認し、「ロードバランサーの作成」ボタンを押します:

ロードバランサーの要約を確認
ステップ7. 再度「ロードバランサー」ページに移動し、ここでターゲットロードバランサーを見つけます:

ロードバランサーのページ

パスベースの転送ルールの追加

ステップ1. ALBのステータスがアクティブに変わったら、転送ルールに進みます。ロードバランサーの名前をクリックし、「リスナー」タブに移動します。

ステップ2. 「ルール」列の下で「ルールの表示/編集」をクリックし、「+」記号をクリックして「ルールの挿入」を選択します:

パスベースのルール

パスベースの転送ルールの追加

ステップ3. 「IF(すべて一致)」列の下で、「+条件を追加」ドロップダウン矢印をクリックし、ルールタイプとして「パス」を選択し、「is」ラベルに対応するテキストフィールドに「/signin*」を入力します。

ステップ4. 「Then」列から、「+アクションを追加」ドロップダウン矢印をクリックし、アクションとして「Forward to」を選択します。ここでターゲットグループ「Sign-In」を選択します。

上記のステップ2および3をターゲットグループ「SignUp」に対してパス「/signup*」で繰り返します。ルールを保存すると、2つのルールが得られます:

パスベースのルールの要約

セットアップの確認…

すべてが期待通りに機能しているか確認するために、ウェブブラウザを開き、ロードバランサーのDNSを貼り付け、次のように追加します:

  1. ターゲットグループ「Sign-Up」のパス: ‘/signup’

  1. ターゲットグループ「Sign-In」のパス: ‘/signin’

結論

おめでとうございます。AWSアプリケーションロードバランサーでパスベースのルーティングの動作シナリオを最終的に設定しました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。