นำโหนดออกจาก Load Balancer แล้วนำกลับเข้า
ถอดโหนดออกและนำกลับเข้าอย่างปลอดภัย
นำโหนดออกจาก Load Balancer แล้วนำกลับเข้า เป็นบทเรียน Ansible Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ansible Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ansible Academy มีบทเรียนทั้งหมด 4 บทเรียน
การอัปเดตทราฟฟิกที่กำลังให้บริการมีความเสี่ยง
หากคุณแก้ไขเซิร์ฟเวอร์ขณะที่ผู้ใช้กำลังเรียกใช้งาน คำขอจะล้มเหลว วิธีแก้คือระบายการเชื่อมต่อโหนดออกจากตัวกระจายโหลดก่อน 🚦
ความหมายของการระบายการเชื่อมต่อ
การระบายการเชื่อมต่อโหนดหมายถึงการหยุดส่งทราฟฟิกใหม่ไปยังโหนดนั้น พร้อมปล่อยให้คำขอที่กำลังดำเนินการทำงานจนเสร็จ จากนั้นจึงปลอดภัยที่จะอัปเดต
วงจรระบาย อัปเดต เปิดใช้งานอีกครั้ง
รูปแบบที่ปลอดภัยมีสามขั้นตอน ได้แก่ ระบายการเชื่อมต่อโหนด นำการเปลี่ยนแปลงไปใช้งาน แล้วเปิดใช้งานโหนดนั้นอีกครั้งในตัวกระจายโหลด
ปิดใช้งานโหนดใน HAProxy
โมดูล community.general.haproxy จะตั้งค่าโหนดแบ็กเอนด์เป็นปิดใช้งาน เพื่อบอกให้ HAProxy หยุดส่งทราฟฟิกไปยังโหนดนั้น
- name: Drain web node
community.general.haproxy:
state: disabled
host: "{{ inventory_hostname }}"
socket: /var/run/haproxy.sockเรียกใช้งานของ LB จาก LB
ซ็อกเก็ต HAProxy อยู่บนตัวกระจายโหลด ดังนั้นให้ใช้ delegate_to กับโฮสต์ LB ขณะยังคงระบุโหนดเว็บที่กำลังระบายการเชื่อมต่อ
delegate_to: lb01รอให้การเชื่อมต่อถูกระบายจนหมด
ให้เวลาคำขอที่กำลังทำงานอยู่ดำเนินการจนเสร็จ ใช้ wait_for หรือหยุดชั่วครู่สั้น ๆ เพื่อไม่ตัดการเชื่อมต่อผู้ใช้ระหว่างคำขอ
- name: Let traffic drain
ansible.builtin.wait_for:
timeout: 30
delegate_to: localhostนำไปใช้งานอย่างปลอดภัยได้แล้ว
เมื่อโหนดถูกนำออกจากการหมุนเวียนแล้ว ให้เรียกใช้งานอัปเดตของคุณ ได้แก่ ติดตั้งแพ็กเกจ ส่งการกำหนดค่า และเริ่มแอปใหม่ จะไม่มีทราฟฟิกที่กำลังให้บริการได้รับผลกระทบ 🔧
เปิดใช้งานโหนดอีกครั้ง
หลังอัปเดตแล้ว ให้ตั้งค่าโหนดกลับเป็นเปิดใช้งาน เพื่อให้ HAProxy กลับมาส่งทราฟฟิกไปยังเซิร์ฟเวอร์ที่เพิ่งนำไปใช้งาน
- name: Re-enable web node
community.general.haproxy:
state: enabled
host: "{{ inventory_hostname }}"
socket: /var/run/haproxy.sock
delegate_to: lb01ตรวจสอบสถานะก่อนเปิดใช้งานอีกครั้ง
ยืนยันว่าแอปทำงานอยู่จริงก่อนเพิ่มโหนดกลับเข้าไป การใช้ wait_for หรือการตรวจสอบ uri กับปลายทางสุขภาพจะช่วยป้องกันไม่ให้บริการโหนดที่เสียหาย
- ansible.builtin.uri:
url: http://localhost:8080/health
status_code: 200
retries: 5
delay: 3ทำทีละโหนด
ใช้วงจรนี้ร่วมกับ serial เพื่อให้มีเพียงหนึ่งหรือสองโหนดที่ระบายการเชื่อมต่อในแต่ละครั้ง ส่วนที่เหลือยังคงให้บริการ ทำให้ไม่เกิดช่วงหยุดให้บริการ
- hosts: web
serial: 1เปิดใช้งานอีกครั้งเสมอ แม้เกิดข้อผิดพลาด
ครอบการนำไปใช้งานไว้ใน block ที่มี always เพื่อให้แม้การอัปเดตล้มเหลว โหนดก็ยังถูกนำกลับเข้าสู่การหมุนเวียน แทนที่จะค้างอยู่ภายนอก
ตรวจสอบความเข้าใจอย่างรวดเร็ว
มาทบทวนรูปแบบการเปิดตัวที่ปลอดภัยกัน
สรุปทบทวน
เพื่อไม่ให้เกิดช่วงหยุดให้บริการ ให้ระบายการเชื่อมต่อโหนด นำไปใช้งาน ตรวจสอบสุขภาพ แล้วเปิดใช้งานอีกครั้งทีละโหนดด้วย serial และบล็อก always ✅
คำถามที่พบบ่อย
บทเรียน “นำโหนดออกจาก Load Balancer แล้วนำกลับเข้า” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “นำโหนดออกจาก Load Balancer แล้วนำกลับเข้า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ansible Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ansible Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “นำโหนดออกจาก Load Balancer แล้วนำกลับเข้า”
ถอดโหนดออกและนำกลับเข้าอย่างปลอดภัย คุณปฏิบัติ Ansible Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ansible Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ansible Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “นำโหนดออกจาก Load Balancer แล้วนำกลับเข้า” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ansible Academy นี้ได้ไหม
ได้ บทเรียน Ansible Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ทำระบบอุปกรณ์เครือข่ายอัตโนมัติด้วย cli_command
- delegate_to และ run_once สำหรับการประสานงาน
- ประสานชั้น Web, App และ DB
- นำโหนดออกจาก Load Balancer แล้วนำกลับเข้า