アプリケーションプローブ


クラウドでコードを展開している場合は、クラウドプロバイダーがアプリケーションのステータスを知ることができます.また、壊れているか間違って構成されたバージョンを展開するのを防ぎます.
主に触発された3つのプローブに飛び込みましょうKubernetes probes .

目を覚ましてる?
すべてのアプリケーションを起動するときに同じ“朝のルーチン”を持っていない:いくつかのビルドの内部のキャッシュ、いくつかの構成依存性注入グラフを開始する前に、いくつかは即座にビジネスの準備ができています.
あなたのアプリケーションの他のvitalsパラメータをチェックする前に、あなたのアプリケーションが目を覚ましているかどうかチェックする必要があります.この種のプローブは、アプリケーションがビジネスにオープンしたときに肯定的な応答を持つことができます.
HTTPの聞くポートを確認する良い例であることができます、それは多くの場合、すべての負荷後にアプリの最後のものを開始です.Kubernetes構文の良いスタートアップ・プローブは、ここにあります.
startupProbe:
  tcpSocket:
    port: http

あなたは生きていますか.
一度あなたのアプリケーションが目を覚ます、あなたは今、継続的に、それが生きている無期限にチェックする必要があります.リアクティブプローブが失敗した場合、クラウドプロバイダーは、アプリケーションがスタックされているとして、いくつかの再試行の後にインスタンスを再起動します.
あなたのアプリケーションが有効であることを保証する非常に決定的な方法が必要です.
何度も、私はAの上でHTTPプローブを見ました/health アプリケーションが有効であるかどうかをチェックするルート.しかし、もしあなたのアプリの要求のトンに圧倒され、それが生きているかどうかチェックするための要求を追加するだけで痛みに苦しむ.HTTPプローブは、非常に短いタイムアウトを持っている場合は、時間内に答えていない場合は、あなたのアプリは“壊れた”として考慮することができますが、ビジネスの要求に答えている.

あなたはハートビートとしてそれを考える必要があります:あなたの心が鼓動している限り、あなたは生きている.“ハートビートチェック”の代わりに、それは質問です“あなたは大丈夫ですか?”5秒ごとに、高い努力の下で、あなたは呼吸するか、答える時間がないかもしれません.しかし、あなたの心臓はまだ鼓動しています.
私は、スタートアップ・プローブのような単純なオープン・ポート・チェックを使うことをお勧めします.ここでは良い活性プローブです.
livenessProbe:
  tcpSocket:
    port: http

準備ができましたか.
最後のプローブは、設定するトリッキーです.我々がマラソンランナーでハートビートの我々の例を取り戻すならば.心臓は鼓動しているので、反応プローブは良いです.午前中には、十分なボディリソース、権利の靴がある、すべてが完璧な状態です.実行の終わりには、エネルギーレベルは非常に低く、準備のプローブはOKではないが、積極的に、まだうまくいけば、心臓がまだ鼓動している.
それはあなたのアプリケーションに同じコンセプトです:準備のプローブは、負荷バランサーに指示するものです“私は準備ができて、私に要求を与える!”準備ができているということは、あなたのデータベース接続がOKで、あなたのメッセージングも動作するのに十分なスペースです.
あなたのアプリケーションをチェックするために圧倒されていない、それは今すぐに呼び出すには良い時間だ/health or /ready 通常のトラフィックに対応する同じポート上のHTTPエンドポイント:サーバーが時間内に低消費要求を処理できない場合、重い要求を送信するのは良いアイデアではありません.
そのエンドポイントでは、あなたの依存関係の単純なpingを実行する必要があり、すべての場合は、有効なHTTPコードに応答するか、またはHTTP/503 を返します.ここに良い準備プローブです.
readinessProbe:
  httpGet:
    path: /ready
    port: http
あなたの依存関係をチェックするときは、準備ループを作成しないでください!彼らはあなたのビジネスに関連していない限り、他のAPIのステータスをチェックしないでください、そして、彼らはどちらかをチェックしていないことを確認してください:それ以外の場合は、鶏の卵の問題を作成します.

自動再接続
以前の動作は、依存関係が利用できないときにアプリケーションが再接続するために処理できる場合にのみ有効です.データベースが切断された場合、利用可能になったときに再接続できますか?そうでなければ、あなたのアプリケーションを再起動するために、その種のチェックを加えることによって、あなたの反応プローブを変えるかもしれません.
停止することができることは良い機能です.なぜなら、それは停電中に仕事の量を制限するからです.
データベースがダウンしている場合、すべてのアプリケーションは、データベースが戻るまでループで再起動すると、それはサイドエフェクターの多くがあります.
再接続を設定している場合は、データベースがダウンしている場合は、アプリケーションが準備ができていないが、すぐにデータベースが戻ってくると、すべてがほぼ瞬時に回復します.

優雅なシャットダウン
最後に、しかし、少なくとも、準備のプローブを優雅なシャットダウンを扱うことができます.あなたが信号を受け取るときSIGTERM ) あなたのアプリケーションがシャットダウンされる(新しいバージョンの開始のため、ダウンスケールなどのため)、あなたは利用できないステータスに答え始めることができて、優雅な時間を待ちます.
この方法では、ロードバランサーは、トラフィックをもう必要としないとの要求は、HTTPサーバーが有効にシャットダウンされるときに失われることを保証しないことを知っている.

パフォーマンス
パフォーマンスに関する特別な注意.活性と準備のプローブは非常に頻繁に、物事が間違っている場合、正しい反応性を確保するために呼び出されます.プローブはすぐに応答しなければならないし、あまりにも多くのressourceを割り当てることなく.それはサーバー上の“ping”のようなものです:“基本的な接続”が正しいかどうかを確認するために最初に行うことです.
すべての画像はUnsplash