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 が作成されていること。
Elastic Compute Service (ECS) インスタンス ECS01 と ECS02 がそれぞれ VSW1 と VSW2 に作成され、ECS01 と ECS02 にアプリケーションサービスがデプロイされていること。アプリケーションサービスが使用するポートへのリクエストは、ECS01 と ECS02 に指定されたセキュリティグループによって許可されていること。
次のサンプルコードは、この例で ECS01 と ECS02 にテスト用アプリケーションサービスをデプロイする方法を示しています。
「CLB vServer グループの作成と管理」に従って、CLB インスタンス用に 2 つの vServer グループ RS1 と RS2 が作成され、ECS01 が RS1 に、ECS02 が RS2 に追加されていること。vServer グループには、アプリケーションサービスと同じポート設定が適用されていること。この例では、NGINX サービスが使用するデフォルトのポートであるポート 80 が使用されます。
CLB インスタンスにHTTP リスナーまたはHTTPS リスナーが設定されていること。
Alibaba Cloud でドメイン名が登録され、そのドメイン名のインターネットコンテンツプロバイダー (ICP) 番号が取得されていること。
操作手順
ステップ 1:転送ルールの設定
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 インスタンスが内部向けで、EIP を CLB インスタンスに関連付けてネットワークタイプをインターネット向けに変更した場合、インターネットデータ転送料金が課金されます。具体的な課金情報については、「CLB の課金」をご参照ください。
関連ドキュメント
CLB インスタンスに複数の HTTPS ドメイン名を設定するには、「CLB インスタンスが HTTPS 経由で複数のドメイン名を提供するための設定」をご参照ください。
現在のアプリケーションシステムが HTTP プロトコルで通信しており、HTTPS プロトコルにスムーズに移行したい場合は、「CLB を使用して HTTP リクエストを HTTPS にリダイレクトする」をご参照ください。
CLB から ALB へのスムーズな移行については、「ウィザードを使用して CLB から ALB にレイヤー 7 リスナーを移行するためのガイド」および「CLB から ALB にレイヤー 7 リスナーを手動で移行するためのガイド」をご参照ください。