タグベースルーティングは、トラフィックとノードにタグを付け、特定の特性を持つトラフィックを対応するタグを持つノードに転送する機能です。この方法は、ブルーグリーンデプロイメントやカナリアリリースなどの高度なデプロイ戦略の基盤となります。
前提条件
制限事項
この機能は MSE ガバナンスセンターで利用可能で、アプリケーションを接続する必要があります。
タグベースルーティングをサポートする Java のバージョンとフレームワークの一覧については、「マイクロサービスガバナンスがサポートする Java フレームワーク」をご参照ください。
ユースケース
複数バージョンでの開発とテスト
複数のアプリケーションバージョンを並行して開発するには、バージョンごとに個別の開発環境が必要となり、高いリソースコストが発生します。トラフィック分離戦略により、これらのコストを大幅に削減できます。タグベースルーティングに基づくエンドツーエンドのトラフィック分離を使用することで、特定のトラフィックを指定された開発環境に転送できます。たとえば、開発環境 1 では、アプリケーション B とアプリケーション D のバージョン V1.1 に Tag1 タグを適用し、対応するルーティングルールを設定できます。アプリケーション A がアプリケーション B を呼び出すと、システムはトラフィックがルーティングルールに一致するかどうかを確認します。一致する場合、トラフィックは開発環境 1 のアプリケーション B の V1.1 インスタンスにルーティングされます。それ以外の場合は、ベースライン環境の V1 インスタンスにルーティングされます。同様に、アプリケーション C がアプリケーション D を呼び出すと、トラフィックはトラフィックの特性に基づいて、アプリケーション D の V1 または V1.1 インスタンスのいずれかにルーティングされます。
複数バージョンでのトラフィック分離
アプリケーションの複数のバージョンが通常環境や特殊目的環境など、異なる環境でオンラインで実行されている場合、タグベースルーティングを使用してバージョン間のトラフィックを分離できます。たとえば、フラッシュセールや特定のチャネルからのトラフィックを特殊目的環境にルーティングし、通常のトラフィックを通常環境に転送することができます。これにより、特殊目的環境で障害が発生した場合でも、その環境向けのトラフィックが通常環境にルーティングされることはなく、通常環境への影響を防ぐことができます。
A/B テスト
複数のアプリケーションバージョンで A/B テストを実行するには、タグベースルーティングを使用してエンドツーエンドのトラフィック制御を行うことができます。たとえば、リージョン A からの顧客トラフィックを V1 バージョンに、リージョン B からのトラフィックを V1.1 バージョンにルーティングすることができます。異なるバージョンを検証することで、新製品や新機能のリリースに伴うリスクを軽減できます。
マイクロサービスガバナンスの有効化とタグの設定
このトピックでは、spring-cloud-a という名前のアプリケーションを例とします。tag1 と tag2 を適用して、2 つのアプリケーションインスタンスのグループを作成します。リクエストが設定した条件に一致する場合、指定したタグを持つインスタンスにルーティングされます。ルールに一致しない場合、トラフィックは設定されたトラフィック分散のパーセンテージに基づいてインスタンスに分散されます。
-
左側メニューで、[Clusters] を選択し、対象のクラスターの名前をクリックします。
-
左側メニューで、 を選択します。
-
[Create from Image] をクリックして、
spring-cloud-a-tag1とspring-cloud-a-tag2という名前の 2 つのDeploymentワークロードを作成します。詳細については、「ステートレスワークロード Deployment の作成」をご参照ください。パラメーター
説明
レプリカ
値を 1 に設定します。
[Type]
Deployment を選択します。
イメージ名
ご自身でビルドしたイメージを選択するか、ビルド済みのイメージ
registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-a:3.0.1を使用します。 -
次の手順に従って、
spring-cloud-a-tag1とspring-cloud-a-tag2をマイクロサービスガバナンスに接続し、タグを設定します。-
[Deployments] ページに戻ります。名前空間 を選択し、作成したアプリケーション (spring-cloud-a-tag1 と spring-cloud-a-tag2) を見つけます。操作 列で、もっと見る > [View in YAML] を選択します。
-
[Edit YAML] ダイアログボックスで、
spring-cloud-a-tag1とspring-cloud-a-tag2の両方をマイクロサービスガバナンスに接続するために、 の下に次のラベルを追加します。labels: msePilotAutoEnable: "on" msePilotCreateAppName: <your-app-name> alicloud.service.tag: <tag>説明-
<your-app-name>をマイクロサービスガバナンスにおけるアプリケーション名に置き換えます。この例では、名前はspring-cloud-aです。 -
<tag>をtag1またはtag2に置き換えます。
-
-
[Update] をクリックします。
-
タグベースルーティングルールの作成
-
MSE ガバナンスセンターコンソールにログインし、上部メニューでリージョンを選択します。
-
左側メニューで、マイクロサービス管理センター > アプリケーション管理 を選択します。
-
[Application list] ページで、目的のマイクロサービスの名前空間を選択し、ACK で作成したアプリケーション spring-cloud-a を検索して、その名前をクリックします。
-
左側メニューで [Traffic Management] をクリックし、[Tag-based Routing] タブをクリックして現在のルーティング設定を表示します。
-
[Tag-based Routing] リストで [Traffic Distribution] をクリックし、各タグのトラフィックのパーセンテージを設定して、保存 をクリックします。
たとえば、tag1 のトラフィックのパーセンテージを
100%に設定し、tag2 とタグなしインスタンスのパーセンテージを0%に設定します。 -
[Traffic Rules] で [Add] をクリックします。[Create Tag-based Routing] パネルでパラメーターを設定し、OK をクリックしてルーティングルールを作成します。
説明タグベースルーティングは、トラフィックルールで定義された条件を優先します。リクエストがトラフィックルールに一致する場合、対応するタグを持つ Pod にルーティングされます。それ以外の場合、リクエストは指定されたトラフィック分散のパーセンテージに基づいて Pod にルーティングされます。
パラメーター
説明
ルーティングルール名
タグベースルーティングルールの名前。例:
test-springcloud[アプリケーション]
アプリケーションの名前。例:
spring-cloud-a[タグ]
ACK でアプリケーションに設定したタグ。例:
tag2アプリケーションインスタンス
このタグを持つ
spring-cloud-aアプリケーションインスタンスの IP アドレスとポート。トラフィックルール
フレームワークタイプ
アプリケーションのフレームワーク ([Spring Cloud] または [Dubbo]) を選択します。
-
[Spring Cloud] の場合、
/getIpなどの URL パスのみ設定できます。 -
[Dubbo] の場合、サービスとインターフェースを選択できます。
条件モード
要件に応じて条件モード ([Meet all of the following conditions] または [Meet any of the conditions]) を選択します。
条件リスト
-
[フレームワークタイプ] が Spring Cloud の場合、[パラメーター]、[クッキー]、[ヘッダー]、または [ボディコンテンツ] に基づいて条件を設定できます。 たとえば、[パラメーター] 条件は
name=xiaoming、[クッキー] 条件はhello = "world" or "world2"のようになります。 -
[Framework Type] が [Dubbo] の場合、パラメーター値を取得するための式を指定する必要があります。
-
検証
ビジネス要件に基づいて結果を検証します。
-
トラフィックルールに一致しないリクエストは、設定されたトラフィック分散率に従い、100% が
tag1タグを持つインスタンスにルーティングされます。Atag1[192.168.0.122] -
ルールに一致するトラフィックは、対応するタグを持つノードにルーティングされます。
Atag2[192.168.0.156]
関連ドキュメント
エンドツーエンドカナリアリリースを実装する方法については、「エンドツーエンドカナリアリリース」をご参照ください。