Classic Load Balancer (CLB) は、デフォルトでは、リスナーがチェックするすべてのリクエストを、そのリスナーに関連付けられたバックエンドサーバーグループに転送します。この場合、リソース割り当ての不均衡、パフォーマンスの低下、運用保守の複雑化につながる可能性があります。特に、このデフォルト設定では、ますます多様化するビジネスニーズに対応できません。CLB リスナーに転送ルールを設定することで、トラフィックを異なるバックエンドサーバーグループに転送できます。これにより、きめ細かなトラフィック管理とサービス分離が可能になり、リソース使用率の向上、サービスの安定性確保、ユーザーエクスペリエンスの最適化が実現します。
機能概要
CLB リスナーの転送ポリシーを使用すると、ドメイン名と URL パスに基づいて、受信クライアントリクエストを異なるバックエンドサーバーに正確に分散させ、効率的かつ合理的なトラフィック分散を実現できます。
CLB は、リスナーに対してドメイン名ベースおよび URL ベースの転送ルールの設定をサポートしています。転送ルールを設定することで、クライアントリクエストを異なるバックエンドサーバーグループに正確に転送できます。これにより、サーバーリソース間のロードバランシングを最適化できます。
主な機能
ドメイン名ベースの転送ルール
マッチングモード:CLB は、完全一致とワイルドカードパターンマッチング (単一ワイルドカードと複数ワイルドカードを含む) をサポートしています。たとえば、
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 ベースの転送ルール
マッチングロジック:リクエストが複数のワイルドカードドメイン名に一致する場合、最長プレフィックスを持つ一致が他のすべての一致よりも優先されます。たとえば、/abc と /abcd の両方へのリクエストを転送するルールが設定されている場合、/abcde へのリクエストは /abcd のルールに適用されます。
ルールの組み合わせ:リスナーに複数のポリシーを設定して、同一ドメイン名で URL が異なるリクエストを異なるバックエンドサーバーグループに転送できます。これにより、複雑なトラフィック分散が実現します。たとえば、読み取りリクエストと書き込みリクエストを異なるサーバーグループに転送できます。
仕組み
リスナーには複数の転送ルールを設定でき、各ルールは異なる vServer グループをリスナーに関連付けます。次の図は、マッチングの優先順位を示しています。転送ルールが設定されていない場合、CLB はリクエストをリスナーに関連付けられたデフォルトサーバーグループに転送します。特定の転送ルールが利用可能な場合、CLB はまずすべてのルールの中からドメイン名ベースおよび URL ベースのルールをチェックします。一致が見つかった場合、リクエストはルールで指定されたリスナーに関連付けられたサーバーグループに転送されます。一致が見つからない場合、リクエストはリスナーに関連付けられたデフォルトサーバーグループに転送されます。
利用シーン
マイクロサービスモデル:マイクロサービスアーキテクチャでは、アプリケーションは複数の独立したマイクロサービスで構成され、それぞれが異なるインスタンスやコンテナーにデプロイされます。これらのマイクロサービスは連携して、完全なアプリケーション機能を提供します。インテリジェントな URL ベースのルーティングメカニズムを使用することで、クライアントリクエストは、必要なビジネスロジックを処理するマイクロサービスインスタンスに正確に分散されます。たとえば、e コマースプラットフォームでは、ユーザー認証リクエスト、注文処理リクエスト、支払いリクエストは、HTTP リクエストに含まれる URL に基づいて、認証サービス、注文サービス、支払いサービスを提供する指定されたインスタンスにインテリジェントにルーティングされます。
読み取り/書き込みリクエストの分離:注文処理サービスなど、高い同時実行性と厳格なデータ整合性が要求されるサービスでは、読み取り/書き込み分離戦略を使用して、サービスのパフォーマンスとデータセキュリティを最適化できます。読み取り操作と書き込み操作は、異なるデータベースインスタンスまたはクラスターによって処理されます。読み取り操作は読み取りデータベースにルーティングされ、書き込み操作は書き込みデータベースに転送されます。
マルチテナンシー:マルチテナントアプリケーションでは、異なるテナントのサービス分離とパーソナライゼーションを実現するために、テナントごとに独立した環境を提供する必要があります。たとえば、テナント固有のサブドメインを作成して、異なるテナントのサービスエンドポイントを区別します。さらに、異なる URL を使用して、異なるサービス機能のエンドポイントを区別できます。これにより、各テナントのデータセキュリティとプライバシーが確保されるだけでなく、各テナントがカスタマイズされたユーザーエクスペリエンスとインターフェイスを享受できるようになります。
制限事項
転送ルールは、レイヤー 7 の HTTP または HTTPS リスナーのみをサポートします。
転送ルールで指定されるバックエンドサーバーグループは、vServer グループである必要があります。
HTTP または HTTPS リスナーに設定できるドメイン名ベースおよび URL ベースの転送ルールの数は 40 を超えることはできません。詳細については、「制限事項」をご参照ください。
シナリオ例
ある教育プラットフォームは、単一のドメイン名を通じて、ビデオコースやオンライン質問ライブラリなど、多様なオンライン学習サービスを提供したいと考えています。ビデオサービスには高い帯域幅とメディア処理能力が必要ですが、質問ライブラリサービスには集中的な計算と短い応答時間が必要です。当初、すべてのサービスは単一のサーバーグループにデプロイされていたため、リソース割り当てが不均一になり、ビデオコースのピーク時に質問ライブラリのアクセス速度に影響を与え、ユーザーエクスペリエンスを損なっていました。特に、ユーザートラフィックが急増すると、サーバーの負荷が高すぎて安定したサービス運用を保証できませんでした。
このシナリオでは、プラットフォームは Alibaba Cloud CLB を使用し、同一ドメイン名で URL が異なるリクエストに対してトラフィック転送ルールを設定します。次の図に示すように、/video/ URL へのリクエストはビデオサーバーグループ RS1 に転送され、ビデオサービスに十分な帯域幅と処理能力が確保されます。/exam/ URL へのリクエストは質問ライブラリサーバーグループ RS2 に転送され、クエリや送信に対する短い応答時間のために計算リソースが最適化されます。このソリューションを使用することで、プラットフォームは正確なルーティングを実現し、各サービスが効率的かつ独立して実行されることを保証します。
前提条件
中国 (上海) リージョンに VPC1 という名前の仮想プライベートネットワーク (VPC) が作成され、ゾーン E とゾーン G にそれぞれ vSwitch VSW1 と VSW2 が作成されていること。
VSW1 と VSW2 にそれぞれ Elastic Compute Service (ECS) インスタンス ECS01 と ECS02 が作成され、ECS01 と ECS02 にアプリケーションサービスがデプロイされていること。ECS01 と ECS02 に指定されたセキュリティグループによって、アプリケーションサービスが使用するポートへのリクエストが許可されていること。
次のサンプルコードは、この例で ECS01 と ECS02 にテストアプリケーションサービスをデプロイする方法を示しています。
「CLB vServer グループの作成と管理」に従って、ご利用の CLB インスタンス用に 2 つの vServer グループ RS1 と RS2 が作成され、ECS01 が RS1 に、ECS02 が RS2 に追加されていること。vServer グループには、アプリケーションサービスと同じポート設定が適用されます。この例では、NGINX サービスが使用するデフォルトのポートであるポート 80 が使用されます。
HTTP リスナーまたはHTTPS リスナーがご利用の CLB インスタンスに設定されていること。
Alibaba Cloud でドメイン名が登録され、そのドメイン名の ICP 番号が取得されていること。
操作手順
ステップ 1:転送ルールの設定
Log on to the CLB コンソールにログインします。
上部のナビゲーションバーで、ご利用の CLB インスタンスが属するリージョンを選択します。
[インスタンス] ページで、管理する CLB インスタンスの ID をクリックします。
[リスナー] タブをクリックし、管理するリスナーを見つけて、[操作] 列の [転送ルールの設定] をクリックします。
[転送ポリシーの追加] パネルで、以下のようにパラメーターを設定し、[転送ポリシーの追加] をクリックします。

