tldr
勉強がてらにEnvoyのドキュメントを邦訳してみました。ベースはGoogle Translateで、ところどころ不自然な箇所を直しています。
原文としたのEnvoyのドキュメントはこちらのディレクトリ以下にあります(ライセンス:Apache License 2.0, NOTICE)。
クラスタマネージャ
Envoyのクラスタマネージャは、設定されたすべてのアップストリームクラスタを管理します。 Envoy 設定にリスナをいくつでも含めることができるのと同様に、設定には独立して設定された上流クラスタをいくつでも含めることができます。
上流のクラスタとホストは、任意の数の異なるプロキシタスクに使用できることから、上流のクラスタとホストはネットワーク/HTTP フィルタスタックから抽象化されます。クラスタマネージャは、フィルタが上流クラスタへの L3/L4 接続、または上流クラスタへの抽象 HTTP 接続プールへのハンドルを取得することを可能にする API をフィルタスタックに公開します(上流ホストが HTTP/1.1 または HTTP/2 をサポートするかどうか)。隠されています)。フィルタステージは、L3/L4 接続と新しい HTTP ストリームのどちらが必要かを決定します。クラスタマネージャは、どのホストが利用可能で正常かを知ること、負荷分散、アップストリーム接続データのスレッドローカルストレージの複雑さをすべて処理します。シングルスレッド、アップストリーム接続タイプ( TCP/IP、UDS )、該当する場合はアップストリームプロトコル( HTTP/1.1、HTTP/2 )などと書かれています。
クラスタマネージャに認識されているクラスタは、静的に設定することも、クラスタ検出サービス( CDS )API を介して動的に取得することもできます。動的クラスター・フェッチにより、より多くの構成を中央構成サーバーに保管できるようになるため、Envoyの再始動および構成配布が少なくて済みます。
- クラスタマネージャの設定
- CDS の設定
クラスタウォーミング
クラスタがサーバー起動時とCDS経由の両方で初期化されると、それらは「ウォームアップ」されます。これは、次の操作が行われるまでクラスタが使用可能にならないことを意味します。
- 初期サービス発見負荷(例えば、DNS 解決、EDS 更新など)。
- アクティブヘルスチェックが設定されている場合、初期アクティブヘルスチェックは合格です。 Envoy は、検出された各ホストにヘルスチェック要求を送信して、最初のヘルス状態を判断します。
前の項目では、Envoy がクラスタをトラフィックサービスに使用し始める前に、そのクラスタを正確に把握できるようにしています。
クラスタの温暖化について議論するとき、クラスタが「利用可能になる」とは、
- 新しく追加されたクラスターの場合、そのクラスターは温められるまで残りの Envoy には存在しないように見えます。つまり、クラスタを参照する HTTP ルートは、404または503のいずれかになります(構成によって異なります)。
- 更新されたクラスタの場合、古いクラスタは存在し続け、トラフィックを処理します。新しいクラスタがウォームアップされると、トラフィックの中断が発生しないように、古いクラスタとアトミックに交換されます。