Traffic Director の負荷分散

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

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

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

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

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

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

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

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

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

Traffic Director のセットアップ中に、いくつかの負荷分散コンポーネントを構成します。

  • VIP アドレス、ターゲット プロキシ、URL マップを含むグローバル転送ルール。これらはすべて Traffic Director のトラフィック ルーティング メカニズムの一部です。ターゲット プロキシはターゲット HTTP プロキシであることが必要です。
  • バックエンド サービス。構成値が含まれます。
  • ヘルスチェック。デプロイ内の VM とポッドのヘルスチェックを行います。

次の図は、Compute Engine VM または Google Kubernetes Engine のポッドで実行されているアプリケーション、Traffic Director のデプロイにおけるコンポーネントとトラフィックフローを示しています。

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

この図は Traffic Director と、トラフィック ルーティングを決定するために使用するGoogle Cloud 負荷分散リソースを示しています。xDS API 互換サイドカー プロキシ(上記の Envoy など)は、クライアント VM インスタンスまたは Kubernetes ポッドで実行されます。Traffic Director はコントロール プレーンとして機能し、xDS API を使用して各プロキシと直接通信します。データプレーンでは、アプリケーションは Google Cloud 転送ルールで構成された VIP アドレスにトラフィックを送信します。トラフィックはサイドカー プロキシによってインターセプトされ、適切なバックエンド サービスにリダイレクトされます。サービス ディスカバリとトラフィック インターセプトの詳細については、Traffic Director のサービス ディスカバリをご覧ください。