[ドメイン名]:登録済みで ICP 番号を取得したカスタムドメイン名を入力します。
[URL]:リクエストを転送する元の URL を指定します。
転送ルールのパス設定では大文字と小文字が区別されます。たとえば、
/videoと/viDeoは 2 つの異なるディレクトリと見なされ、それぞれへのトラフィックを管理するために個別の転送ルールが必要です。
説明リクエストの URL に特殊文字が含まれている場合は、URL エスケープコードを使用して特殊文字を変換する必要があります。たとえば、リクエストの URL に番号記号 (#) が含まれている場合、番号記号をエスケープコード (%23) に変換する必要があります。これにより、システムはリクエストの URL を URL ベースの転送ルールと照合できます。
ステップ 2:ヘルスチェックの設定
デフォルトでは、CLB がバックエンドサーバーで HTTP ヘルスチェックを実行する際、CLB はバックエンドサーバーで設定されたデフォルトのホームページに HTTP リクエストを送信します。ヘルスチェックにデフォルトのホームページを使用したくない場合は、URL を指定できます。
[インスタンス] ページで、管理する CLB インスタンスの ID をクリックします。
[リスナー] タブで、管理するリスナーを見つけ、[操作] 列の [転送ルールの設定] をクリックします。
[転送ポリシーの追加] パネルの [転送ルール] エリアで、管理する転送ルールを見つけ、[変更] をクリックします。管理するすべての転送ルールに対して、ステップ 3 から 4 を繰り返します。

[転送ルールの変更] パネルで、[詳細設定] と [ヘルスチェック] を有効にし、[ヘルスチェックパス] パラメーターを設定します。転送ルールに設定された URL (たとえば、次の図に示すように /video) に設定できます。

ステップ 3:DNS レコードの作成
Alibaba Cloud で登録されていないドメインの場合、DNS レコードを作成する前に、まずドメイン名を Alibaba Cloud DNS に追加する必要があります。
ご利用の CLB インスタンスが内部向けの場合、まず Elastic IP アドレス (EIP) を関連付けてから、A レコードを作成してドメイン名を EIP にマッピングし、インターネットアクセスを可能にする必要があります。
左側のナビゲーションウィンドウで、 を選択します。
[インスタンス] ページで、管理する CLB インスタンスを見つけ、CLB インスタンスの [エンドポイント] をコピーします。
次の手順を実行して、A レコードを作成します。
Alibaba Cloud DNS コンソールにログインします。
[パブリック権威 DNS 解決] ページで、管理するドメイン名を見つけ、[操作] 列の [DNS 設定] をクリックします。
[DNS 設定] タブで、[レコードの追加] をクリックします。
[レコードの追加] パネルで、次のパラメーターを設定し、他のすべてのパラメーターはデフォルト値を使用するか、実際の状況に基づいて設定し、[OK] をクリックします。
パラメーター
説明
レコードタイプ
ドロップダウンリストから [A] を選択します。
ホスト名
ドメイン名のプレフィックスです。この例では、www と入力します。
説明ルートドメイン名を使用する場合は、@ を入力します。
レコード値
ドメイン名に対応する A アドレスを入力します。この例では、ご利用の CLB インスタンスの IP アドレスを使用します。
ステップ 4:ネットワーク接続のテスト
ブラウザを使用して http://<ドメイン名>/<URL>/ にアクセスし、応答結果を表示して、リクエストが指定されたサーバーグループにルーティングされているかどうかを確認します。
http://www.***-example.com/video/ でビデオサービスにアクセスし、リクエストがビデオサービスを提供する vServer グループ RS1 にルーティングされているかどうかを確認します。

http://www.***-example.com/exam/で質問ライブラリサービスにアクセスし、リクエストが質問ライブラリサービスを提供する vServer グループ RS2 にルーティングされているかどうかを確認します。
関連する質問
同一ドメイン名で URL が異なるリクエストに対する CLB の転送ルールは、URL リダイレクトをサポートしていますか。
いいえ、サポートしていません。CLB の転送ルールはトラフィック転送に重点を置いています。URL リダイレクトを含む転送ルールを設定したい場合は、Application Load Balancer (ALB) の利用をご検討ください。詳細については、「リスナー転送ルールの設定」をご参照ください。
異なる URL の転送ルールを設定した後、なぜバックエンドサーバーグループが異常と宣言されるのですか。
CLB は、転送ポリシーに設定された URL ではなく、リスナーに設定されたヘルスチェックパス (デフォルトではルートパス) に従ってヘルスチェックを実行します。同一ドメイン名で URL が異なるリクエストに対して転送ルールを設定したが、リスナーのヘルスチェックパスを変更していない場合、バックエンドサーバーグループが予期せず異常と宣言されることがあります。転送ルールで必要に応じてヘルスチェックパスを変更する必要があります。
ドメイン名ベースの転送ルールに課金されますか。
いいえ、課金されません。ご利用の CLB インスタンスが内部向けで、CLB インスタンスに EIP を関連付けてネットワークタイプをインターネット向けに変更した場合、インターネットデータ転送に対して課金されます。具体的な課金情報については、「CLB の課金」をご参照ください。
関連ドキュメント
CLB インスタンスに複数の HTTPS ドメイン名を設定するには、「CLB インスタンスが HTTPS 経由で複数のドメイン名を提供するための設定」をご参照ください。
現在のアプリケーションシステムが HTTP プロトコルを使用して通信しており、HTTPS プロトコルにスムーズに移行したい場合は、「CLB を使用して HTTP から HTTPS へのリクエストをリダイレクトする」をご参照ください。
CLB から ALB へのスムーズな移行については、「CLB レイヤー 7 リスナーの ALB へのワンクリック移行」および「レイヤー 7 リスナーの CLB から ALB への手動移行」をご参照ください。