Ölü bir düğümü RabbitMQ kümesinden otomatik olarak kaldırma


11

Amazon dahili yük dengeleyici ile AWS VPC'de Ansible'ı kullanarak bağlantıları yönlendirmek için ön uç olarak RabbitMQ kümesi oluşturmayı planlıyorum.

Düğümlerin yukarı ve aşağı gidebileceği otomatik ölçeklendirme kuralına dayalı olarak veya spot örnekleri kullanıyorsanız ölü bir düğümü RabbitMQ kümesinden nasıl kaldıracağınıza dair herhangi bir öneri?

Bir düğüm çöktüğünde, RabbitMQ onu çoğaltma listesinden otomatik olarak kaldırmaz Node not running, yönetim arayüzünde görebilirsiniz.

Ansible ve userdata üzerinden otomatik olarak kümeye ölçeklendirilmiş bir örneği katılmayı başardım.

Altyapı Diyagramı


@ Pierre.Vriens, sadece 1 soru olarak değiştirdim, teşekkürler.
Berlin

Mersi! Umarım diğer 4 soruyu yok etmedin. Belki de konuyla ilgili olarak, onları ilgilendiren bir soru olarak saklayın.
Pierre.Vriens

Evet, sorular hala alakalı, ama en önemlisi bu. Daha sonra başka bir soru göndereceğim :) teşekkürler!
Berlin

1
@Berlin Açıkladığınızı düşündüğüm şeyi temsil eden bir diyagram çizdim, başka bir şey ifade ediyorsanız lütfen bana bildirin ve adapte olacağım.
Richard Slater

1
Hey @ Pierre.Vriens - Birkaç dakikam vardı ve varsayımımı netleştirmek istedim, teorik olarak, cevabımı ekleyebilirim ve bunu yapabilirim.
Richard Slater

Yanıtlar:


4

Rabbitmq / rabbitmq-autocluster eklentisini kullanmayı düşünün :

Birkaç eş bulma mekanizması kullanarak düğümleri otomatik olarak kümeleyen bir RabbitMQ eklentisi:

  • Konsolos ,
  • etcd2
  • DNS A kayıtları
  • AWS EC2 etiketleri
  • AWS Otomatik Ölçeklendirme Grupları

Bir yoktur yapılandırmanın adil biraz IAM politikalarının belirlenmesine ve sizin kümeye parti olmak istiyorum örneklerine EC2 etiketleri ekleyerek dahil olmak üzere bu tertibat almak için fiş için.

AWS Otomatik Ölçeklendirme Gruplarını kullanacak olsaydınız, aşağıdakilere şunu eklersiniz rabbitmq.config:

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

AWS Otomatik Ölçeklendirme Grupları kullanmıyorsanız, EC2 Bulut Sunucularınızdaki etiketleri kullanarak istediğiniz sonucu elde edebilirsiniz:

[
  {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, "..."}
  ]}
].

Bunların hepsinin hizmet keşif mekanizması olarak Consul by HashiCorp'u kullanmanızı şiddetle tavsiye ettiğimi söyledikten sonra, uzun vadede sisteminizin parçalarını birbirinden ayırma konusunda önemli ölçüde daha fazla esneklik elde edersiniz.


AFAIK, böylece ayrıntılı bir açıklama ve diyagram için teşekkür ederim rabbitmq/rabbitmq-autocluster plugindüğüm aşağı bir kez çoğaltma listesinden düğüm kaldırmak da bilecek Sorabilir miyim, bir şey daha, ben başlamak düşünce 2-node, küme sen başlamak önermek olan 3-nodeküme diyagramınızda açıkladığınız gibi `rabbitmqctl set_policy ha-all" "'{" ha-mode ":" all "," ha-sync-mode ":" automatic "}' '? ya da başka bir soruya mı göndermeliyim?
Berlin

1
Muhtemelen başka bir soru yorum biçimlendirme kullanımı o kadar kolay değil. Müşterilere her zaman bulutun tersini kullanmak yerine çok sayıda küçük örneği kullanmasını tavsiye ettim. Bunun nedeni bulutta bir hata olması beklenir, 2 düğümlü bir kümeniz varsa ve 1 başarısız olursa kapasitenizin% 50'sini kaybedersiniz, 3 düğümlü bir kümeniz varsa ve 1 başarısız olursa sadece% 33 kaybedersiniz.
Richard Slater

Kümeyi kullanarak yapılandırdım rabbitmq/rabbitmq-autocluster pluginve düğüm aşağı düştüğünde oldukça iyi çalışıyor ancak RabbitMQ çoğaltma listesinden kaldırmıyor, neden herhangi bir fikir?
Berlin

1
Küme Temizleme yapılandırma seçeneğini etkinleştirdiniz mi?
Richard Slater

teşekkürler, buldum https://github.com/aweber/rabbitmq-autocluster/wiki/General-Settings, bunu deneyeceğim.
Berlin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.