AWS アプリケーション ロード バランサーでホストベースのルーティングを構成する方法
このページでは
- このガイドの概要
- EC2 インスタンスの構成
- ターゲット グループの構成
- ターゲット グループへの EC2 インスタンスの登録
- Application Load Balancer の作成
- ホストベースの転送ルールを追加する
- Route 53 にドメインを登録する
- 設定を確認しています…
- 結論
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 です。これらのロード バランサーには、次のようなさまざまな構成があります。
- Application Load Balancer: 2 つ以上の EC2 インスタンス間で着信アプリケーション トラフィックを自動的に分散することで機能します。リクエストの内容に応じてルーティング ルールを定義できます (コンテンツ ベース ルーティング)。レイヤー 7 のロード バランサーです。
- Network Load Balancer: NLB は、IP プロトコル データ (TCP および UDP) を使用して、EC2、マイクロサービス、コンテナなどの AWS リソースへの接続をルーティングします。レイヤー 4 のロード バランサーです。
- ゲートウェイ ロード バランサ: これらは、EC2 インスタンスで実行される NextGen ファイアウォール (NGFW)、IPS、IDS などのサードパーティ製仮想アプライアンスで使用されます。これは、複数の仮想アプライアンスからのトラフィックに対して単一のゲートウェイを配置することで機能し、これらの複数の仮想アプライアンスは、需要に応じてスケールアップまたはスケールダウンできます。これは、ネットワークの安定性に適しています。これは、レイヤー 3 (ゲートウェイ) とレイヤー 4 (負荷分散) のロード バランサーです。
- Classic Load Balancer: CLB は AWS のレガシー ロード バランサーであり、複数の EC2 インスタンス間で負荷を分散するために使用されます。 EC2-Classic ネットワーク内で設計されたアプリケーションに推奨されます。レイヤー 4/7 のロード バランサーです。 AWS では、このロード バランサーを回避することを推奨しています。
このガイドの概要
このチュートリアルでは、AWS で Application Load Balancer のパスベースのルーティングを構成します。このタスクに必要な権限が制限された IAM ユーザー アカウントを使用します。この実験には次のリソースがあります。
- それぞれが少なくとも 1 つの EC2 インスタンスを含む 2 つのアベイラビリティー ゾーン。
- VPC には、上記の 2 つのアベイラビリティ ゾーンのそれぞれに、少なくとも 1 つのパブリック サブネットがあります。このパブリック サブネットは、ロード バランサーの構成に使用されます。
- 各インスタンスに 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. 新しいページで、[ターゲット グループの作成] ボタンをクリックします。
- ターゲット タイプの選択: ここでは [インスタンス] を選択します。
- ターゲット グループ名: ターゲット グループに適切な名前を付けます (この場合は「サインイン」)。
- プロトコル: HTTP
- ポート: 80
- VPC: ここで VPC 名を選択します。
- プロトコル バージョン: デフォルトで選択されているものをそのまま使用します (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 タイプを選択します。
トラフィックの値/ルーティング先:
- Application および Classic Load Balancer のエイリアスを選択
- ロードバランサがある地域を選択
- 対象のロードバランサを選択します。
上記のレコードは、次のように表示されます。
設定を確認しています…
すべてが期待どおりに機能しているかどうかを確認するには、Web ブラウザーを開き、ロード バランサーの DNS を貼り付けて、以下を追加します。
1) 「サインアップ」対象のホスト名
2) 「サインイン」ターゲットのホスト名
結論
おめでとうございます。AWS アプリケーション ロード バランサーでのホストベース ルーティングの動作シナリオがついに構成されました。