19

3 つの EC2 サーバーで AWS Load Balancer を使用しており、サイトのメンテナンス中にメンテナンス ページを提供しようとしています。

このページは 503 HTTP コードを返す必要があります。これはメンテナンス モードに適したコードであり、SEO で発生する可能性のある問題を防ぐためです。

いずれかのサーバーから 503 コードを返すと、Load Balancer はそれを「Not In Service」にし、すべてのサーバーが 503 を返すと、ウェブサイトは空白のページを返します (すべてのサーバーが切断されているため)。

私の質問は次のとおりです。

1) 正常なサーバーがない場合、ロード バランサーから訪問者にメッセージを表示するカスタム静的ページを提供する方法はありますか?

2) または、サーバーを「異常」とマークする理由として 503 を考慮しないように、ロード バランサーのヘルス チェックを構成する方法は?

ありがとう!

4

4 に答える 4

13

アプリ サーバーに追加のルートを実装できます。たとえば、/hcm (ヘルス チェック メンテナンス用) としましょう。このルートは常に 200 OK を返します。メンテナンスの時間になると、ELB ヘルス チェックをプログラムで変更して、503 Service Unavailable を返す / または /index.html ではなく、200 OK を返す /hcm ターゲットを使用します。メンテナンスを終了するときに、これらの変更を元に戻します。

于 2015-09-02T01:52:34.633 に答える
6

503 の要件を満たしていない可能性がありますが、s3 および dns フェイルオーバーを使用することをお勧めします: https://aws.amazon.com/blogs/aws/create-a-backup-website-using-route-53-dns-failover -and-s3-website-hosting/

于 2015-09-02T07:49:30.107 に答える
1

ロード バランサーは、503その背後に正常なサーバーがなくなったときにサービスを提供するため、特別なことを行う必要はありません。

ヘルス チェックでa 以外を返す場合200、ELB は、構成された数のヘルス チェックに失敗した後、マシンをロード バランサーから外します。

要約すると、メンテナンス中にアプリからサービスを提供できる可能性がありますが、ヘルスチェックのために常に503戻る必要があります。200ページの内容が気にならない場合は、マシンをロード バランサーから削除する (またはヘルス チェックに失敗する) だけで、LB が適切な処理を行います。

于 2015-09-02T04:40:04.720 に答える