17 คะแนน โดย xguru 2022-01-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • วิธีอัปเกรดที่ Nginx ใช้

→ แทนที่ไฟล์ปฏิบัติการของไฟล์ต้นฉบับด้วยไฟล์ใหม่

→ ส่งสัญญาณ USR2 ไปยัง master process

→ master process เปลี่ยนชื่อไฟล์ process ID ของตัวเองเป็นนามสกุล .oldbin

→ เริ่มไฟล์ปฏิบัติการใหม่เพื่อให้สร้าง worker process ชุดใหม่

→ worker process ทั้งหมดเริ่มรับ request

→ เมื่อส่งสัญญาณ WINCH ไปยัง master process ตัวแรก จะเป็นการขอให้ worker process ของมันปิดตัวลงอย่างปกติ

  • master process เดิมจะไม่ปิด listen socket และยังสามารถสร้าง worker process ขึ้นมาใหม่ได้หากจำเป็น

  • หาก master process ใหม่ทำงานได้ไม่ถูกต้อง

→ ส่งสัญญาณ HUP ไปยัง master process เดิมเพื่อให้เริ่ม worker process ชุดใหม่ แล้วหลังจาก worker ของ master process ใหม่ปิดตัวลง ให้ส่ง QUIT ไปยัง master process ใหม่เพื่อปิดมัน

→ ส่งสัญญาณ TERM ไปยัง master process ใหม่เพื่อขอให้ worker process ปัจจุบันหยุดทันที เมื่อ master process ใหม่ตาย master process เดิมจะเริ่ม worker process ชุดใหม่

  • เมื่อ master process ใหม่ปิดตัวลงแบบนี้ master process เดิมจะลบนามสกุล .oldbin

  • หากอัปเกรดสำเร็จ ให้ส่งสัญญาณ QUIT ไปยัง master process เดิมเพื่อปิดมัน และคงเหลือไว้เฉพาะ process ใหม่

1 ความคิดเห็น

 
xguru 2022-01-06

Caddy 1 ก็ใช้วิธีนี้เช่นกัน

วิธี Hot Restart ของ Envoy https://envoyproxy.io/docs/envoy/…

HAProxy Seamless Reload https://haproxy.com/blog/…