Traffic Director のロード バランシング

Traffic Director は、サイドカー プロキシまたはプロキシレス gRPC を使用して、内部マイクロサービスのグローバルなロード バランシングを実現します。インスタンスを持つ内部マイクロサービス(サイドカー プロキシベースまたはプロキシレス gRPC ベース)を複数のリージョンにデプロイできます。Traffic Director は、サイドカー プロキシまたはプロキシレス gRPC にヘルス、ルーティング、バックエンドの情報を提供し、サービスの複数のクラウド リージョンに存在するアプリケーション インスタンスに最適なトラフィック ルーティングを実行できるようにします。

次の図では、ユーザー トラフィックは外部のグローバル ロードバランサを介して Google Cloud デプロイに入ります。外部ロードバランサは、エンドユーザーのロケーションに応じて、us-central1 または asia-southeast1 のいずれかでフロントエンド マイクロサービスにトラフィックを分散します。

内部デプロイは、Frontend、Shopping Cart、Payments という 3 つのグローバル マイクロサービスを備えています。各サービスは、us-central1asia-southeast1 の 2 つのリージョンのマネージド インスタンス グループ(MIG)で実行されます。Traffic Director はグローバル負荷分散アルゴリズムを使用して、カリフォルニア州のユーザーから us-central1 にデプロイされたマイクロサービスにトラフィックを転送します。シンガポールのユーザーからのリクエストは、asia-southeast1 のマイクロサービスに転送されます。

受信したユーザー リクエストは Frontend マイクロサービスにルーティングされます。その後 Frontend とともにホストにインストールされているサービス プロキシが、トラフィックを Shopping Cart に転送します。Shopping Cart とともにホストにインストールされているサイドカー プロキシが、トラフィックを Payments マイクロサービスに転送します。プロキシレス gRPC 環境では、gRPC アプリケーションがトラフィック管理を処理します。

グローバルな負荷分散のデプロイにおける Traffic Director。
グローバルな負荷分散のデプロイにおける Traffic Director(クリックして拡大)

次の例では、us-central1 で Shopping Cart マイクロサービスを実行している仮想マシン(VM)インスタンスが異常であることを示すヘルスチェック結果を受け取った場合、Traffic Director はフロントエンド マイクロサービスのサイドカー プロキシに、asia-southeast1 で実行中の Shopping Cart マイクロサービスにトラフィックをフェイルオーバーするよう指示します。自動スケーリングが Google Cloud のトラフィック管理と統合されているため、Traffic Director は追加のトラフィックの asia-southeast1 に存在する MIG に通知し、その結果、MIG のサイズが増大します。

Traffic Director は、Payments マイクロサービスのすべてのバックエンドが正常であることを検出すると、Shopping Cart の Envoy プロキシに対して、お客様の構成済み容量以内の範囲でトラフィックの一部を asia-southeast1 に送信し、残りを us-central1 にオーバーフローさせるよう指示します。

グローバルな負荷分散のデプロイにおける Traffic Director を使用したフェイルオーバー。
グローバルな負荷分散のデプロイにおける Traffic Director を使用したフェイルオーバー(クリックして拡大)

Traffic Director の負荷分散コンポーネント

Traffic Director のセットアップ中に、いくつかのロード バランシング コンポーネントを構成します。

  • バックエンド サービス。構成値が含まれます。
  • ヘルスチェック。デプロイ内の VM と Google Kubernetes Engine(GKE)Pod のヘルスチェックを行います。
  • サービス ルーティング API を使用する場合、Mesh または Gateway リソースと、Route リソース。
  • ロード バランシング API を使用する場合、VIP アドレス、ターゲット プロキシ、URL マップを含むグローバル転送ルール。

xDS API 互換サイドカー プロキシ(Envoy など)は、クライアント VM インスタンスまたは Kubernetes Pod で実行されます。Traffic Director はコントロール プレーンとして機能し、xDS API を使用して各プロキシと直接通信します。データプレーンでは、アプリケーションは転送ルールまたは Mesh リソースで構成された VIP アドレスにトラフィックを送信します。サイドカー プロキシまたは gRPC アプリケーションがトラフィックを傍受し、適切なバックエンドにリダイレクトします。

次の図は、Compute Engine VM または GKE Pod で実行されているアプリケーション、Traffic Director のデプロイにおけるコンポーネントとトラフィック フローを示しています。この図は Traffic Director と、トラフィック ルーティングを決定する際に使用される Cloud Load Balancing リソースを示しています。この図は、古いロード バランシング API を示しています。

構成する Traffic Director のリソース。
構成する Traffic Director のリソース(クリックして拡大)

次のステップ