ฉันกำลังสำรวจ คิวประชุม RabbitMQ เพื่อปรับปรุง HA สำหรับบริการบางอย่างในคลัสเตอร์ Kubernetes ขณะที่ฉันกำลังอ่าน พวกเขาได้รับการออกแบบโดยคำนึงถึงความปลอดภัยของข้อมูลเป็นสำคัญ
อย่างไรก็ตาม บทที่ "การจัดการแบบจำลอง" รัฐ:
แบบจำลองของคิวองค์ประชุมได้รับการจัดการอย่างชัดเจนโดยผู้ดำเนินการ
เมื่อมีการเพิ่มโหนดใหม่ไปยังคลัสเตอร์ โหนดนั้นจะโฮสต์คิวไม่ครบองค์ประชุม
แบบจำลองเว้นแต่ผู้ดำเนินการจะเพิ่มให้กับสมาชิกอย่างชัดเจน (แบบจำลอง)
รายการคิวองค์ประชุมหรือชุดคิวองค์ประชุม
ดังนั้นจึงดูเหมือนว่าในกรณีของ การหยุดชะงัก (โดยเฉพาะอย่างยิ่งโดยไม่สมัครใจ) สถานการณ์ต่อไปนี้อาจเกิดขึ้นได้ (สำหรับคลัสเตอร์ 3 โหนด):
- หลังจากการหยุดชะงัก โหนดจะดับลง: อีกสองโหนดยังคงประกอบเสียงข้างมาก และจะ "รักษาคิวให้คงอยู่" โดยอาจเลือกผู้นำคนใหม่
- kubernetes จะจัดเตรียมโหนดใหม่ (พ็อด) เพื่อแทนที่โหนดที่ล้มเหลว โหนดใหม่จะเข้าร่วมคลัสเตอร์ RabbitMQ อีกครั้งโดยอัตโนมัติ แต่
- เว้นแต่ผู้ประกอบการ แทรกแซงด้วยตนเองโหนดใหม่จะ ไม่ มีส่วนร่วมในคิวองค์ประชุมที่มีอยู่;
- สำหรับคลัสเตอร์ 3 โหนด หมายความว่าไม่มี HA อีกต่อไป: หากในอนาคต โหนดอื่นล้มเหลว คิวจะหายไปอย่างมีประสิทธิภาพ
มีวิธีใดบ้างที่จะบรรเทาสถานการณ์นี้ ตัวอย่างเช่น เป็นไปได้หรือไม่ที่จะให้โหนดเข้าร่วมคลัสเตอร์คิวควอรัมที่มีอยู่ทั้งหมดอีกครั้งโดยอัตโนมัติ อาจด้วยการรักษารายการของ "คำสั่งเริ่มต้น" (ซึ่งทำงานหลังจากเริ่ม RabbitMQ) ซึ่งเราสามารถเพิ่มไฟล์ เข้าร่วมคำสั่งอีกครั้ง?