เส้นทาง 05บทเรียน 7 / 8

กำหนดขอบเขตที่ปลอดภัยสำหรับ self-healing

ทำการกู้คืนที่รู้วิธีแล้วให้เป็นอัตโนมัติ พร้อมอำนาจที่ชัดเจน การตรวจสอบ และเงื่อนไขหยุด แยกการกู้คืน runtime ออกจากการเปลี่ยนซอฟต์แวร์

ขั้นสูง12 minตรวจทานแล้ว

เผยแพร่โดย วิธีเขียนเนื้อหาของเรา

ตรวจความเข้าใจController เริ่ม worker ใหม่แล้วสองครั้ง คิวยังเพิ่มขึ้น และเข้าถึงฐานข้อมูลไม่ได้ นโยบายควรให้ทำอะไร?ทำแบบฝึกหัด
Controller เริ่ม worker ใหม่แล้วสองครั้ง คิวยังเพิ่มขึ้น และเข้าถึงฐานข้อมูลไม่ได้ นโยบายควรให้ทำอะไร?

สิ่งที่จะได้เรียนรู้

  • แยก self-healing ออกจากการแก้ซอฟต์แวร์อย่างถาวร
  • กำหนดนโยบายกู้คืนที่มีขอบเขตและการตรวจสอบความสำเร็จอย่างเป็นอิสระ
  • ระบุว่าเมื่อใด automation ต้องหยุดและยกระดับเรื่อง

กู้คืนจากเงื่อนไขที่รู้จัก

Self-healing ตรวจพบความขัดข้องที่กำหนดโดยอัตโนมัติ และพยายามกู้คืนด้วยการกระทำที่ได้รับอนุญาต ตัวอย่างคือเริ่ม process ที่ล้มเหลวใหม่หรือแทนที่ instance ที่ผิดปกติ การกระทำต้องเหมาะกับความขัดข้องและโมเดลสถานะของบริการ

Kubernetes แทนที่ instance ของ workload ที่ล้มเหลวและปรับให้ตรงกับสถานะที่ประกาศไว้ได้ แต่ไม่ได้แก้ตรรกะแอปพลิเคชันที่ผิดหรือความขัดข้องของ storage ทุกแบบ การกู้คืนโครงสร้างพื้นฐานกับความถูกต้องของซอฟต์แวร์ต้องใช้การตรวจสอบต่างกัน Kubernetes self-healing

กำหนดเป้าหมายก่อนกลไก การกู้คืนการส่งออกหมายถึงงานที่เข้าเกณฑ์เสร็จอย่างถูกต้อง Container ที่ทำงานอยู่เป็นเพียงเงื่อนไขก่อนหน้าข้อหนึ่ง

แยกการเปลี่ยนแปลงสามประเภท

การเปลี่ยนแปลงตัวอย่างการตัดสินใจที่ต้องมี
การกู้คืน runtimeแทนที่ stateless worker ที่ล้มเหลวหนึ่งตัวนโยบายกู้คืนที่อนุมัติล่วงหน้าอาจให้อำนาจทำได้
การแก้ซอฟต์แวร์แก้ memory leak ที่ทำให้ worker หยุดการตรวจทาน test มาตรการควบคุม release และการตรวจสอบ production
การเปลี่ยนนโยบายเพิ่มอัตรา restart หรือขอบเขตสิทธิ์ที่อนุญาตการอนุมัติอย่างชัดเจนจากผู้รับผิดชอบนโยบาย

Agent อาจเสนอการแก้หลังการกู้คืน ข้อเสนอนั้นเป็นการเปลี่ยนซอฟต์แวร์ใหม่ ต้องไม่ได้รับอำนาจไม่จำกัดต่อมาจาก controller กู้คืน

Controller ต้องไม่แก้เกณฑ์ความสำเร็จของตัวเองเมื่อการตรวจไม่ผ่าน มิฉะนั้นระบบอาจรายงานว่าดีขึ้นโดยไม่ได้ทำให้บริการดีขึ้น

เขียนนโยบายกู้คืนก่อนเปิดใช้

นโยบายต่อไปนี้เป็นตัวอย่างสมมติ ตัวเลขใช้แสดงทางเลือกการออกแบบ ไม่ใช่ค่าเริ่มต้นที่แนะนำ

