0Pricing
Ansible Academy · บทเรียน

นำโหนดออกจาก 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ทำระบบอุปกรณ์เครือข่ายอัตโนมัติด้วย cli_command
  2. delegate_to และ run_once สำหรับการประสานงาน
  3. ประสานชั้น Web, App และ DB
  4. นำโหนดออกจาก Load Balancer แล้วนำกลับเข้า
← กลับไปที่ Ansible Academy