Posted at

Envoy: 初期化


tldr

勉強がてらにEnvoyのドキュメントを邦訳してみました。ベースはGoogle Translateで、ところどころ不自然な箇所を直しています。

原文としたのEnvoyのドキュメントはこちらのディレクトリ以下にあります(ライセンス:Apache License 2.0, NOTICE)。

目次はこちらです。


初期化

起動時にEnvoyが自身を初期化する方法は複雑です。このセクションでは、プロセスがどのように機能するのかを高レベルで説明します。以下のすべては、リスナーが新しい接続をリスニングして受け入れ始める前に行われます。


  • 起動時に、クラスタマネージャは最初に静的/ DNSクラスタを初期化し、次に事前定義されたEDSクラスタを初期化するマルチフェーズ初期化を実行します。次に、該当する場合はCDSを初期化し、1つの応答(または失敗)を待ち、CDSが提供するクラスタと同じプライマリ/セカンダリ初期化を実行します。

  • クラスターがアクティブヘルスチェックを使用する場合、Envoyは1回のアクティブヘルスチェックラウンドも行います。

  • クラスタマネージャの初期化が完了すると、RDSとLDSが初期化されます(該当する場合)。 LDS / RDS要求に対して少なくとも1つの応答(または失敗)が発生するまで、サーバーは接続の受け入れを開始しません。

  • LDS自体がRDS応答を必要とするリスナーを返す場合、EnvoyはさらにRDS応答(または失敗)が受信されるまで待機します。このプロセスは、LDSを介した将来のリスナー追加のたびに行われ、リスナーウォーミングとして知られています。

  • 前のステップがすべて実行された後、リスナーは新しい接続を受け入れ始めます。このフローにより、ホットリスタート中に、古いプロセスの排出が始まる前に、新しいプロセスが新しい接続を受け入れて処理できるようになります。

言及されている「1つの応答を待つ」期間はすべて、対応するinitial_fetch_timeoutを設定することによって制限できます。