2017-04-19 49 views
1

私は(g)rpcに少し新しく、概念を実際に理解していません。 grpcを使用して相互に通信するKubernetesクラスタ内のNodeJSサーバーがあります。 rpcインタフェースは、クライアント起動時に各サーバに向かって設定されます。gRPCはサーバー再起動時に接続を失います

最近、サーバーの再起動時に、そのクライアントがそのサーバーへの接続を失うことが発見されました。つまり、以前に動作していたサーバーへのrpc呼び出しは、そのサーバーの再起動後も機能しなくなりました。そして、正しい順序でサーバーを再起動するまで、それは再び機能し始めません。

私は、アドレス(ホスト+ポート)を介して、クライアントに「ここで呼び出すことができる手順がある」と伝えました。そしてプロシージャを呼び出すと、アドレスが呼び出され、サーバー上で処理され、返されました。このように動作した場合、クライアントはrpc呼び出しの間にサーバーが0または100回再起動したかどうかは気にしません。

しかし、上記のクライアントの説明では、rpcは失敗/タイムアウトを呼び出すため、ソケットのような接続があり、両方の部分が動作している間に接続が確立され維持されているようです。

サーバの再起動時にインターフェイスを再確立するには、どのように動作し、クライアント上の自分のrpcサーバにヘルスチェックを実装する必要がありますか?

ありがとうございました。

+0

gRPCのどのバージョンを使用していますか? – murgatroid99

+0

あなたはそれが事実だと思わせるどんな誤りを見ていますか?場合によってはgRPCは警告を記録しますが、正常に動作し続けます。質問をより具体的に説明し、人々が助けることができるようにしてください。 –

答えて

0

https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.mdチャンネル結局(バック「準備完了」に)「接続」に「transient_failure」からなりますが、理由は指数バックオフのため、これは長い時間がかかる可能性があることを示唆しています。

https://github.com/grpc/grpc/blob/master/doc/connection-backoff.mdMAX_BACKOFFと呼ばれるものを記述していますが、実装されていないようです。

https://github.com/aisotton/grpc/commit/24e69bf02afb0f4abdd637d1513e93e5aa227e7eを含むgRPCのバージョンを使用している場合は、grpc.max_reconnect_backoff_msが再接続の試行間の時間を制限する場合があります。

関連する問題