ウェブサイト検索

AWS アプリケーション ロード バランサーでホストベースのルーティングを構成する方法


このページでは

  1. このガイドの概要
  2. EC2 インスタンスの構成
  3. ターゲット グループの構成
  4. ターゲット グループへの EC2 インスタンスの登録
  5. Application Load Balancer の作成
  6. ホストベースの転送ルールを追加する
  7. Route 53 にドメインを登録する
  8. 設定を確認しています…
  9. 結論

AWS では、ELB または Elastic Load Balancing は、アプリケーションの要求に応じてサーバーを追加または解放できる概念です。アプリケーションからの着信トラフィックは、複数のターゲットに分散されます。これらのターゲットは、1 つまたは複数のアベイラビリティーゾーンの EC2 インスタンス、コンテナー、および IP アドレスにすることができます。サポートされている AWS Elastic Load Balancer のタイプは、Application Load Balancer (ALB)、Network Load Balancer (NLB)、Gateway Load Balancer (最近リリースされた)、および Classic Load Balancer です。これらのロード バランサーには、次のようなさまざまな構成があります。

  1. Application Load Balancer: 2 つ以上の EC2 インスタンス間で着信アプリケーション トラフィックを自動的に分散することで機能します。リクエストの内容に応じてルーティング ルールを定義できます (コンテンツ ベース ルーティング)。レイヤー 7 のロード バランサーです。
  2. Network Load Balancer: NLB は、IP プロトコル データ (TCP および UDP) を使用して、EC2、マイクロサービス、コンテナなどの AWS リソースへの接続をルーティングします。レイヤー 4 のロード バランサーです。
  3. ゲートウェイ ロード バランサ: これらは、EC2 インスタンスで実行される NextGen ファイアウォール (NGFW)、IPS、IDS などのサードパーティ製仮想アプライアンスで使用されます。これは、複数の仮想アプライアンスからのトラフィックに対して単一のゲートウェイを配置することで機能し、これらの複数の仮想アプライアンスは、需要に応じてスケールアップまたはスケールダウンできます。これは、ネットワークの安定性に適しています。これは、レイヤー 3 (ゲートウェイ) とレイヤー 4 (負荷分散) のロード バランサーです。
  4. Classic Load Balancer: CLB は AWS のレガシー ロード バランサーであり、複数の EC2 インスタンス間で負荷を分散するために使用されます。 EC2-Classic ネットワーク内で設計されたアプリケーションに推奨されます。レイヤー 4/7 のロード バランサーです。 AWS では、このロード バランサーを回避することを推奨しています。

このガイドの概要


このチュートリアルでは、AWS で Application Load Balancer のパスベースのルーティングを構成します。このタスクに必要な権限が制限された IAM ユーザー アカウントを使用します。この実験には次のリソースがあります。

  1. それぞれが少なくとも 1 つの EC2 インスタンスを含む 2 つのアベイラビリティー ゾーン。
  2. VPC には、上記の 2 つのアベイラビリティ ゾーンのそれぞれに、少なくとも 1 つのパブリック サブネットがあります。このパブリック サブネットは、ロード バランサーの構成に使用されます。
  3. 各インスタンスに Web サーバーをインストールし、セキュリティ グループを使用してこれらのインスタンスでポート 80 アクセスを許可します。

EC2 インスタンスの構成

このガイドでは、Apache Httpd が両方にインストールされた 2 つの Amazon Linux EC2 インスタンスを設定しました。あるサーバーには、「signin」ディレクトリとその中に index.html ファイルがあり、次の内容が含まれています: \Welcome User? Sign in to continue...

別のサーバーには、「signup」ディレクトリとその中に index.html ファイルがあり、その内容は次のとおりです: \New User? Sign Up First...

「サインイン」ディレクトリと「サインアップ」ディレクトリはどちらもルート ディレクトリ (/var/www/html) 内にあります。

ターゲット グループの構成

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

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

  1. ターゲット タイプの選択: ここでは [インスタンス] を選択します。
  2. ターゲット グループ名: ターゲット グループに適切な名前を付けます (この場合は「サインイン」)。
  3. プロトコル: HTTP
  4. ポート: 80
  5. VPC: ここで VPC 名を選択します。
  6. プロトコル バージョン: デフォルトで選択されているものをそのまま使用します (HTTP1)。

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

ヘルスチェック プロトコル: HTTP

ヘルス チェック パス: 「使用するパス」(この場合は「/signin」)

「高度なヘルスチェック設定」をデフォルトのままにします。必要に応じてタグを追加します (オプション)。 [次へ] をクリックして続行します。

EC2 インスタンスを対象グループに登録する

ステップ 3. ここで、EC2 インスタンスの 1 つを上記のターゲット グループに追加します。インスタンスを選択し、[Include as pending below] ボタンをクリックします

Application Load Balancer の作成

ステップ 1. EC2 コンソールからロード バランサーに移動し、[ロード バランサーの作成] ボタンをクリックして、新しいページに表示される [アプリケーション ロード バランサー] を選択します。

ステップ 6. オプションのステップはスキップできます。概要を確認し、[ロード バランサーの作成] ボタンをクリックします。

ホストベースの転送ルールの追加

ステップ 1. ここで再び「ロード バランサー」ページに移動し、ここでターゲット ロード バランサーを見つけます。

ステップ 2. ALB ステータスがアクティブに変わったら、転送ルールに進みます。 Load Balancer 名をクリックし、[Listeners] タブに移動します。

ステップ 3. [ルール] 列の [ルールの表示/編集] をクリックし、[+] 記号の後に [ルールの挿入] をクリックします。

ステップ 4. [IF(all match)] 列の下で、[+ Add condition] ドロップダウン矢印をクリックし、ルール タイプとして [Host] を選択して、ホスト名またはドメイン名を入力します ('www.signin.tecofers.com ' この場合) 'is' ラベルに対応するテキスト フィールドに入力します。

ステップ 5. [その後] 列で、[+ アクションの追加] ドロップダウン矢印をクリックし、アクションとして [転送先] を選択します。ここで、ターゲット グループ「Sign-In」を選択します。
ホスト名またはドメイン名 (この場合は「www.signup.tecofers.com」) を使用して、ターゲット グループ「SignUp」に対して上記の手順 2 と 3 を繰り返します。ルールを保存すると、次の 2 つのルールが作成されます。

最後のルールは、上記の 2 つの条件が満たされない場合の既定のアクションです。

Route 53 にドメインを登録する

インターネット経由でホストベースのルーティング用にホスト/ドメインを登録するには、Route 53 内のホスト名/ドメイン名を使用して、対応する EC2 インスタンスの DNS 名を追加する必要があります。

ステップ 1. 管理コンソールから Route 53 ダッシュボードを開き、[ホストゾーンの作成] をクリックします。

ドメイン: ホストゾーンに対応するサブドメイン。

レコード タイプ: ここで A タイプを選択します。

トラフィックの値/ルーティング先:

  1. Application および Classic Load Balancer のエイリアスを選択
  2. ロードバランサがある地域を選択
  3. 対象のロードバランサを選択します。

上記のレコードは、次のように表示されます。

設定を確認しています…

すべてが期待どおりに機能しているかどうかを確認するには、Web ブラウザーを開き、ロード バランサーの DNS を貼り付けて、以下を追加します。

1) 「サインアップ」対象のホスト名

2) 「サインイン」ターゲットのホスト名

結論

おめでとうございます。AWS アプリケーション ロード バランサーでのホストベース ルーティングの動作シナリオがついに構成されました。