Cloud Service Mesh のロード バランシング
Cloud Service Mesh は、サイドカー プロキシまたはプロキシレス gRPC を使用して、内部マイクロサービスのグローバルなロード バランシングを実現します。インスタンスを持つ内部マイクロサービス(サイドカー プロキシベースまたはプロキシレス gRPC ベース)を複数のリージョンにデプロイできます。Cloud Service Mesh は、サイドカー プロキシまたはプロキシレス gRPC にヘルス、ルーティング、バックエンドの情報を提供し、サービスの複数のクラウド リージョンに存在するアプリケーション インスタンスに最適なトラフィック ルーティングを実行できるようにします。
次の図では、ユーザー トラフィックは外部のグローバル ロードバランサを介して Google Cloud デプロイに入ります。外部ロードバランサは、エンドユーザーの場所に応じて、us-central1
または asia-southeast1
のいずれかでフロントエンド マイクロサービスにトラフィックを分散します。
内部デプロイは、Frontend、Shopping Cart、Payments という 3 つのグローバル マイクロサービスを備えています。各サービスは、us-central1
と asia-southeast1
の 2 つのリージョンのマネージド インスタンス グループ(MIG)で実行されます。Cloud Service Mesh はグローバル ロード バランシング アルゴリズムを使用して、カリフォルニア州のユーザーから us-central1
にデプロイされたマイクロサービスにトラフィックを転送します。シンガポールのユーザーからのリクエストは、asia-southeast1
のマイクロサービスに転送されます。
受信したユーザー リクエストは Frontend マイクロサービスにルーティングされます。その後 Frontend とともにホストにインストールされているサービス プロキシが、トラフィックを Shopping Cart に転送します。Shopping Cart とともにホストにインストールされているサイドカー プロキシが、トラフィックを Payments マイクロサービスに転送します。プロキシレス gRPC 環境では、gRPC アプリケーションがトラフィック管理を処理します。
次の例では、us-central1
で Shopping Cart マイクロサービスを実行している仮想マシン(VM)インスタンスが異常であることを示すヘルスチェック結果を受け取った場合、Cloud Service Mesh はフロントエンド マイクロサービスのサイドカー プロキシに、asia-southeast1
で実行中の Shopping Cart マイクロサービスにトラフィックをフェイルオーバーするよう指示します。自動スケーリングが Google Cloud のトラフィック管理と統合されているため、Cloud Service Mesh は追加のトラフィックの asia-southeast1
に存在する MIG に通知し、その結果、MIG のサイズが増大します。
Cloud Service Mesh は、Payments マイクロサービスのすべてのバックエンドが正常であることを検出すると、Shopping Cart の Envoy プロキシに対して、お客様の構成済み容量以内の範囲でトラフィックの一部を asia-southeast1
に送信し、残りを us-central1
にオーバーフローさせるよう指示します。
Cloud Service Mesh のロード バランシング コンポーネント
Cloud Service Mesh の設定中に、いくつかのロード バランシング コンポーネントを構成します。
- バックエンド サービス。構成値が含まれます。
- ヘルスチェック。デプロイ内の VM と Google Kubernetes Engine(GKE)Pod のヘルスチェックを行います。
- サービス ルーティング API を使用する場合、
Mesh
またはGateway
リソースと、Route
リソース。 - ロード バランシング API を使用する場合、VIP アドレス、ターゲット プロキシ、URL マップを含むグローバル転送ルール。
xDS API 互換サイドカー プロキシ(Envoy など)は、クライアント VM インスタンスまたは Kubernetes Pod で実行されます。Cloud Service Mesh はコントロール プレーンとして機能し、xDS API を使用して各プロキシと直接通信します。データプレーンでは、アプリケーションは転送ルールまたは Mesh
リソースで構成された VIP アドレスにトラフィックを送信します。サイドカー プロキシまたは gRPC アプリケーションがトラフィックを傍受し、適切なバックエンドにリダイレクトします。
次の図は、Compute Engine VM または GKE Pod で実行されているアプリケーション、Cloud Service Mesh のデプロイにおけるコンポーネントとトラフィック フローを示しています。この図は Cloud Service Mesh と、トラフィック ルーティングを決定する際に使用される Cloud Load Balancing リソースを示しています。この図は、古いロード バランシング API を示しています。
次のステップ
- 高度なロード バランシング機能の構成の詳細については、高度なロード バランシングの概要をご覧ください。
- サービス ディスカバリとトラフィック インターセプトの詳細については、Cloud Service Mesh サービス ディスカバリをご覧ください。
- サービス ルーティング API を使用した Cloud Service Mesh の詳細については、概要をご覧ください。