Cara menghapus simpul mati secara otomatis dari kluster RabbitMQ

11

Saya berencana untuk membuat cluster RabbitMQ menggunakan Ansible di AWS VPC dengan penyeimbang beban internal Amazon sebagai antarmuka untuk mengarahkan koneksi ke sana.

Adakah saran cara menghapus simpul mati dari kluster RabbitMQ berdasarkan aturan autoscaling di mana simpul dapat naik dan turun, atau jika Anda menggunakan instance instance?

Ketika sebuah node turun, RabbitMQ tidak menghapusnya dari daftar replikasi secara otomatis, saya dapat melihat Node not runningdi UI manajemen.

Saya berhasil bergabung ke cluster contoh skala secara otomatis melalui Ansible dan userdata.

Diagram Infrastruktur

Berlin
sumber
@ Pierre.Vriens, saya berubah hanya 1 pertanyaan, terima kasih.
Berlin
Merci! Anda tidak menghancurkan 4 (atau lebih) pertanyaan lainnya yang saya harap. Mungkin menjadikannya sebagai pertanyaan folowup, sejauh mereka masih relevan?
Pierre.Vriens
Yap, pertanyaannya masih relevan, tapi yang ini paling penting. Saya akan memposting pertanyaan lain nanti :) terima kasih!
Berlin
1
@Berlin Saya membuat diagram yang mewakili apa yang saya pikir Anda gambarkan, jika Anda bermaksud sesuatu yang lain maka tolong beri tahu saya dan saya akan beradaptasi.
Richard Slater
1
Hey @ Pierre.Vriens - Saya tidak keberatan saya punya beberapa menit dan ingin mengklarifikasi asumsi saya, secara teoritis, saya bisa menambahkannya ke jawaban saya, dan saya mungkin melakukannya.
Richard Slater

Jawaban:

4

Pertimbangkan untuk menggunakan plugin rabbitmq / rabbitmq-autocluster :

Plugin RabbitMQ yang mengelompokkan node secara otomatis menggunakan sejumlah mekanisme penemuan rekan:

  • Konsul ,
  • dlld2
  • Catatan DNS A
  • Tag AWS EC2
  • Grup Autoscaling AWS

Ada sedikit konfigurasi yang harus dipasang untuk mendapatkan pengaturan ini termasuk pengaturan kebijakan IAM dan menambahkan tag EC2 ke instance yang Anda ingin menjadi bagian dari cluster Anda.

Jika Anda menggunakan AWS Autoscaling Groups maka Anda akan menambahkan yang berikut ini ke rabbitmq.config:

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

Jika Anda tidak menggunakan AWS Autoscaling Groups, Anda masih dapat mencapai hasil yang diinginkan menggunakan tag pada Instance EC2 Anda:

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

Dengan semua itu saya sangat merekomendasikan menggunakan Konsul oleh HashiCorp sebagai mekanisme penemuan layanan Anda, dalam jangka panjang, Anda mendapatkan fleksibilitas yang jauh lebih besar dalam hal memisahkan bagian-bagian Anda dari sistem Anda dari satu sama lain.

Richard Slater
sumber
terima kasih atas penjelasan terperinci dan diagram, jadi AFAIK rabbitmq/rabbitmq-autocluster pluginakan tahu juga untuk menghapus simpul dari daftar replikasi setelah simpul turun, satu hal lagi jika saya bertanya, saya pikir memulai dengan 2-nodecluster, apakah Anda menyarankan untuk memulai dengan 3-nodecluster seperti yang Anda jelaskan dalam diagram Anda dengan kebijakan `rabbitmqctl set_policy ha-all" "'{" ha-mode ":" all "," ha-sync-mode ":" automatic "}'`? atau haruskah saya mempostingnya di pertanyaan lain?
Berlin
1
Mungkin pertanyaan lain karena pemformatan dalam komentar tidak mudah digunakan. Saya selalu menyarankan klien ketika mengadopsi cloud untuk menggunakan jumlah kasus kecil yang lebih banyak daripada terbalik. Ini karena kegagalan diharapkan di cloud, jika Anda memiliki 2-node cluster dan 1 gagal Anda kehilangan 50% dari kapasitas Anda, sedangkan jika Anda memiliki 3-node cluster dan 1 gagal Anda hanya kehilangan 33%.
Richard Slater
Saya telah mengkonfigurasi cluster saya menggunakan rabbitmq/rabbitmq-autocluster plugindan berfungsi dengan baik namun ketika node turun RabbitMQ tidak menghapusnya dari daftar replikasi, ada ide mengapa?
Berlin
1
Sudahkah Anda mengaktifkan opsi konfigurasi Pembersihan Cluster?
Richard Slater
terima kasih, menemukannya https://github.com/aweber/rabbitmq-autocluster/wiki/General-Settings, saya akan mencobanya.
Berlin