Nginx サーバーのヘルスチェックと自動障害回復の詳細な説明
はじめに:
今日のインターネット アプリケーションでは、高い同時実行性と高可用性が非常に重要です。システムの安定性を確保するには、サーバーの状態を監視およびチェックし、障害回復を自動的に実行する必要があります。この記事では、Nginx サーバーを使用してヘルスチェックと自動障害回復を行う方法を詳しく説明し、関連するコード例を示します。
- Nginx ヘルスチェックの原則
Nginx 構成ファイルでは、アップストリーム モジュールを通じてバックエンド サーバーのグループを定義でき、Nginx は特定のアルゴリズムに従ってリクエストをさまざまなサーバーに割り当てます。このプロセス中に、Nginx はバックエンド サーバーの健全性をチェックすることで、リクエストの分散を動的に調整できます。一般的に使用されるヘルス チェック方法は 2 つあります。
1.1 アクティブなヘルス チェック:
Nginx はバックエンド サーバーに定期的にリクエストを送信し、返されたステータス コードに基づいてサーバーの健全性を判断します。 。 状況。返されたステータス コードがサーバーが正常であることを示している場合、Nginx はそのサーバーを利用可能なサーバー リストに追加します。返されたステータス コードがサーバーが異常であることを示している場合、Nginx はそのサーバーを利用可能なサーバー リストから削除します。
1.2 パッシブヘルスチェック:
Nginx がバックエンドサーバーにリクエストを送信し、接続がタイムアウトするかリクエストが失敗すると、Nginx はそのサーバーが利用できないサーバーであると判断し、リストから削除します。利用可能なサーバー。新しいリクエストが到着すると、Nginx は他の利用可能なサーバーへの接続を試みます。
- Nginx ヘルス チェック設定の例
Nginx 設定ファイルでは、アップストリーム モジュールの health_check パラメータを通じてヘルス チェック機能を有効にし、関連するヘルス チェック項目を設定できます。以下は設定例です:
http {
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
# 开启健康检查功能
health_check;
# 配置健康检查项
health_check_timeout 3s;
health_check_interval 10s;
health_check_http_2xx;
health_check_http_3xx;
}
server {
listen 80;
location / {
proxy_pass http:
}
}
|
ログイン後にコピー
}
上記の設定では、backend という名前のアップストリーム グループを定義し、バックエンドが 3 つあるように設定します。サーバー。 health_checkパラメータをonに設定すると、ヘルスチェック機能が有効になります。ヘルスチェック項目の具体的な設定は以下のとおりです。
- health_check_timeout: ヘルスチェックのタイムアウトを設定します。
- health_check_interval: ヘルスチェックの間隔を設定します。
- health_check_http_2xx: 返されたステータス コードが 2xx (200 など) の場合、サーバーは正常であることを意味します。
- health_check_http_3xx: 返されたステータス コードが 3xx (301、302 など) の場合、サーバーは正常であることを意味します。
- Nginx 自動障害復旧設定例
Nginx ではヘルスチェックに加えて、自動障害復旧機能も提供しています。バックエンド サーバーが利用できないと判断されると、Nginx はそのバックエンド サーバーを利用可能なサーバーのリストから自動的に削除し、一定期間後にヘルス チェックを再度実行します。バックエンド サーバーがヘルス チェックに合格すると、Nginx はそのバックエンド サーバーを利用可能なサーバーのリストに再度追加して、自動的な障害回復を実現します。以下は設定例です:
http {
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
# 开启健康检查和自动故障恢复功能
health_check;
max_fails 3;
fail_timeout 30s;
# 配置健康检查项
health_check_timeout 3s;
health_check_interval 10s;
health_check_http_2xx;
health_check_http_3xx;
}
server {
listen 80;
location / {
proxy_pass http:
}
}
|
ログイン後にコピー
}
上記の設定では、自動フォールトを設定するために max_fails と failed_timeout という 2 つのパラメータを追加しました。回復機能。
- max_fails: 一定期間内での失敗の最大数を設定します (fail_timeout パラメーターで指定)。デフォルトでは 1 回です。
- fail_timeout: 障害回復のタイムアウトを設定します。
バックエンド サーバーの障害の数が max_fails で構成された値に達すると、Nginx はそのサーバーを利用可能なサーバーのリストから削除し、fail_timeout で構成されたタイムアウト後にヘルス チェックを再度実行します。サーバーがヘルスチェックに合格すると、Nginx はそのサーバーを利用可能なサーバーのリストに再度追加します。
結論:
Nginx サーバーのヘルス チェックと自動障害回復機能は、システムの安定性と可用性を効果的に向上させることができます。上記の構成例を通じて、ヘルスチェックと自動障害回復機能を実装するために Nginx を簡単に構成できます。この記事が、Nginxサーバーのヘルスチェック機能や障害自動回復機能の理解と活用の一助となれば幸いです。
以上がNginxサーバーのヘルスチェックと自動障害回復の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。