マイクロサービスがサービスメッシュを介して通信する場合、不健全なサービス、レイテンシーのボトルネック、予期しないトラフィックパターンを特定するには、すべてのサービス間の接続を可視化する必要があります。メッシュトポロジーは、ご利用の Service Mesh (ASM) インスタンスにおけるすべてのサービス通信のリアルタイムでインタラクティブなグラフを提供します。これは、Envoy サイドカープロキシから受動的に収集され、コード変更や手動でのインストルメンテーションは不要です。
仕組み
ASM は、すべてのワークロードにアタッチされたサイドカープロキシからテレメトリデータを収集します。メッシュトポロジーは、このテレメトリをインタラクティブなグラフに集約し、以下を表示します。
サービス依存関係 -- どのサービスがどのサービスをどの方向に呼び出すか
トラフィックの健全性 -- エッジごとの成功率とエラー率
レイテンシー -- サービス間のリクエスト期間
トラフィック量 -- 各接続でのトラフィックフロー
詳細については、「可観測性管理」をご参照ください。
前提条件
開始する前に、以下を確認してください。
V1.15.3.120 以降の ASM インスタンスと、インスタンスに追加済みの Container Service for Kubernetes (ACK) クラスター
説明ASM インスタンスが V1.15.3.120 以前の場合は、代わりに「可観測性を向上させるためのメッシュトポロジーの有効化」の手順に従ってください。アップグレードするには、「ASM インスタンスの更新」をご参照ください。
メトリック収集のために ACK クラスターと統合された Prometheus インスタンス -- Managed Service for Prometheus または セルフマネージド Prometheus インスタンスのいずれか
イングレスゲートウェイ経由でアクセス可能な Bookinfo アプリケーション用に構成されたルーティングルール。セットアップ手順については、「Istio リソースを使用してトラフィックをサービスの異なるバージョンにルーティングする」をご参照ください。
メッシュトポロジーの有効化
ASM コンソールにログインします。左側のナビゲーションウィンドウで、を選択します。
メッシュ管理ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、を選択します。
ASM メッシュトポロジーの有効化セクションで、ASM バージョンに基づいて機能を有効化します。
ASM バージョン 操作 V1.18.2.112 より前 [有効化] をクリックします。 V1.18.2.112 以降 デプロイモードを選択し(下記参照)、[有効化] をクリックします。 デプロイモード (V1.18.2.112 以降):
モード 説明 使用場面 Kubernetes クラスター内モード メッシュトポロジーは ACK クラスター内で実行されます。ご利用の Prometheus インスタンスの HTTP API URL を入力し、[有効にする] をクリックします。 単一クラスターデプロイメント マネージドモード メッシュトポロジーはマネージドサービスとして実行されます。[マネージドモード] をクリックし、[有効にする] をクリックします。ダイアログボックスで必須パラメーターを設定し、[OK] をクリックします。 単一トポロジービューが必要なマルチクラスターデプロイメント これら 2 つのモードの比較については、「マネージドモードでのメッシュトポロジーの有効化」をご参照ください。
メッシュトポロジーコンソールへのアクセス
ASM コンソールで、に移動し、ご利用の ASM インスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、を選択します。
アクセスセクションで、メッシュトポロジー UI を公開するためにクラシックロードバランサー (CLB) インスタンスを作成します。
ASM バージョン アクション V1.17.2.19 以前 「ASM メッシュトポロジにアクセスするためのインターネット向け CLB インスタンスを自動的に作成」をオンにして、[OK] をクリックします。 V1.17.2.19 以降 [ASM メッシュトポロジにアクセスするための CLB インスタンスを作成] をオンにし、ダイアログボックスでパラメーターを設定して、[OK] をクリックします。 ASM インスタンスの更新完了を待ちます。
左側のナビゲーションウィンドウで、を選択します。
基本情報セクションで、ステータスフィールドを確認します。更新中は、インスタンスがまだ更新中であることを意味します。ステータスが 実行中に変更されたら続行します。
「」に戻り、[トークンをコピーして新しいウィンドウで開く] をクリックします。
Mesh Topology ログインページで、トークンを貼り付け、[ログイン] をクリックします。
アプリケーションのトポロジーの表示
トラフィックの生成
ブラウザで、Bookinfo アプリケーションにアクセスします。
http://<ingress-gateway-ip>/productpage<ingress-gateway-ip> をご利用のイングレスゲートウェイの IP アドレスに置き換えます。このアドレスを見つけるには、「ASM で Knative を使用してサーバーレスアプリケーションをデプロイする」の「ステップ 3: ゲートウェイアドレスのクエリ」をご参照ください。
メッシュトポロジーが可視化できるトラフィックを生成するために、ページを数回更新します。
グラフタイプの選択
Mesh Topology コンソールで、[名前空間] ドロップダウンリストから [デフォルト] を選択します。 次に、[Versioned App グラフ] ドロップダウンリストからグラフタイプを選択します:
| グラフタイプ | 表示内容 |
|---|---|
| ワークロードグラフ | ワークロード間の呼び出し関係とトラフィックフロー |
| アプリケーショングラフ | アプリケーション間の呼び出し関係とトラフィックフロー |
| バージョン管理されたアプリケーショングラフ | アプリケーションバージョン間の呼び出し関係とトラフィックフロー |
| サービスグラフ | サービス間の呼び出し関係とトラフィックフロー |

ワークロードの検査
トポロジーグラフ内のノード (例: reviews-v2) をクリックして、サイドパネルを開きます。パネルには以下が表示されます。
ワークロードの実行ステータス
インバウンドトラフィック -- 受信リクエストの詳細
アウトバウンドトラフィック -- 送信リクエストの詳細

次のステップ
レイテンシーのトラブルシューティング: トポロジーで高レイテンシーのエッジを発見した場合は、アクセスログを使用してルート原因を特定します。「ASM でアクセスログを使用して高レスポンスレイテンシーの原因を特定する」をご参照ください。
ゾーンアウェアルーティングによるレイテンシーの削減: サービス呼び出しのレイテンシーを低減するために、最初に同じアベイラビリティーゾーン内のサービスにトラフィックをルーティングします。「ASM インスタンスのトポロジーでゾーンアウェアルーティング機能を検証する」をご参照ください。
複数クラスターへのスケーリング: マネージドモードに切り替えることで、クラスター間のトラフィックトポロジーをモニターします。これは、ASM インスタンス全体に対する単一のメッシュトポロジーデプロイメントです。「マネージドモードでのメッシュトポロジーの有効化」をご参照ください。
診断の実行: データプレーンのバージョン、サービスポート、およびサービス関連付けを確認して、構成の問題を早期に検出します。「ASM インスタンスの診断」をご参照ください。