複数のアプリケーションが同じ IP アドレスを介してパブリックアクセスを必要とする場合、それぞれを個別の Server Load Balancer (SLB) インスタンスに関連付けるとコストが増加します。各アプリケーションに専用のドメイン名を割り当て、転送ポリシーを構成することで、単一の SLB インスタンスを複数のアプリケーション間で共有できます。SLB は、各リクエストのドメイン名と URL に基づいて、HTTP リクエストを正しいアプリケーションにルーティングします。
ドメイン名ベースの転送と共有ポートは、Elastic Compute Service (ECS) クラスター上の HTTP リスナーでのみサポートされています。
仕組み
各アプリケーションは、同じ SLB インスタンスの背後にある個別の vServer グループに割り当てられます。転送ポリシーは、各ドメイン名を対応する vServer グループにマッピングします。SLB は HTTP リクエストを受信すると、ドメイン名を検査し、マッチする vServer グループにリクエストを転送します。
次の例では、SLB インスタンスの IP アドレスが2つのドメイン名にマッピングされており、それぞれが異なる vServer グループに関連付けられています。
| ドメイン名 | vServer グループ | アプリケーション |
|---|---|---|
abc***.com | vServer Group A | App1 |
xyz***.com | vServer Group B | App2 |

abc***.com へのリクエストは App1 に到達します。xyz***.com へのリクエストは App2 に到達します。どちらも同じパブリック IP アドレスとポートを使用します。
例として、2つのアプリケーションがあるとします。1つは注文の照会に使用されるユーザーアプリケーションで、もう1つはユーザーログインに使用される注文アプリケーションです。どちらのアプリケーションも同じパブリック IP アドレスとポートを使用します。デフォルトでは、ポート 80 が使用されます。アプリケーションのトラフィックを転送するために、ユーザーアプリケーションには u.domain.com、注文アプリケーションには o.domain.com のように異なるドメイン名を構成できます。

前提条件
開始する前に、以下があることを確認してください。
SLB インスタンス (Application Load Balancer (ALB) またはクラシックロードバランサー (CLB))。作成するには、「インスタンスの作成」をご参照ください。
Enterprise Distributed Application Service (EDAS) の ECS クラスターにデプロイされた2つ以上のアプリケーション
各アプリケーションの専用ドメイン名 (例:
u.domain.comおよびo.domain.com)
構成の概要
次の手順では、edas-test-slb という名前の SLB インスタンスを2つのアプリケーションのインスタンスに関連付け、異なるドメイン名を構成してトラフィックを転送する方法を示します。
SLB インスタンスを最初のアプリケーション (
spring-cloud-provider) に関連付け、provider.test.comの転送ルールでドメイン名ベースの転送ポリシーを構成します。同じ SLB インスタンスを2番目のアプリケーション (
spring-cloud-consumer) に関連付けます。この際、同じリスナーポートを使用しますが、異なる vServer グループと転送ポリシー (consumer.test.com) を使用します。各ドメイン名が正しいアプリケーションにルーティングされることを確認します。
ステップ 1: SLB インスタンスを最初のアプリケーションに関連付ける
アプリケーション設定を開く
EDAS コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。
[アプリケーション] ページで、上部のナビゲーションバーでリージョンを選択し、[マイクロサービス名前空間] ドロップダウンリストからオプションを選択します。[クラスタタイプ] ドロップダウンリストから [ECS クラスタ] を選択します。
最初のアプリケーション (例:
spring-cloud-provider) の名前をクリックします。[基本情報] ページの [アプリケーション設定項目] セクションで、[SLB (インターネット)] の横にある [追加] をクリックします。
説明SLB インスタンスが既にバインドされている場合、その IP アドレスとポートが表示されます。設定を変更するには、[変更] をクリックします。または、バインドを解除するには、[解除] をクリックします。
SLB インスタンスの選択
「[パブリックロードバランシングの追加]」ウィザードで、[SLB タイプ] パラメーターを [ALB] または [CLB] に設定します。
[SLB (インターネット)] ドロップダウンリストから SLB インスタンスを選択し、[次へ] をクリックします。
リスナーの構成
「リスナーの選択と設定」ステップで、リスニングポートを設定します:
ALB:既存のリスニングポートを選択します。
CLB: [既存のリスニングポートを選択] を選択して既存のポートを再利用するか、[リスニングポートを追加] を選択して新しいリスナーを作成します。
新しいリスナーを作成する場合は、次のパラメーターを設定し、[次へ] をクリックします。
パラメーター 説明 [プロトコル] HTTP を選択します。HTTP リスナーはドメイン名と URL に基づいてリクエストをルーティングします。詳細については、「ALB または CLB の HTTP リスナーの追加」をご参照ください。 フロントエンドポート番号 SLB が外部トラフィックに使用するポートです。ポートが別のプロトコルによってすでに利用中の場合は、別のポートを選択するか、まず SLB コンソールから既存のリスナーを削除してください。 ヘルスチェックパス (URI) バックエンドのヘルスチェックに使用される URI です。デフォルト: /_ehc.html。詳細については、「CLB ヘルスチェックの構成と管理」をご参照ください。バックエンドポート番号 アプリケーションポートです。この値は固定です。
vServer グループと転送ポリシーの構成
「VServer グループおよび転送ポリシーの設定」ステップで、vServer グループとドメインベースの転送ポリシーを設定します。オプション A: 既存の vServer グループを使用 オプション B: 新しい vServer グループを作成
[VServer グループの作成] を選択し、[VServer グループ名] に名前を入力します。
[転送ポリシーの追加] を選択し、[転送ポリシー] フィールドにドメイン名(例:
provider.test.com)を入力します。
説明デフォルトサーバーグループは転送ポリシーをサポートしていません。代わりに vServer グループを選択してください。
[次へ] をクリックします。
構成の確認
[確認] ステップで、SLB 設定を確認し、[確認] をクリックします。
ステップ 2: SLB インスタンスを追加のアプリケーションに関連付ける
追加の各アプリケーションに対して構成を繰り返します。EDAS コンソールで2番目のアプリケーション (例: spring-cloud-consumer) を開き、ステップ 1 と同じ手順に従いますが、次の相違点があります。
| 設定 | 最初のアプリケーション | 追加のアプリケーション |
|---|---|---|
| SLB インスタンス | edas-test-slb | 同じ SLB インスタンス |
| リスナーポート | ポート 80 (HTTP) | 同じポート |
| vServer グループ | 新規または既存のグループ | 異なるグループ |
| 転送ポリシー | provider.test.com | 異なるドメイン (例:consumer.test.com) |
ステップ 3: 構成の検証
すべてのアプリケーションに SLB インスタンスを関連付けた後、各ドメイン名が正しいアプリケーションにルーティングされることを確認します。完全な検証手順については、「検証」をご参照ください。
ローカル DNS エントリでのテスト
ドメイン名がまだ DNS プロバイダーに登録されていない場合は、Linux または macOS マシンの hosts ファイルにエントリを追加して構成をテストします。
例として、SLB インスタンスの IP アドレスが 123.1.XX.XX の場合、/etc/hosts に次の行を追加します。
123.1.XX.XX provider.test.com
123.1.XX.XX consumer.test.com各アプリケーションにアクセスして正しいルーティングを確認します。
http://provider.test.com--spring-cloud-providerに到達するはずですhttp://consumer.test.com--spring-cloud-consumerに到達するはずです
次のステップ
アプリケーション用の専用 SLB インスタンスを設定する — 専用の SLB インスタンスを使用し、共有しないようにします