tldr
勉強がてらにEnvoyのドキュメントを邦訳してみました。ベースはGoogle Translateで、ところどころ不自然な箇所を直しています。
原文としたのEnvoyのドキュメントはこちらのディレクトリ以下にあります(ライセンス:Apache License 2.0, NOTICE)。
目次はこちらです。
ドレイン
ドレインとは、Envoyがさまざまなイベントに対応して適切に接続を切断しようとするプロセスです。排水は次のときに行われます。
- サーバーは、healthcheck / fail管理エンドポイントを介して手動でヘルスチェックに失敗しました。詳細については、ヘルスチェックフィルタアーキテクチャの概要を参照してください。
- サーバーはホットリスタートされています。
- 個々のリスナーはLDSを介して変更または削除されています。
構成された各リスナーには、いつドレインが行われるかを制御するdrain_type設定があります。現在サポートされている値は次のとおりです。
デフォルト
Envoyは上記の3つのケースすべてに対応してリスナーをドレーンします(admin drain、hot restart、およびLDS update / remove)。これがデフォルト設定です。
modify_only
Envoyは上記の2番目と3番目のケース(ホットリスタートとLDSの更新/削除)に対応してのみリスナーをドレーンします。この設定は、Envoyが入力リスナーと出力リスナーの両方をホストしている場合に役立ちます。制御されたシャットダウンを行おうとしたときに完全なサーバのドレインを実行するために入力リスナのドレインに依存している間、変更中にのみドレインするように出力リスナにmodify_onlyを設定することが望ましいかもしれません。
ドレインはリスナーごとの概念ですが、ネットワークフィルタレベルでサポートされている必要があります。現在、適切な排水をサポートする唯一のフィルタは、HTTP接続マネージャ、Redis、およびMongoです。