GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatur Cluster RabbitMQ di Ubuntu 20.04

RabbitMQ adalah perangkat lunak broker pesan gratis, open-source dan multi-protokol yang ditulis dalam bahasa pemrograman Erlang. Pialang pesan digunakan untuk menyimpan pesan untuk suatu aplikasi. Saat sebuah aplikasi mengirimkan data ke aplikasi lain, aplikasi tersebut akan memublikasikan pesan tersebut ke perantara pesan. RabbitMQ mendukung beberapa protokol perpesanan dan dapat dengan mudah digunakan dalam konfigurasi terdistribusi. Pialang pesan bertindak sebagai perantara untuk berbagai aplikasi web dan digunakan untuk mengurangi beban dan waktu pengiriman aplikasi web.

Dalam tutorial ini, kita akan menyiapkan Cluster RabbitMQ tiga-simpul di server Ubuntu 20.04.

Prasyarat

  • Tiga server menjalankan Ubuntu 20.04.
  • Kata sandi root dikonfigurasi di setiap server.

Memulai

Sebelum memulai, Anda perlu memperbarui paket sistem Anda ke versi terbaru. Anda dapat memperbaruinya dengan menjalankan perintah berikut di setiap node:

apt-get update -y

Setelah semua paket diperbarui, Anda perlu mengatur file /etc/hosts di setiap node. Jadi mereka dapat berkomunikasi satu sama lain dengan nama host.

Edit file /etc/hosts pada setiap node dengan perintah berikut:

nano /etc/hosts

Tambahkan baris berikut:

192.168.0.10 node1192.168.0.11 node2192.168.0.12 node3

Simpan dan tutup file setelah Anda selesai. Selanjutnya, Anda dapat melanjutkan ke langkah berikutnya.

Instal Server RabbitMQ

Selanjutnya, Anda perlu menginstal paket RabbitMQ Server di setiap node. Anda dapat menginstalnya hanya dengan menjalankan perintah berikut:

apt-get install rabbitmq-server -y

Setelah terinstal, mulai layanan RabbitMQ dan aktifkan untuk memulai pada sistem reboot dengan perintah berikut:

systemctl start rabbitmq-server
systemctl aktifkan rabbitmq-server

Anda juga dapat memverifikasi status layanan RabbitMQ dengan perintah berikut:

systemctl status rabbitmq-server

Anda akan mendapatkan output berikut:

? rabbitmq-server.service - Server Pesan RabbitMQ Dimuat:dimuat (/lib/systemd/system/rabbitmq-server.service; diaktifkan; preset vendor:diaktifkan) Aktif:aktif (berjalan) sejak Selasa 21-07-21 06:25:07 UTC; 19 menit yang lalu PID Utama:2565 (beam.smp) Status:"Diinisialisasi" Tugas:87 (batas:2353) Memori:83.5M CGroup:/system.slice/rabbitmq-server.service ??2551 /bin/sh /usr/ sbin/rabbitmq-server ??2565 /usr/lib/erlang/erts-10.6.4/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1> ??2828 erl_child_setup 65536 ??2921 inet_gethost 4 ??2922 inet_gethost 4Jul 21 06:24:58 node1 systemd[1]:Memulai RabbitMQ Messaging Server...21 Juli 06:25:07 node1 systemd[1]:rabbitmq- server.service:Mengawasi proses 2565 yang bukan anak kami. Kemungkinan besar kita tidak akan menyadarinya saat>21 Juli 06:25:07 node1 systemd[1]:Memulai Server Pesan RabbitMQ.

Pada titik ini, server RabbitMQ diinstal dan berjalan di setiap node. Sekarang Anda dapat melanjutkan ke langkah berikutnya.

Aktifkan Plugin Manajemen RabbitMQ

Plugin manajemen RabbitMQ menyediakan API berbasis HTTP yang dapat digunakan untuk memantau dan mengelola node dan cluster RabbitMQ melalui browser web. Secara default, ini berjalan pada port TCP 15672.

Anda dapat mengaktifkan plugin manajemen RabbitMQ dengan menjalankan perintah berikut di setiap node:

rabbitmq-plugins mengaktifkan rabbitmq_management

Anda akan melihat output berikut:

Mengaktifkan plugin pada node [email protected]:rabbitmq_managementPlugin berikut telah dikonfigurasi:rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatchMenerapkan konfigurasi plugin ke [email protected]Plugin berikut telah diaktifkan:rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch.

Selanjutnya, restart layanan RabbitMQ untuk menerapkan perubahan:

systemctl restart rabbitmq-server

Anda dapat memverifikasi port mendengarkan dengan perintah berikut:

