LoginSignup
4
2

More than 3 years have passed since last update.

VirtualServiceとDestinationRuleのざっくりとした違い

Last updated at Posted at 2020-06-18

VirtualServiceとDestinationRuleって何が違うの

私のメモと簡単な図を載せておきます。
スクリーンショット 2020-06-18 20.32.33.png

Virtual Service

  • IngressGatewayにバインドすることができるし、メッシュ内の通信のみに適用する書き方もできる。
  • URIのプレフィックスが/productpageならrouteでproductpage.default.svc.cluster.localへルーティングできる。
  • ルーティングするトラフィックにtimeoutを付与したり、リトライ回数を付与することができる。
  • Namespaceを複数作成し、リクエスト時のFQDNによって各Namespaceにトラフィックを誘導することもできる。
  • この条件で流れてきたトラフィックはこっちに流す。あっちに流すをするのがVirtualServiceさん。

DestinationRule

  • hostの宛先に対してkeep-aliveをどういった設定で行わせるかを決められる。
  • コネクションプールを意識した同時接続数の制限ができる。
  • コネクション確立後の無通信時間(アイドル時間)を設定し、最後の通信からx秒経過したらコネクションを切断する設定ができる。
  • サーキットブレーカーとしての機能があるため、x回のエラーを検知したらブレーカーが作動し以降のトラフィックに対して500系エラーを瞬時に返すことができる。
  • この宛先に対してどのような制限を掛けてあげるかを設定するのがDestinationRuleさん。

実際にHTTPリクエストのタイムアウト設定やアイドルとなったコネクションを切断させるにはどうするのか

スクリーンショット 2020-06-19 6.44.04.png

上図のVirtualServiceではコネクション確立を始める際に適用される。
そのため、HTTPリクエストを送ったがレスポンスが返ってくるまで10秒経過したらリトライが行われる。
10秒待つ→レスポンス無し→リトライを3回まで繰り返す動作となる。

スクリーンショット 2020-06-19 6.45.05.png

DestinationRuleでは既に確立したコネクションがアイドル(無通信状態)となり
その状態で30秒が経過したらコネクションは破棄されるようになる。

おわりに

初めて真面目にお絵かきしてみましたが、こうして図として書くと全体像が掴みやすくて良いですね。
もう少し綺麗でわかりやすいデザインも知りたくなってきました。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2