実行中に実行ファイルをアップグレードする
(nginx.org)- Nginx が使用するアップグレード方式
→ 元の実行ファイルを新しいものに置き換える
→ マスタープロセスに USR2 シグナルを送信
→ マスタープロセスが自身のプロセスIDのファイルを .oldbin 拡張子に変更
→ 新しい実行ファイルを起動して、新しいワーカープロセスを作成するようにする
→ すべてのワーカープロセスがリクエストの受け付けを開始
→ 1つ目のマスタープロセスに WINCH シグナルが送られると、自身のワーカープロセスに正常終了するよう要求
-
既存のマスタープロセスはリッスンソケットを閉じず、必要に応じて再びワーカープロセスを生成可能
-
もし新しいマスタープロセスが正常に動作しない場合は
→ 既存のマスタープロセスに HUP シグナルを送って新しいワーカープロセスを起動させ、新しいマスタープロセスのワーカーが終了した後に新しいマスターへ QUIT を送って終了させる
→ 新しいマスタープロセスに TERM シグナルを送って、現在のワーカープロセスに即時中断を要求。新しいマスターが停止すると、既存のマスターが新しいワーカープロセスを起動
-
このように新しいマスタープロセスが終了すると、既存のマスタープロセスが .oldbin 拡張子を削除
-
アップグレードが成功したら、既存のマスタープロセスに QUIT シグナルを送って終了させ、新しいプロセスだけを残す
1件のコメント
Caddy 1 もこの方式を使っていると
EnvoyのHot Restart方式 https://envoyproxy.io/docs/envoy/…
HAProxy Seamless Reload https://haproxy.com/blog/…