รายการนโยบายกฎของ export worker ในสถานการณ์สมมติ
เงื่อนไขเริ่มไม่ได้รับ heartbeat ของ worker เป็นเวลา 90 วินาที และมีงานในคิว
เงื่อนไขก่อนดำเนินการWorker อีกตัวทำงานปกติ การตรวจ dependency ผ่าน ไม่มีข้อสงสัยการบุกรุกหรือความผิดปกติด้านความถูกต้องครบถ้วน
การกระทำที่อนุญาตแทนที่ worker หนึ่งตัวด้วย artifact ที่อนุมัติอยู่ในปัจจุบัน
การป้องกันสถานะงานใช้ที่เก็บข้อมูลแบบคงทนและ idempotency key ที่ตรวจสอบแล้ว
ขีดจำกัดแทนที่ไม่เกินสองครั้งใน 15 นาที และไม่เกินครั้งละหนึ่งตัว
ช่วงพักรอห้านาทีหลังแทนที่ก่อนลองอีกครั้ง
ความสำเร็จงานสังเคราะห์เสร็จอย่างถูกต้อง และคิวที่ได้รับผลกระทบเริ่มลดลง
หยุดและยกระดับเงื่อนไขก่อนดำเนินการข้อใดไม่ผ่าน ถึงขีดจำกัด หรือตรวจสอบความสำเร็จไม่ได้

ใช้ตัวตนที่มีสิทธิ์เท่าที่จำเป็น บันทึกเวอร์ชันนโยบาย หลักฐานที่ทำให้เริ่ม การกระทำ ทรัพยากร และผล จัดให้มีวิธีปิด controller ที่เป็นอิสระ กำหนดคนที่รับผิดชอบรับเรื่องยกระดับ

ทดสอบเส้นทางความขัดข้องควบคู่กับการกู้คืนสำเร็จ

การลองใหม่อาจทำผลข้างเคียงซ้ำ Worker อาจเก็บไฟล์แล้วหยุดก่อนยืนยันงาน ตรวจสอบ idempotency ก่อนอนุญาตให้ทำอีกครั้ง ดูตัวอย่างความขัดข้องแบบ cloud native

การลองใหม่อาจซ้ำเติม dependency ที่โหลดเกินด้วย จำกัดจำนวนครั้ง ใช้ timeout และ backoff ที่เหมาะสม หลีกเลี่ยงการลองใหม่พร้อมกันทุก instance AWS อธิบายว่า backoff และ jitter ช่วยลดการซ้ำเติมนี้อย่างไร แนวทางการลองใหม่

ทดสอบนโยบายสมมติกับสามกรณี Worker ที่หยุดหนึ่งตัวควรกู้คืนได้ ฐานข้อมูลล่มควรทำให้ไม่แทนที่ซ้ำ ความผิดปกติด้านความถูกต้องครบถ้วนที่ยังไม่แน่ชัดควรหยุด automation และขอการตัดสินใจตอบสนอง

ตรวจกรณี telemetry ขาดด้วย Heartbeat ที่หายอาจหมายถึง worker ขัดข้องหรือเส้นทางเก็บข้อมูลขัดข้อง Controller ต้องมีหลักฐานเพียงพอสำหรับการกระทำ ไม่ใช่ความมั่นใจในคำอธิบายจาก AI

วัดว่านโยบายช่วยหรือไม่

บันทึกการกู้คืนที่ตรวจสอบแล้ว ความพยายามที่ไม่สำเร็จ การยกระดับ งานซ้ำ และเวลาที่ผู้ใช้ได้รับผลกระทบ เปรียบเทียบกับวิธีดำเนินงานเดิมภายใต้เงื่อนไขใกล้เคียงกัน

เก็บข้อบกพร่องต้นเหตุไว้เป็นงานวิศวกรรม การเริ่ม process ที่มี memory leak ใหม่ซ้ำอาจลดผลกระทบทันที แต่ leak ยังคงอยู่ เรียนต่อเรื่องการปรับปรุงระบบ เพื่อเชื่อมข้อสังเกตกับการแก้ที่คงผลระยะยาว

ทำแบบฝึกหัด

ออกแบบนโยบายกู้คืนสำหรับ export worker ในสถานการณ์สมมติของบทเรียน ระบุเงื่อนไขเริ่ม ข้อยกเว้น การกระทำที่อนุญาต จำนวนครั้งสูงสุด ช่วงพัก การตรวจสอบความสำเร็จ และผู้รับเรื่องยกระดับ ทดสอบกับฐานข้อมูลล่มและความผิดปกติด้านความถูกต้องครบถ้วนของข้อมูลที่ยังไม่ทราบสาเหตุ

ดาวน์โหลดใบงาน (Markdown)
ตรวจความเข้าใจ ↑

เรียนต่อ

แหล่งข้อมูลและเนื้อหาอ่านเพิ่มเติม

เนื้อหาเกี่ยวข้องจาก Taiga

← บทเรียนก่อนหน้า: เชื่อมการส่งมอบกับ SOC และ SIRT