ルーティング ルール マップの概要
このドキュメントでは、ルーティング ルール マップと、以前の API を使用する Traffic Director のデプロイでトラフィックを管理する方法について説明します。プレビュー版の新しいサービス ルーティング API を使用している場合は、新しいサービス ルーティング API の概要をご覧ください。
ルーティング ルール マップは、次の要素から構成されます。
- ターゲット プロキシを参照する転送ルール
- URL マップを参照するターゲット プロキシ
- さまざまなルーティング ルールを含む URL マップ
このリソースを Traffic Director 用に作成または構成すると、Traffic Director はその値を使用して、データプレーンに送信する構成を作成します。この構成には、Envoy プロキシやプロキシレス gRPC アプリケーションなどの xDS クライアントが含まれます。データプレーンは、この構成に従ってトラフィックを処理します。
転送ルールはターゲット プロキシを参照します。ルールには、IP アドレスとポートがあります。Traffic Director のデプロイでは、転送ルールの負荷分散スキームを INTERNAL_SELF_MANAGED
に設定する必要があります。ターゲット プロキシは、URL マップを参照します。これら 3 つのリソースを組み合わせてルーティング ルール マップを作成します。
転送ルールで、validateForProxyless
フィールドが TRUE
に設定されているターゲット gRPC プロキシを参照する場合は、IP アドレスを 0.0.0.0
に設定する必要があります。validateForProxyless
が TRUE
に設定されている場合、0.0.0.0
以外の IP アドレスを指定する構成は拒否されます。
ルーティング ルール マップは、サービス メッシュ内でクライアントからサーバーにトラフィックを転送する方法を定義します。
サポートされているターゲット プロキシのタイプ
Traffic Director は、次のターゲット プロキシ タイプをサポートしています。
- ターゲット HTTP プロキシ。クライアントとサーバーが HTTP または HTTP/2 の送受信を行うときに構成します。
- ターゲット HTTPS プロキシ。クライアントとサーバーが HTTPS トラフィックの送受信を行うときに構成します。これは、Envoy プロキシでサービスのセキュリティを設定するときに必要です。
- ターゲット TCP プロキシ。クライアントとサーバーが TCP トラフィックを送受信する場合に構成します。
- ターゲット gRPC プロキシ。クライアントとサーバーが gRPC トラフィックの送受信を行うときに構成します。ターゲット gRPC プロキシには、プロキシレス gRPC サービスをデプロイする場合に
TRUE
に設定されるフィールドvalidateForProxyless
が含まれます。
Envoy サイドカー プロキシを使用したトラフィック ルーティング
Envoy サイドカー プロキシで Traffic Director を使用すると、クライアント リクエストは次のようにルーティングされます。
- ネットワーク スタックがリクエストをインターセプトして、Envoy サイドカー プロキシにリダイレクトします。
- Envoy サイドカー プロキシは、リクエストの IP アドレスとポートを探します。
- IP アドレスとポートのペアは、負荷分散スキームが
INTERNAL_SELF_MANAGED
に設定されている転送ルールで指定された IP とポートに対してチェックされます。 - 一致する IP アドレスとポートの転送ルールが見つかった場合、Envoy は転送ルールが参照しているターゲット HTTP プロキシまたはターゲット gRPC プロキシを探します。
- Envoy は、ターゲット プロキシが参照する URL マップを確認します。
- Envoy は、URL マップで指定されたルールに従ってリクエストをルーティングします。
ターゲット TCP プロキシを使用したトラフィックのルーティング方法については、Traffic Director を使用した TCP トラフィックのルーティングをご覧ください。
プロキシレス gRPC アプリケーションを使用したトラフィック ルーティング
プロキシレス gRPC アプリケーションの場合、この動作は異なります。gRPC クライアントを構成するときは、クライアントが接続するサービスのターゲット URI を指定します。この URI では、xds
名前解決スキームと hostname:port
形式(例: xds:///example.hostname:8080
)を使用します。
プロキシレス gRPC クライアントが Traffic Director に接続されると、Traffic Director はそのサービスに対応する情報を次のように送信します。
- ロードバランシング スキームが
INTERNAL_SELF_MANAGED
に設定された転送ルールを探して、ターゲット URI で指定されたポートと一致するポートの転送ルールを見つけます。 - 各転送ルールそれぞれに対してターゲット gRPC プロキシまたはターゲット HTTP プロキシを検索します。
- これらのターゲット gRPC プロキシまたはターゲット HTTP プロキシによって参照される URL マップを見つけます。
- Traffic Director は、
hostname[:port]
形式の URL マップにあるホストルールをチェックし、一致を探します。 - 一致するものが見つかると、Traffic Director はルーティング ルールとサービス情報を gRPC クライアントに返します。
複数の一致が見つかった場合、動作は定義されておらず、予期しない動作が発生する可能性があります。通常、これは、次の両方の条件が満たされている場合に行われます。
- 同じホスト名が複数の URL マップで使用されている。
- 負荷分散スキーム
INTERNAL_SELF_MANAGED
の複数の転送ルールで同じポートを指定している。
そのため、同じポートを指定する転送ルールで参照される複数の URL マップでは、同じホスト名を再利用しないことをおすすめします。
次のステップ
トラフィックの処理方法をきめ細かく制御するには、高度なトラフィック管理の概要をご覧ください。
Traffic Director の詳細については、Traffic Director の概要をご覧ください。