2016-09-01 5 views
0

kubenetesポッド内にマイクロサービスを定義すると、サービスポッドが再起動している場合にGrpcクライアントの再接続を計測する必要がありますか?ポッドが再起動すると、ホスト名は変更されませんが、IPアドレスが同じであることは保証できません。それで、grpcクライアントは新しいサーバを検出して再接続することができますか?GRPCクライアントがkubenetes内で再接続する

答えて

0

(古いポッドが停止しているため)TCP接続が切断されると、gRPCのチャネルは指数バックオフで再接続を試みます。各再接続の試みは、古いDNSエントリのTTL(存続可能時間)のために直ちに新しいアドレスを検出することはできませんが、DNSアドレスの解決を意味します。また、いくつかの実装では、試行前ではなく障害が検出されたときにアドレスを解決すると考えられます。

このプロセスは、アプリケーションが何もしなくても自然に起こりますが、接続が再確立されるまでRPCの障害が発生する可能性があります。 RPCで「待機準備」を有効にすると、この移行期間中にRPCが失敗する可能性は低くなりますが、このようなRPCは一般に応答レイテンシを気にしないことを意味します。

DNSアドレスが(最終的に)再解決されない場合、これはバグであり、問​​題を提出する必要があります。

0

hereのようにクライアント側の負荷分散が必要です。 Kubernetes apiを使ってサービスのエンドポイントを見ることができます。 Goプログラミング言語用のパッケージを作成しました。これはgithubにあります。申し訳ありませんが、私はまだドキュメントを書いていませんでした。基本コンセプトは、サービスエンドポイントを変更するために監視するよりも、開始時にサービスエンドポイントを取得することです。

+0

あなたのリンクから記述されているものについては、リンクのみの回答が目立つように言及してください。答えは、外部の情報源に頼らずに存在できるはずです。 –

関連する問題