วิธีการลบโหนดที่ตายโดยอัตโนมัติจากคลัสเตอร์ RabbitMQ


11

ฉันวางแผนที่จะสร้างคลัสเตอร์ RabbitMQ โดยใช้ Ansible บน AWS VPC กับ Amazon load balancer เป็นส่วนหน้าเพื่อเชื่อมต่อกับมัน

ข้อเสนอแนะวิธีการลบโหนดที่ตายแล้วจากคลัสเตอร์ RabbitMQ ตามกฎการปรับค่าอัตโนมัติที่โหนดสามารถขึ้นและลงหรือถ้าคุณใช้อินสแตนซ์จุด?

เมื่อโหนดล่ม RabbitMQ จะไม่ลบมันออกจากรายการการจำลองแบบอัตโนมัติฉันเห็นได้Node not runningใน UI การจัดการ

ฉันจัดการเพื่อเข้าร่วมกลุ่มอินสแตนซ์ที่ปรับขนาดได้โดยอัตโนมัติผ่าน Ansible และ userdata

แผนภาพโครงสร้างพื้นฐาน


@ Pierre.Vriens ฉันเปลี่ยนเป็นเพียง 1 คำถามขอบคุณ
เบอร์ลิน

Merci! คุณไม่ได้ทำลายคำถาม 4 ข้อ (หรือมากกว่านั้น) ที่ฉันหวัง อาจให้พวกเขาเป็นคำถาม folowup เพื่อขยายพวกเขายังคงเกี่ยวข้อง?
Pierre.Vriens

ใช่คำถามยังคงมีความเกี่ยวข้อง แต่คำถามนี้สำคัญที่สุด ฉันจะโพสต์คำถามอื่นในภายหลัง :) ขอบคุณ!
เบอร์ลิน

1
@Berlin ฉันวาดไดอะแกรมที่แสดงถึงสิ่งที่ฉันคิดว่าคุณกำลังอธิบายถ้าคุณหมายถึงอย่างอื่นแล้วโปรดแจ้งให้เราทราบและฉันจะปรับ
Richard Slater

1
เฮ้ @ Pierre.Vriens - ฉันไม่รังเกียจฉันมีเวลาไม่กี่นาทีและต้องการชี้แจงข้อสมมติของฉันในทางทฤษฎีฉันสามารถเพิ่มลงในคำตอบของฉันและฉันอาจทำอย่างนั้น
Richard Slater

คำตอบ:


4

พิจารณาใช้ปลั๊กอิน rabbitmq / rabbitmq-autocluster :

ปลั๊กอิน RabbitMQ ที่รวมกลุ่มโหนดโดยอัตโนมัติโดยใช้กลไกการค้นพบแบบ peer:

มีการกำหนดค่าที่ค่อนข้างยุติธรรมในการเชื่อมต่อเพื่อรับการตั้งค่านี้รวมถึงการตั้งค่านโยบาย IAM และเพิ่มแท็ก EC2 ให้กับอินสแตนซ์ที่คุณต้องการเข้าร่วมในคลัสเตอร์ของคุณ

หากคุณใช้ AWS Autoscaling Groups คุณจะต้องเพิ่มสิ่งต่อไปนี้ในrabbitmq.config:

[
  {rabbit, [ ... ]},
  {autocluster, [
    {backend, aws},
    {aws_autoscaling, true},
    {aws_ec2_region, "us-west-2"}
  ]}
].

หากคุณไม่ได้ใช้ AWS Autoscaling Groups คุณก็ยังสามารถใช้ผลลัพธ์ที่ต้องการได้โดยใช้แท็กบนอินสแตนซ์ EC2 ของคุณ:

[
  {rabbit, [ ... ]},
  {autocluster, [
    {backend, aws},
    {aws_ec2_tags, [{"region", "us-west-2"}, {"service", "rabbitmq"}]},
    {aws_ec2_region, "us-east-1"},
    {aws_access_key, "..."},
    {aws_secret_key, "..."}
  ]}
].

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


ขอบคุณสำหรับคำอธิบายโดยละเอียดและไดอะแกรมดังนั้น AFAIK rabbitmq/rabbitmq-autocluster pluginจะรู้ว่าจะลบโหนดออกจากรายการการทำซ้ำเมื่อโหนดล่มอีกสิ่งหนึ่งถ้าฉันถามฉันคิดว่าจะเริ่มต้นด้วย2-nodeคลัสเตอร์คุณแนะนำให้เริ่มต้นด้วย3-nodeคลัสเตอร์ ตามที่คุณอธิบายในไดอะแกรมของคุณด้วยนโยบาย `rabbitmqctl set_policy ha-all" "'{" ha-mode ":" all "," ha-sync-mode ":" automatic "}' '? หรือฉันควรโพสต์ไว้ในคำถามอื่น?
เบอร์ลิน

1
อาจเป็นอีกคำถามหนึ่งเนื่องจากการจัดรูปแบบในความคิดเห็นไม่ใช่สิ่งที่ใช้งานง่าย ฉันได้แนะนำลูกค้าเสมอเมื่อใช้คลาวด์เพื่อใช้อินสแตนซ์ขนาดเล็กจำนวนมากแทนที่จะเป็นอินเวอร์ส นี่เป็นเพราะคาดว่าจะเกิดความล้มเหลวในระบบคลาวด์หากคุณมีคลัสเตอร์ 2-node และ 1 ล้มเหลวคุณสูญเสียความสามารถของคุณไป 50% ในขณะที่ถ้าคุณมี 3-node Cluster และ 1 ล้มเหลวคุณจะเสีย 33% เท่านั้น
Richard Slater

ฉันได้กำหนดค่าคลัสเตอร์ของฉันโดยใช้rabbitmq/rabbitmq-autocluster pluginและมันทำงานได้ดี แต่เมื่อโหนดหยุดทำงาน RabbitMQ ไม่ได้ลบออกจากรายการการจำลองความคิดใด ๆ ว่าทำไม?
เบอร์ลิน

1
คุณเปิดใช้งานตัวเลือกการกำหนดค่า Cluster Cleanup หรือไม่
Richard Slater

ขอบคุณพบมันhttps://github.com/aweber/rabbitmq-autocluster/wiki/General-Settingsฉันจะลองดู
เบอร์ลิน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.