サーバーの負荷が特定のレベルを超えた場合に、バックエンド サーバーへのリクエストの処理を停止したいと考えています。すでにサイトを閲覧しているユーザーは引き続きルーティングされますが、負荷が事前に決定されたレベルを下回るまで、新しい接続は静的サーバーのビジー ページに送信されます。
Cookie を使用して現在の顧客を受け入れることができますが、カスタム負荷メトリックに基づいてルーティングする方法に関する情報が見つかりません。
誰かが私を正しい方向に向けることができますか?
サーバーの負荷が特定のレベルを超えた場合に、バックエンド サーバーへのリクエストの処理を停止したいと考えています。すでにサイトを閲覧しているユーザーは引き続きルーティングされますが、負荷が事前に決定されたレベルを下回るまで、新しい接続は静的サーバーのビジー ページに送信されます。
Cookie を使用して現在の顧客を受け入れることができますが、カスタム負荷メトリックに基づいてルーティングする方法に関する情報が見つかりません。
誰かが私を正しい方向に向けることができますか?
Nginx には、負荷分散用のHTTP アップストリームモジュールがあります。バックエンド サーバーの応答性の確認は、 オプションmax_fails
とfail_timeout
オプションを使用して行います。バックエンドが利用できない場合の別のページへのルーティングは、backup
オプションで行われます。負荷メトリックを Nginx が提供するオプションに変換することをお勧めします。
ただし、負荷が必要以上に高い場合でも、Nginx はバックエンドが「稼働中」であると認識しているとしましょう。バックエンド サーバーの最大接続数を調整することで、さらに調整できる場合があります。そのため、バックエンド サーバーは、負荷が高くなりすぎる前に 5 つの接続しか処理できない可能性があるため、5 つの接続のみを許可するように調整します。次に、フロントエンドで、Nginx は 6 番目の接続を送信しようとするとすぐにタイムアウトし、そのサーバーを動作不能としてマークします。
別のオプションは、Nginx の外部でこれを処理することです。Nagios のようなソフトウェアは、負荷を監視できるだけでなく、監視に基づいて積極的にアクションをトリガーすることもできます。
各上流ノードをアップまたはダウンとしてマークするオプションを持つテンプレートから Nginx 構成を生成できます。アップストリームの負荷が高すぎることをモニターが検出すると、必要に応じてテンプレートから Nginx 構成を再生成し、Nginx をリロードすることができます。
Nagios サーバーと同じマシンで実行され、単純な監視と構成ファイルの更新を実行するスクリプトを使用して、同じアイデアの軽量バージョンを実行できます。