HAProxyヘルスチェック:httpchkを使用して監視しますか?


10

HAProxy 1.4.18を次のバックエンド構成で使用しています

backend staging
  option httpchk HEAD /check.txt HTTP/1.0
  http-check disable-on-404
  default-server error-limit 1 on-error mark-down
  server staging01 x.x.x.x:80 check observe layer7
  server staging02 x.x.x.x:80 check observe layer7

サーバーは、apache / passenger上で複数のアプリケーションを実行しています。

httpchkとdisable-on-404の組み合わせにより、正常にシャットダウンし、直接(つまり、テストのために)アクセスできる状態のまま、サーバーをlbから簡単に削除できます。

アプリケーションが動作していないときにサーバーを無効にするために監視を設定しようとしています。staging02のアプリケーション構成を壊したので、常に500を返します。最初の500の後で正しくDOWNとマークされていますが、次のhttpchkでUPとマークされています。

ログファイルは次のとおりです。

Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 2 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 1 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is UP, reason: Layer7 check passed, code: 200, info: "OK", check duration: 0ms. 2 active and 1 backup servers online. 0 sessions requeued, 0 total in queue.

これら2つのチェックを組み合わせる方法はありますか?


HAProxyが間違いなく問題であることを確認するために、バックエンドのApacheサーバーから一致する3つのログ行を見つけて、質問に追加できますか?
Ladadadada

Apacheサーバーの1つが意図的に誤って設定されているため、サーバー上のすべてのアプリケーションが500エラーコードを返します。ただし、ファイルを削除しない限り、/ check.txtは常に機能します。check.txtファイルがまだ存在していても、500エラーが返される場合は、Apacheサーバーを無効にしてください。
Ouranos

回答:


4

/check.txt 実際には200の応答を返しますが、アプリケーションへのすべての要求は500を返します。HAProxy 、プロキシされた要求から500が返されていることを確認し、サーバーをプールから取り出しますが、独自に開始します。チェックして200を受け取り、サーバーをプールに戻します。

解決策は、次のいずれかを実行することです。

  1. アプリケーションではなくApacheを構成して、静的ファイルであっても、すべてのリクエストが500応答を返すようにします/check.txt
  2. /check.txt必要に応じて200応答と500応答のどちらかを選択するのに十分なロジックを含むRubyアプリに変更します。
  3. interを3600のようなとんでもないに設定します。これにより、テストを実行するのに1時間かかるか、または(サーバー自体がダウンした場合)問題を見つけて元に戻します。
  4. inter値を60などの小さい値に設定しますが、rise値を60などの高い値に設定します。これにより、サーバーがプールに再び追加される1時間前にも表示されます。 (これら2つはおそらく非常に悪い考えであるため、最後にリストされています。)

はいそれが起こっていることです。私はを取り除き/check.txt、httpchkを1つのアプリケーションにポイントする必要があると思います。このcheck.txtファイルは、すべてのHAProxyからサーバーを迅速かつ適切に削除するのに便利でした(HAセットアップではそのうち3つ、アクティブなのは1つだけ)。またdisable server、リロードの間に持続しないようです。
Ouranos
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.