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ベースのルーティングメカニズムを使用することにより、クライアント要求は、必要なビジネスロジックを処理するマイクロサービスインスタンスに正確に配信されます。 例えば、電子商取引プラットフォームでは、ユーザ認証要求、注文処理要求、および支払い要求は、HTTP要求に含まれるURLに基づいて、認証サービス、注文サービス、および支払いサービスを提供する指定されたインスタンスにインテリジェントにルーティングされる。
読み書きリクエストの分離: 注文処理サービスなど、同時実行性が高く、データの一貫性が厳しいサービスの場合、読み書き分離戦略を使用して、サービスパフォーマンスとデータセキュリティを最適化できます。 読み取り操作と書き込み操作は、異なるデータベースインスタンスまたはクラスターによって処理されます。 読み取り操作は読み取りデータベースにルーティングされ、書き込み操作は書き込みデータベースに向けられます。
マルチテナンシー: マルチテナントアプリケーションの場合、異なるテナントのサービスの分離とパーソナライズを実現するには、テナントに独立した環境を提供する必要があります。 たとえば、テナント固有のサブドメイン名を作成して、異なるテナントのサービスエンドポイントを区別します。 さらに、異なるURLを使用して、異なるサービス機能のエンドポイントを区別することができます。 これにより、各テナントのデータセキュリティとプライバシーが保証されるだけでなく、各テナントがカスタマイズされたユーザーエクスペリエンスとインターフェイスを楽しむことができます。
制限事項
レイヤー7 HTTPまたはHTTPSリスナーのみが転送ルールをサポートしています。
転送ルールで指定するバックエンドサーバーグループは、vServerグループである必要があります。
HTTPまたはHTTPSリスナーに対して設定できるドメイン名ベースおよびURLベースの転送ルールの数は40を超えることはできません。 詳細については、「制限事項」をご参照ください。
シナリオの例
教育プラットフォームは、単一のドメイン名を通じて、ビデオコースやオンライン質問ライブラリなど、多様なオンライン学習サービスを提供したいと考えています。 ビデオサービスには高帯域幅とメディア処理機能が必要ですが、質問ライブラリサービスには集中的なコンピューティングと短い応答時間が必要です。 当初、すべてのサービスが単一のサーバーグループに展開されていたため、リソースの割り当てが不均一になり、ビデオ検索のピーク期間中の質問ライブラリのアクセス速度に影響を与え、ユーザーエクスペリエンスが損なわれました。 特にユーザトラフィックが急増すると、サーバの負荷が高すぎて安定したサービス運用ができなくなります。
このシナリオでは、プラットフォームはAlibaba Cloud CLBを使用し、同じドメイン名でURLが異なるリクエストに対してトラフィック転送ルールを設定します。 次の図に示すように、/video/ URLのリクエストはビデオサーバーグループRS1に転送され、ビデオサービスに十分な帯域幅と処理機能が備えられています。 /exam/ URLに対する要求は、質問ライブラリサーバグループRS2に転送され、クエリおよび提出に対する短い応答時間のためにコンピューティングリソースを最適化する。 このソリューションを使用して、plarformは正確なルーティングを実現し、各サービスが効率的かつ独立して実行されることを保証します。
前提条件
中国 (上海) リージョンで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です。
ドメイン名がAlibaba Cloudに登録され、ドメイン名のインターネットコンテンツプロバイダ (ICP) 番号が取得されます。
手順
手順1: 転送ルールの設定
CLBコンソールにログインします。
上部のナビゲーションバーで、CLBインスタンスが属するリージョンを選択します。
[インスタンス] ページで、管理するCLBインスタンスのIDをクリックします。
[リスナー] タブをクリックし、管理するリスナーを見つけてから、[操作] 列の [転送ルールの設定] をクリックします。
[転送ポリシーの追加] パネルで、次のようにパラメーターを設定し、[転送ポリシーの追加] をクリックします。
ドメイン名: 登録したカスタムドメイン名を入力し、ICP番号を取得します。
URL: リクエストの転送元のURLを指定します。
説明リクエストの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) を関連付けてから、インターネットアクセス用にドメイン名をEIPにマップするAレコードを作成する必要があります。
左側のナビゲーションウィンドウで、
を選択します。[インスタンス] ページで、管理するCLBインスタンスを見つけ、CLBインスタンスのエンドポイントをコピーします。
Aレコードを作成するには、次の手順を実行します。
Alibaba Cloud DNS コンソールにログインします。
[権限のあるDNS解決] ページで、管理するドメイン名を見つけ、[操作] 列の [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ドメイン名を設定するには、「HTTPS経由で複数のドメイン名を提供するようにCLBインスタンスを設定する」をご参照ください。
現在のアプリケーションシステムが通信にHTTPプロトコルを使用しており、HTTPSプロトコルにスムーズに移行する場合は、「CLBを使用してHTTPからHTTPSにリクエストをリダイレクトする」をご参照ください。
CLBからALBへのスムーズな移行を行うには、「ウィザードを使用してレイヤー7リスナーをCLBからALBに移行するためのベストプラクティス」および「レイヤー7リスナーをCLBからALBに手動で移行するためのベストプラクティス」をご参照ください。