AWSでは、ELBまたはElastic Load Balancingは、アプリケーションの要求に応じてサーバーを追加または解放できる概念です。アプリケーションからの着信トラフィックは、複数のターゲットに分散されます。これらのターゲットは、1つまたは複数のアベイラビリティーゾーンのEC2インスタンス、コンテナー、およびIPアドレスです。サポートされているAWSElasticLoad Balancerのタイプは、Application Load Balancer(ALB)、Network Load Balancer(NLB)、Gateway Load Balancer(最近リリースされた)、およびClassicLoadBalancerです。これらのロードバランサーの構成は異なります。たとえば、
- アプリケーションロードバランサー:2つ以上のEC2インスタンス間で着信アプリケーショントラフィックを自動的に分散することで機能します。リクエストのコンテンツごとにルーティングルールを定義できます(コンテンツベースのルーティング)。レイヤー7ロードバランサーです。
- ネットワークロードバランサー:NLBはIPプロトコルデータ(TCPおよびUDP)を使用して、EC2、マイクロサービス、コンテナーなどのAWSリソースへの接続をルーティングします。レイヤー4ロードバランサーです。
- ゲートウェイロードバランサー:これらは、EC2インスタンスで実行されているNextGenファイアウォール(NGFW)、IPS、IDSなどのサードパーティの仮想アプライアンスで使用されます。これは、複数の仮想アプライアンスからのトラフィック用に単一のゲートウェイを配置することで機能し、これらの複数の仮想アプライアンスは、必要に応じてスケールアップまたはスケールダウンできます。これは、ネットワークの安定性に役立ちます。これは、レイヤー3(ゲートウェイ)とレイヤー4(負荷分散)のロードバランサーです。
- クラシックロードバランサー:CLBはAWSのレガシーロードバランサーであり、複数のEC2インスタンス間での負荷分散に使用されます。 EC2-Classicネットワーク内で設計されたアプリケーションに推奨されます。レイヤー4/7ロードバランサーです。このロードバランサーを回避することをAWSが推奨しています。
このガイドの概要
このチュートリアルでは、AWSでApplicationLoadBalancerのパスベースのルーティングを設定します。このタスクに必要な権限が制限されたIAMユーザーアカウントを使用します。この実験には次のリソースがあります。
- それぞれに少なくとも1つのEC2インスタンスが含まれる2つのアベイラビリティーゾーン。
- VPCには、上記の2つのアベイラビリティーゾーンのそれぞれに少なくとも1つのパブリックサブネットがあります。このパブリックサブネットは、ロードバランサーの構成に使用されます。
- 各インスタンスにWebサーバーをインストールし、セキュリティグループを使用してこれらのインスタンスでポート80アクセスを許可します。
EC2インスタンスの構成
このガイドでは、両方にapacheHttpdがインストールされた2つのAmazonLinuxEC2インスタンスを設定しました。 1つのサーバーには、「signin」ディレクトリとその中に次の内容のindex.htmlファイルがあります。「WelcomeUser?サインインして続行します...」
別のサーバーには、「signup」ディレクトリとその中に次の内容のindex.htmlファイルがあります。「新しいユーザー?最初にサインアップ...」
「signin」ディレクトリと「signup」ディレクトリはどちらもルートディレクトリ(/ var / www / html)内にあります。
ターゲットグループの構成
ステップ1.リクエストをルーティングするために、最初にサーバーごとに1つずつ、合計2つのターゲットグループを作成します。 EC2コンソールを開き、左側のパネルで[ターゲットグループ]を見つけて選択します(負荷分散の下にあります):
ステップ2.新しいページで、[ターゲットグループの作成]ボタンをクリックします。
ステップ3.[グループの詳細を指定]ページが表示されます。基本構成で、次の手順を実行します。
- ターゲットタイプを選択します:ここで[インスタンス]を選択します。
- ターゲットグループ名:ターゲットグループに適切な名前を付けます(この場合は「サインイン」)。
- プロトコル:HTTP
- ポート:80
- VPC:ここでVPC名を選択します。
- プロトコルバージョン:デフォルトで選択されているものを保持します。(HTTP1)
[ヘルスチェック]設定の下:
ヘルスチェックプロトコル:HTTP
ヘルスチェックパス:「使用するパス」(この場合は「/ signin」)
「詳細なヘルスチェック設定」をデフォルトのままにします。必要に応じてタグを追加します(オプション)。 [次へ]をクリックして続行します。
ターゲットグループへのEC2インスタンスの登録
ステップ3.次に、EC2インスタンスの1つを上記のターゲットグループに追加します。インスタンスを選択し、[下に保留中として含める]ボタンをクリックします
上記で選択したインスタンスが[ターゲットのレビュー]の下に表示されます。次に、[ターゲットグループの作成]をクリックします。
次のウィンドウで、もう一度[続行]をクリックします。次に、別のターゲットグループに対して同じ手順を繰り返し、「サインアップ」という名前を付けます。このターゲットグループで(別のアベイラビリティーゾーンにある)別のインスタンスを使用し、別のヘルスチェックパス(この場合は「/ signup」)を使用します:
ステップ1. EC2コンソールから、ロードバランサーに移動し、[ロードバランサーの作成]ボタンをクリックして、新しいページに表示される[アプリケーションロードバランサー]を選択します。
ステップ2.適切な名前(ここでは「My-Path-ALB」)をロードバランサー。スキームをデフォルト(「インターネット向け」)のままにし、IPアドレスタイプをIPv4として選択します
ステップ3.[ネットワークマッピング]セクションで、ターゲットVPCを選択します。 [マッピング]セクションで、ロードバランサーがトラフィックをルーティングするターゲットを含む2つのアベイラビリティーゾーンを選択します。
ステップ4.ロードバランサーのセキュリティグループを構成し、ターゲットポート(ポート80私たちの場合)耳を傾ける:
ステップ5.リスナー(この場合はHTTP)を選択し、リッスンするポートを入力しますまたは、HTTPリクエストのデフォルトのポート80を使用することを選択します。 [デフォルトのアクション]で、[転送先]列の[サインイン]ターゲットを選択します。
手順6.オプションの手順はスキップできます。次に、概要を確認して、[ロードバランサーの作成]ボタンをクリックします。
ホストベースの転送ルールの追加
手順1.もう一度[ロードバランサー]ページに移動し、ここでターゲットのロードバランサーを見つけます:
ステップ2. ALBステータスがアクティブに変わったら、転送ルールに進みます。ロードバランサー名をクリックしてから、[リスナー]タブに移動します
手順3. [ルール]列の下の[ルールの表示/編集]をクリックし、[+]記号をクリックしてから[ルールの挿入]をクリックします。
ステップ4. [IF(all match)]列で、[+ Add condition]ドロップダウン矢印をクリックし、ルールタイプとして[Host]を選択して、 'is'ラベルに対応するテキストフィールドのホスト名またはドメイン名(この場合は'www.signin.tecofers.com')。
ステップ5. [Then]列で、[+ Add action]ドロップダウン矢印をクリックし、アクションとして[Forwardto]を選択します。ここで、ターゲットグループ「Sign-In」を選択します。
ホスト名またはドメイン名(この場合は「www.signup.tecofers.com」)を使用して、ターゲットグループ「SignUp」に対して上記の手順2と3を繰り返します。ルールを保存すると、次の2つのルールが作成されます。
最後のルールは、上記の2つの条件が満たされない場合のデフォルトのアクションです。
Route53でのドメインの登録
インターネットを介したホストベースのルーティングにホスト/ドメインを登録するには、対応するEC2インスタンスのDNS名と、Route53内のホスト名/ドメイン名を追加する必要があります。 。
ステップ1.管理コンソールからRoute 53ダッシュボードを開き、[Create hostedzone]をクリックします:
ステップ2.[ホストゾーンの構成]ページで、ドメイン名を入力し、タイプを'として選択します。 [パブリックホストゾーン]を選択し、[ホストゾーンの作成]を選択します:
ステップ3.新しいページで[レコードの作成]をクリックします:
ステップ4.新しいページで、[ウィザードに切り替える]というラベルをクリックし、[ 「シンプルルーティング」オプション
ステップ5.ここで[単純なレコードの定義]をクリックします
ステップ6.このレコードのさまざまな詳細を入力します:
ドメイン:ホストされているゾーンに対応するサブドメイン。
レコードタイプ:ここでAタイプを選択します。
トラフィックの値/ルーティング先:
- [アプリケーションとクラシックロードバランサーのエイリアス]を選択
- ロードバランサーがある地域を選択します
- ターゲットのロードバランサーを選択します。
最後に「Definesimplerecord」を押します。
上記のレコードは次のように表示されます:
他のホストに対して上記の手順を繰り返します。
設定を確認しています…
すべてが期待どおりに機能しているかどうかを確認するには、ウェブブラウザを開き、ロードバランサのDNSを貼り付けて、次のコマンドを追加します。
1)「サインアップ」ターゲットのホスト名
2)「サインイン」ターゲットのホスト名
結論
おめでとうございます。AWSアプリケーションロードバランサーでホストベースのルーティングの動作シナリオを最終的に構成しました。