デフォルトでは、Classic Load Balancer (CLB) インスタンスは、リスナーに設定されたバックエンドサーバーグループにすべてのトラフィックを送信します。サービスが拡大すると、リソース配分の不均衡、パフォーマンスの低下、運用の複雑化につながる可能性があります。CLB リスナーに転送ルールを設定することで、トラフィックを指定したバックエンドサーバーグループにルーティングできます。これにより、きめ細かなトラフィック管理とサービス分離が実現され、リソース使用率の向上、サービスの安定性の確保、ユーザーエクスペリエンスの最適化が可能になります。
機能概要
CLB リスナーの転送ルールは、ドメイン名と URL パスに基づいて、クライアントからの着信リクエストを異なるバックエンドサーバーに振り分けます。
主な機能
-
ドメイン名ベースの転送
-
マッチングモード: 完全一致とワイルドカードマッチ (シングルレベルおよびマルチレベルのワイルドカードを含む) に対応しています。 たとえば、
www.aliyun.comは完全一致で、*.aliyun.comと*.market.aliyun.comはワイルドカードマッチです。 -
マッチング優先度:マッチングの順序は、完全一致 > 狭いワイルドカード > 広いワイルドカードとなり、最も精度の高いルールが優先的に実行されます。
次の表は、マッチング優先度の例を示しています。✓ は一致、× は不一致を示します。
モード
テストリクエスト URL
ドメイン転送ルール
www.aliyun.com
*.aliyun.com
*.market.aliyun.com
[完全一致]
www.aliyun.com
✓
×
×
ワイルドカードマッチ
market.aliyun.com
×
✓
×
info.market.aliyun.com
×
✓
✓
-
-
URL パスベースの転送
照合ロジック:システムは URL パスに基づいて最長プレフィックス照合を使用します。たとえば、/abc と /abcd の両方のルールを設定した場合、/abcde へのリクエストは /abcd のルールに一致します。
-
ポリシーの組み合わせ:1 つのリスナーに複数のポリシーを設定し、ドメイン名と URL パスの組み合わせを使用することで、読み取りリクエストと書き込みリクエストを異なるサーバーグループに振り分けるなど、複雑なトラフィック配分シナリオを実現できます。
仕組み
1 つのリスナーに複数の転送ルールを追加でき、各ルールは異なる vServer グループに関連付けられます。マッチングロジックは次の図のとおりです。転送ルールを設定していない場合、ロードバランサーはすべてのリクエストをリスナーに設定されたデフォルトサーバーグループに転送します。転送ルールが設定されている場合、ロードバランサーはルールとのマッチングを試みます。リクエストがルールに一致した場合、そのルールに関連付けられたサーバーグループに転送されます。一致しない場合は、リスナーのデフォルトサーバーグループに送信されます。
ユースケース
-
マイクロサービスアーキテクチャ:マイクロサービスアーキテクチャでは、アプリケーションは、異なるインスタンスまたはコンテナにデプロイされた複数の独立したサービスで構成されます。 パスベースのルーティングは、対応するビジネスロジックを処理する特定のサービスインスタンスにクライアントリクエストを転送します。 たとえば、e コマースプラットフォームでは、ユーザー認証、注文処理、および支払いリクエストは、HTTP リクエストの URL パスに基づいて、それぞれの認証、注文、および支払いサービスにルーティングできます。
-
読み取り/書き込み分離: 注文処理など、同時実行性が高く、厳密なデータ整合性が要件となるサービスの場合、読み取り/書き込み分離を実装して、パフォーマンスとデータセキュリティを最適化できます。 読み取り操作と書き込み操作は、異なるデータベースインスタンスまたはクラスターによって処理されます。 読み取り操作は読み取りデータベースに、書き込み操作は書き込みデータベースにルーティングされます。
-
マルチテナントアプリケーション: マルチテナントアプリケーションでは、さまざまなテナントにサービス分離とパーソナライゼーションを提供するために、独立した環境が必要です。たとえば、テナント固有のサブドメインを使用してさまざまなエントリポイントを区別し、URL パスを使用してサービス機能をさらに絞り込むことができます。このアプローチにより、各テナントのデータセキュリティとプライバシーが保証されるだけでなく、カスタマイズされたユーザーエクスペリエンスとインターフェイスも可能になります。
制限事項
-
転送ルールをサポートするのは、レイヤー 7 の HTTP および HTTPS リスナーのみです。
-
転送ルールで指定するバックエンドサーバーグループは、vServer グループである必要があります。
-
HTTP または HTTPS リスナーに追加できる、ドメイン名と URL の転送ルールは合計で最大 40 個です。詳細については、「制限事項」をご参照ください。
シナリオ例
ある教育プラットフォームでは、単一のドメイン名を通じて、ビデオ講座とオンライン試験問題集を含む、さまざまなオンライン学習サービスを提供したいと考えています。ビデオサービスには高帯域幅とストリーミング機能が必要であり、試験問題集サービスには高い計算能力と高速な応答時間が求められます。当初、すべてのサービスが単一のサーバーグループにデプロイされていたため、リソース配分が不均衡になりました。ビデオストリーミングのピーク時には、試験問題集のパフォーマンスが影響を受け、ユーザーエクスペリエンスが低下しました。トラフィックの急増時のサーバー負荷の高さも、サービスの安定性を損ないました。
この問題に対処するため、プラットフォームは Alibaba Cloud CLB の転送ルールを使用して、同一ドメイン名で異なる URL パスに基づいてトラフィックをルーティングします。次の図に示すように、/video/ へのリクエストはビデオサービス vServer グループ RS1 に転送され、ビデオサービスに十分な帯域幅と処理能力が確保されます。/exam/ へのリクエストは試験サービス vServer グループ RS2 に転送され、高速なクエリ応答と送信のために計算リソースが最適化されます。このアプローチにより、精密なルーティングが実現され、各サブサービスが独立して動作することが保証されます。
前提条件
-
中国 (上海) リージョンで VPC1 という名前の Virtual Private Cloud (VPC) を作成し、ゾーン E とゾーン G にそれぞれ 2 つの vSwitch、VSW1 と VSW2 を作成済みであること。
-
VSW1 と VSW2 にそれぞれ ECS インスタンス ECS01 と ECS02 を作成し、それぞれにアプリケーションサービスをデプロイ済みであること。注:セキュリティグループルールで、アプリケーションサービスが使用するポートへのトラフィックが許可されていることを確認してください。
次のサンプルコマンドは、ECS01 と ECS02 にテストアプリケーションをデプロイする方法を示しています。
-
CLB インスタンス用に 2 つの vServer グループ RS1 と RS2 を作成し、RS1 に ECS01 を、RS2 に ECS02 を追加しました。バックエンドサーバーのポートは、アプリケーションサービスのポートと一致させる必要があります。この例では、NGINX のデフォルトポート 80 を使用します。
-
CLB インスタンスに HTTP リスナーまたは HTTPS リスナーを設定済みであること。
操作手順
ステップ 1:転送ルールの設定
-
Classic Load Balancer (CLB) コンソールにログインします。
-
トップナビゲーションバーで、ご利用の CLB インスタンスがデプロイされているリージョンを選択します。
-
インスタンス ページで、目的のインスタンスの ID をクリックします。
-
リスナー タブで、対象のリスナーを探し、操作 列の 転送ルールの設定 をクリックします。
-
さらに追加 パネルで、転送ルールを設定し、さらに追加 をクリックします。
この例では、2 つの転送ルールを設定します。URL が
/videoのリクエストは vServer グループ RS1 に転送され、URL が/examのリクエストは vServer グループ RS2 に転送されます。-
[ドメイン]:登録済みのドメイン名を入力します。ICP 登録が完了している必要があります。
-
URL:リクエストパスを入力します。
CLB 転送ルールのパスマッチングでは、大文字と小文字が区別されます。例えば、
/videoと/viDeoは 2 つの異なるパスと見なされ、別々の転送ルールが必要です。
説明リクエスト URL パスに特殊文字が含まれている場合は、URL エンコーディングを使用する必要があります。例えば、転送ルールが
/#/のようにハッシュ記号 (#) を含む URL パスに設定されている場合、リクエスト URL は URL エンコードされた値「%23」(例: /%23/) を使用して、正しく一致および転送される必要があります。 -
ステップ 2:ヘルスチェックの設定
デフォルトでは、HTTP ヘルスチェックは、サーバーに設定されたアプリケーションのデフォルトホームページに HTTP リクエストを送信します。デフォルトホームページ以外のページをヘルスチェックに使用する場合は、その正確なパスを指定してください。
-
インスタンス ページで、目的の CLB インスタンスを見つけ、その ID をクリックします。
-
リスナー タブで、リスナーを見つけ、操作 列の 転送ルールの設定 をクリックします。
-
ルール パネルの 転送ルール で、対象の転送ルールを探し、編集 をクリックします。他に設定が必要なルールがある場合は、この手順を繰り返します。
-
転送ルールを編集する パネルで、高度な設定 を有効にし、ヘルスチェックへのパス を転送ルールの URL パスに設定します。 たとえば、/video URL を使用するルールでは、ヘルスチェックパスを /video に設定します。
[ヘルスチェック] スイッチを有効にし、[OK] をクリックします。
ステップ 3:DNS レコードの設定
-
Alibaba Cloud に登録されていないドメインの場合、DNS レコードを設定する前に、まず Alibaba Cloud DNS コンソールにドメインを追加する必要があります。
-
CLB インスタンスが内部向けインスタンスの場合、まず Elastic IP アドレス (EIP) を関連付けてから、ドメイン名を EIP にマッピングする A レコードを作成して、パブリックアクセスを有効にする必要があります。
-
左側のナビゲーションペインで、を選択します。
-
インスタンス ページで、対象のインスタンスを選択し、その IP をコピーします。
-
次の手順を実行して、A レコードを追加します。
-
Alibaba Cloud DNS コンソールにログインします。
-
インターネットの権威ある DNS 解決 ページで、目的のドメイン名を見つけ、Actions 列の 解決設定 をクリックします。
-
解決設定 ページで、Add Record をクリックします。
-
Add Record パネルで、次のパラメーターを設定します。その他のパラメーターはデフォルト値のままにするか、必要に応じて変更できます。次に、OK をクリックします。
パラメーター
説明
[Record Type]
ドロップダウンリストから A を選択します。
[Hostname]
ドメイン名のプレフィックスです。
説明ルートドメインの場合は、ホスト名を @ に設定します。
[Record Value]
コピーした CLB インスタンスの IP アドレスを入力します。
-
ステップ 4:設定のテスト
ブラウザーを使用して http://<your domain name>/<URL>/ にアクセスし、リクエストが正しいサーバーグループにルーティングされることを確認します。
-
http://www.example.com/video/でビデオサービスにアクセスし、リクエストがビデオサービス vServer グループ RS1 にルーティングされることを確認します。アクセスが成功すると、ページに次の内容が返されます。
Hello World ! This is video service. -
http://www.example.com/exam/で試験サービスにアクセスし、リクエストが試験サービス vServer グループ RS2 にルーティングされることを確認します。ページに次のレスポンスが返された場合、リクエストが試験サービスに正常にルーティングされたことを示します。
Hello World ! This is exam service.
よくある質問
CLB 転送ルールは URL リダイレクトをサポートしていますか?
いいえ。CLB 転送ルールはトラフィックの転送のみを行います。URL リダイレクトを設定する必要がある場合は、Application Load Balancer (ALB) の使用をご検討ください。詳細については、「リスナーの転送ルールの設定」をご参照ください。
パスベースの転送を設定した後、ヘルスチェックが失敗するのはなぜですか?
ヘルスチェックを実行する際、ロードバランサーは転送ルールを無視し、リスナーに設定されたヘルスチェックパス (デフォルトではルートパス) にリクエストを送信します。バックエンドサービスがリクエストパスに基づいて異なる応答を返す場合、デフォルトまたは一致しないパスに送信されたヘルスチェックは失敗する可能性があります。必要に応じて、各転送ルールにカスタムヘルスチェックパスを設定できます。
ドメインベースの転送ルールを使用すると追加料金が発生しますか?
ドメインベースの転送ルールの設定に料金は発生しません。ただし、内部向け CLB インスタンスに EIP を関連付けてインターネットに公開する場合は、パブリックネットワーク使用料が発生します。料金の詳細については、「CLB 料金の概要」をご参照ください。
転送ルールはリスナーごとに設定されますか?
はい。各リスナーの転送ルールは独立しており、個別に設定する必要があります。
関連ドキュメント
-
CLB インスタンスに複数の HTTPS ドメインを設定する必要がある場合は、「単一の CLB インスタンスに複数の HTTPS Web サイトを設定する」をご参照ください。
-
アプリケーションで HTTP を使用しており、より安全な HTTPS プロトコルに移行したい場合は、「CLB を使用して HTTP リクエストを HTTPS にリダイレクトする」をご参照ください。
-
CLB から ALB へスムーズに移行する必要がある場合は、「CLB から ALB へのレイヤー 7 リスナーのワンクリック移行」および「CLB から ALB へのレイヤー 7 リスナーの手動移行」をご参照ください。