netstat -tunelp | grep 15672

Anda akan melihat output berikut:

tcp 0 0 0.0.0.0:15672 0.0.0.0:* DENGARKAN 109 23155 2565/beam.smp

Siapkan Kluster RabbitMQ

Secara default, file /var/lib/rabbitmq/.erlang.cookie sama pada setiap node. Untuk menyiapkan cluster RabbitMQ, Anda perlu menyalin file /var/lib/rabbitmq/.erlang.cookie dari node1 ke node lain.

Pada node1, jalankan perintah berikut untuk menyalin file /var/lib/rabbitmq/.erlang.cookie ke node lain.

scp /var/lib/rabbitmq/.erlang.cookie [dilindungi email]:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [dilindungi email]:/var /lib/rabbitmq/

Selanjutnya, Anda perlu menyiapkan node1 dan node2 untuk bergabung dengan cluster node1.

Pertama, restart layanan RabbitMQ dan hentikan aplikasi dengan perintah berikut pada node2 dan node3:

systemctl restart rabbitmq-server
rabbitmqctl stop_app

Pada node2, gabungkan cluster pada node1 dengan menjalankan perintah berikut:

rabbitmqctl join_cluster [dilindungi email]

Anda akan melihat output berikut:

Clustering node [email protected] dengan [email protected]

Pada node2, jalankan aplikasi dengan perintah berikut:

rabbitmqctl start_app

Anda akan melihat output berikut:

Starting node [email protected] ... dilengkapi dengan 3 plugin.

Pada node3, gabungkan cluster pada node1 dengan menjalankan perintah berikut:

rabbitmqctl join_cluster [dilindungi email]

Anda akan melihat output berikut:

Clustering node [email protected] dengan [email protected]

Pada node3, jalankan aplikasi dengan perintah berikut:

rabbitmqctl start_app

Anda akan melihat output berikut:

Starting node [email protected] ... dilengkapi dengan 3 plugin.

Setelah Anda selesai dengan sukses, periksa status cluster dengan menjalankan perintah berikut pada node1:

rabbitmqctl cluster_status

Anda akan melihat output berikut:

Status cluster node [email protected] ...Dasar-dasarCluster name:[email protected]Disk Nodes[email protected][email protected][email protected]Running Nodes[email protected][email protected][email protected]Versi [dilindungi email]:RabbitMQ 3.8.2 di Erlang 22.2.7[dilindungi email]:RabbitMQ 3.8.2 di Erlang 22.2.7[dilindungi email]:RabbitMQ 3.8.2 di Erlang 22.2.7Alarm(none)Partisi Jaringan(none) ListenersNode:[dilindungi email], antarmuka:[::], port:25672, protokol:pengelompokan, tujuan:antar-node dan alat komunikasi CLINode:[dilindungi email], antarmuka:[::], port:5672, protokol:amqp, tujuan:AMQP 0-9-1 dan AMQP 1.0Node:[dilindungi email], antarmuka:[::], port:15672, protokol:http, tujuan:HTTP APINode:[dilindungi email], antarmuka:[::], port:25672, protokol:pengelompokan, tujuan:antar-node dan alat komunikasi CLINode:[dilindungi email], antarmuka:[::], port:5672, protokol:amqp, tujuan:AMQP 0-9-1 dan AMQP 1.0Node:[dilindungi email], antarmuka:[::], port:15672, protokol:http, tujuan:HTTP APINode:[dilindungi email], antarmuka:[::], port:25672, protokol:pengelompokan, tujuan:antar-simpul dan alat komunikasi CLINode:[dilindungi email], antarmuka:[::], port:5672, protokol:amqp, tujuan:AMQP 0-9-1 dan AMQP 1.0Node:[dilindungi email], antarmuka:[::], port:15672, protokol:http, tujuan:HTTP APIFeature flagsFlag:drop_unroutable_metric, status:disabledFlag:empty_basic_get_metric, status:disabledFlag:implisit_default_bindings, status:diaktifkanFlag:quorum_queue, status:diaktifkanFlag:virtual_host_metadata, status:diaktifkan

Setel Pengguna Administrator

Selanjutnya, Anda perlu membuat pengguna admin baru untuk server RabbitMQ dan menghapus pengguna 'tamu' default.

Anda dapat membuat user baru dengan nama "hitesh" dan password "password" dengan menjalankan perintah berikut pada node1:

rabbitmqctl add_user sandi hitesh

Anda akan melihat output berikut:

Menambahkan pengguna "hitesh" ...

Selanjutnya, konfigurasikan pengguna hitesh sebagai administrator dengan perintah berikut:

