Nginxをリバースプロキシとして使用しています。私がそれを使用してそれの設定を更新するときはいつでも
Sudo "cp -r #{nginx_config_path}* /etc/nginx/sites-enabled/"
Sudo "kill -s HUP `cat /var/run/nginx.pid`"
私は短いダウンタイムに直面しています。どうすればそれを回避できますか?
service nginx reload
または/etc/init.d/nginx reload
を実行します
ダウンタイムなしで構成のホットリロードを実行します。保留中のリクエストがある場合、死ぬ前にそれらの接続を処理するnginxプロセスが長引いているため、構成を再ロードする非常に適切な方法です。
Sudo
を前に付けたい場合があります
/usr/sbin/nginx -s reload
を実行します
その他のコマンドラインオプションについては http://wiki.nginx.org/CommandLine を参照してください。
いいえ、あなたは間違っています。あなたが説明する手順でダウンタイムに直面することは想定されていません。 (Nginxは、ダウンタイムなしでオンザフライで構成を再ロードできるだけでなく、実行可能ファイルのアップグレードもダウンタイムなしで実行できます。)
http://nginx.org/docs/control.html#reconfiguration に従って、HUP
信号をnginxに送信すると、正常な再起動が実行され、構成がファイルが正しくなく、手順全体が中止され、HUP
シグナルを送信する前と同じようにnginxが残ります。ダウンタイムが発生する可能性はありません。
Nginxが構成ファイルを再度読み取るためには、HUPシグナルをマスタープロセスに送信する必要があります。マスタープロセスは最初に構文の有効性を確認し、次に新しい構成の適用を試みます。つまり、ログファイルと新しいリッスンソケットを開きます。これが失敗した場合、変更をロールバックし、古い構成で引き続き機能します。
完全を期すために、systemd
の方法:
systemctl reload nginx
通常、サービスの構成ファイルを再読み込みしても、実行中のサービスには影響しません。ただし、これはSIGHUP
信号の処理方法によって異なります。
特定のサービスでリロード中にダウンタイムが発生している場合、ロードバランサーを使用して複数のサーバーで同じサービスを実行することで、これを回避できます。この場合、一度に1つのサーバーを取り出し、再ロード/再起動できます。その後、問題がないことを確認してから再度追加できます。