Meta แพตช์ Linux ขนาดมหาศาลได้อย่างไร
(thenewstack.io)- การแพตช์เซิร์ฟเวอร์ Linux นั้นเป็นเรื่องง่าย แต่การแพตช์เซิร์ฟเวอร์หลายหมื่นเครื่องโดยไม่มี downtime ไม่ใช่เรื่องง่าย
- Meta ใช้ Kpatch และ KLP (Kernel Live Patching) ของ Red Hat เพื่อแพตช์เซิร์ฟเวอร์ Linux หลายล้านเครื่อง
- KLP สามารถนำอัปเดตความปลอดภัยล่าสุดไปใช้กับเคอร์เนล Linux ได้โดยไม่ต้องรีบูต
การแพตช์เคอร์เนลแบบสด
- การแพตช์เคอร์เนลแบบสดถูกจัดส่งเป็นแพ็กเกจที่มีโค้ดที่แก้ไขแล้ว แยกจากแพ็กเกจเคอร์เนลหลัก
- ไลฟ์แพตช์เป็นแบบสะสม โดยแพตช์ล่าสุดจะรวมการแก้ไขทั้งหมดจากแพตช์ก่อนหน้า
- ไลฟ์แพตช์ไม่ได้ใช้ได้กับทุกอย่าง ไม่สามารถแพตช์ข้อมูลหรือโครงสร้างได้ และการสร้างไลฟ์แพตช์ต้องใช้วิศวกรรมเพิ่มเติม
Kpatch
- Kpatch ทำงานโดยเปรียบเทียบเคอร์เนลต้นฉบับกับเคอร์เนลที่แพตช์แล้ว จากนั้นใช้โมดูลเคอร์เนลแบบกำหนดเองเพื่อแพตช์โค้ดใหม่เข้าไปในเคอร์เนลที่กำลังทำงานอยู่
- จากนั้นกระบวนการ Kpatch จะใช้ ftrace เพื่อตรวจสอบสแตกของโปรเซสที่มีอยู่ เพื่อยืนยันว่าสามารถทำการแพตช์ได้โดยไม่ก่อให้เกิดผลกระทบที่เป็นอันตราย
- เมื่อประเมินแล้วว่าปลอดภัย ก็จะรีไดเร็กต์โค้ดที่กำลังทำงานไปยังฟังก์ชันที่แพตช์แล้ว และลบโค้ดเก่าที่ล้าสมัยออก
- ตอนนี้แพตช์ถูกนำไปใช้กับเซิร์ฟเวอร์แล้วโดยไม่เกิด downtime
ในกรณีของ Meta
- แน่นอนว่าในความเป็นจริงมันไม่ได้ง่ายขนาดนั้น
- ที่ Meta การใช้ไลฟ์แพตช์กับโฮสต์โดยทั่วไปใช้เวลา 1–2 วินาที
- เวลา 1–2 วินาทีต่อโฮสต์นั้นเร็วมากเมื่อเทียบกับ
kexecซึ่งเป็นกลไกของเคอร์เนล Linux สำหรับบูตเคอร์เนลใหม่ - ไม่จำเป็นต้องมี downtime หรือย้าย workload เพียงแค่นำไลฟ์แพตช์ไปใช้ก็พร้อมใช้งานได้ทันที
วิธีแพตช์เครื่องหลายล้านเครื่อง
- เมื่อแพตช์เครื่องหลายล้านเครื่อง เรื่องราวไม่ได้จบแค่นี้
- ที่ Meta อาจพบบั๊กระหว่างการ rollout แพตช์ ดังนั้นผู้ดูแลระบบจึงแพตช์จาก release candidate tier ก่อน
- Package roller ที่จัดส่งแพตช์แบบ RPM-based จะตรวจสอบสุขภาพของเซิร์ฟเวอร์โดยอัตโนมัติด้วย
- Meta เฝ้าติดตามการแครช การแจ้งเตือนสำคัญ ปัญหาแอปพลิเคชัน และประสิทธิภาพบนเคอร์เนลใหม่ และหากอัตราข้อผิดพลาดเกิน 1 การแครชต่อเซิร์ฟเวอร์ 1,000 เครื่อง แพตช์จะถูกหยุดและย้อนกลับไปยังเคอร์เนลก่อนหน้า
- Meta ใช้ Kpatch แต่ก็มีทางเลือกอื่นเช่นกัน
- SUSE มี kGraft, Oracle ใช้ Ksplice และ Canonical รองรับ Livepatch
- ไม่ว่าจะเป็นโค้ดแบบใด ทั้งหมดก็ให้ผลลัพธ์ที่คล้ายกัน
ความเห็นของ GN⁺
ประเด็นสำคัญที่สุดของบทความนี้คือ Meta ได้นำวิธีการแพตช์ที่มีประสิทธิภาพและไม่ต้องมี downtime มาใช้กับเซิร์ฟเวอร์หลายล้านเครื่องทั่วโลก สิ่งนี้เป็นหัวข้อที่น่าสนใจแม้สำหรับวิศวกรซอฟต์แวร์ระดับเริ่มต้น และตอกย้ำความสำคัญของการดูแลรักษาและความปลอดภัยของระบบ Linux นอกจากนี้ บทความนี้ยังช่วยให้เข้าใจความซับซ้อนและความจำเป็นของเทคโนโลยีไลฟ์แพตช์ได้มากขึ้น
1 ความคิดเห็น
ความคิดเห็นบน Hacker News