rabbitmqctl set_user_tags administrator hitesh

Anda akan melihat output berikut:

Menyetel tag untuk pengguna "hitesh" ke [administrator] ...

Selanjutnya, berikan izin kepada pengguna hitesh untuk memodifikasi, menulis, dan membaca semua vhost.

rabbitmqctl set_permissions -p / hitesh ".*" ".*" ".*"

Anda akan melihat output berikut:

Menyetel izin untuk pengguna "hitesh" di vhost "/" ...

Selanjutnya, hapus pengguna tamu dengan perintah berikut:

rabbitmqctl delete_user guest

Anda harus mendapatkan perintah berikut:

Menghapus pengguna "tamu" ...

Anda sekarang dapat membuat daftar semua pengguna dengan perintah berikut:

rabbitmqctl list_users

Anda akan mendapatkan output berikut:

Mencantumkan pengguna ...user tagshitesh [administrator]

Pengguna Anda yang telah Anda buat di node1 akan secara otomatis direplikasi ke semua node di cluster.

Pencerminan Antrian Pengaturan RabbitMQ

Secara default, isi antrian terletak pada satu node. Jadi, Anda perlu menyiapkan cluster 'ha policy' untuk pencerminan antrian dan replikasi ke semua node cluster.

Untuk melakukannya, buat kebijakan ha bernama 'ha-all' yang akan dicerminkan oleh semua antrean di cluster RabbitMQ ke semua node di cluster.

rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'

Keluaran:

Menyetel kebijakan "ha-all" untuk pola ".*" menjadi "{"ha-mode":"all"}" dengan prioritas "0" untuk vhost "/" ...

Selanjutnya, buat kebijakan ha bernama 'ha-dua' yang semua nama antrian dimulai dengan 'dua'. akan dicerminkan ke dua node di cluster.

rabbitmqctl set_policy ha-dua "^dua\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'

Keluaran:

Setel kebijakan "ha-two" untuk pola "^two\." ke "{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}" dengan prioritas "0" untuk vhost "/" ...

Selanjutnya, buat kebijakan ketersediaan tinggi bernama 'ha-nodes' yang akan berisi semua antrian di mana namanya dimulai dengan 'node'. Kami akan melakukan mirroring ke dua node tertentu 'node2' dan 'node3' di cluster.

rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'

Keluaran:

Setel kebijakan "ha-nodes" untuk pola "^nodes\." ke "{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}" dengan prioritas "0" untuk vhost "/" ... 

Anda sekarang dapat membuat daftar semua kebijakan yang dikonfigurasi dengan menjalankan perintah berikut:

rabbitmqctl list_policies;

Anda akan melihat output berikut:

Kebijakan listing untuk vhost "/" ...vhost name pattern apply-to definition priority/ ha-all .* all {"ha-mode":"all"} 0/ ha-two ^two\. semua {"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"} 0/ ha-nodes ^nodes\. semua {"ha-mode":"nodes","ha-params":["[email protected]","[email protected]"]} 0

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Mengakses Kluster RabbitMQ

Sekarang Anda dapat mengakses antarmuka web RabbitMQ dengan mengetikkan alamat IP node mana pun di browser web Anda dengan port 15672 seperti http://192.168.0.10:15672/. Anda akan melihat halaman login RabbitMQ:

Berikan nama pengguna, kata sandi admin Anda, dan klik Masuk tombol. Anda akan melihat dasbor RabbitMQ di layar berikut:

Selanjutnya, klik 'Admin ' menu tab, dan klik 'Kebijakan ' Tidak bisa. Anda akan melihat semua kebijakan RabbitMQ ha yang telah kami buat di layar berikut:

Kesimpulan

Selamat! Anda telah berhasil mengatur cluster RabbitMQ tiga simpul di server Ubuntu20.04. Cluster Anda sekarang berbagi informasi konfigurasi termasuk, topologi, dan informasi keamanan di semua node.


Ubuntu
  1. Cara Menginstal Logstash di Ubuntu 18.04

  2. Cara Mengatur VPN WireGuard di Ubuntu 20.04

  3. Ubuntu – Bagaimana Cara Mengatur Ip Statis Di Ubuntu?

  1. Cara Menginstal Redis di Ubuntu 20.04 / 18.04

  2. Cara mengatur MySQL Cluster di Ubuntu

  3. Bagaimana cara menginstal dan mengatur Git di Ubuntu?

  1. Cara Mengatur Server OpenVPN di Ubuntu 18.04

  2. Cara Mengatur Server Nama DNS di Ubuntu 18.04

  3. Cara Mengatur VPN WireGuard di Ubuntu 18.04