GNU/Linux >> Linux の 問題 >  >> Linux

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

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

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

このガイドの概要


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

  1. それぞれに少なくとも1つのEC2インスタンスが含まれる2つのアベイラビリティーゾーン。
  2. VPCには、上記の2つのアベイラビリティーゾーンのそれぞれに少なくとも1つのパブリックサブネットがあります。このパブリックサブネットは、ロードバランサーの構成に使用されます。
  3. 各インスタンスに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.[グループの詳細を指定]ページが表示されます。基本構成で、次の手順を実行します。

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

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

  1. [アプリケーションとクラシックロードバランサーのエイリアス]を選択
  2. ロードバランサーがある地域を選択します
  3. ターゲットのロードバランサーを選択します。




最後に「Definesimplerecord」を押します。

>

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


他のホストに対して上記の手順を繰り返します。

設定を確認しています…

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

1)「サインアップ」ターゲットのホスト名



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





結論

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


Linux
  1. Debian11にHAProxyロードバランサをインストールして設定する方法

  2. Rocky Linux / AlmaLinux8にHAProxyロードバランサーをインストールして構成する方法

  3. Ubuntu20.04にHAProxyロードバランサーをインストールして構成する方法

  1. LinuxでNGINXをTCP/UDPロードバランサーとして構成する方法

  2. Terraformを使用してAWSEC2インスタンスを起動する方法

  3. HAProxyロードバランサーを設定する方法

  1. AWSでElasticBeanstalkアプリケーションをセットアップする方法

  2. LinuxアプリケーションログをAWSCloudWatchに送信する方法

  3. aws-cliを使用してAWSEC2インスタンスを管理する方法