GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengatur Cluster RabbitMQ di Ubuntu/Debian Linux

Apakah Anda ingin mengurangi beban kerja dan waktu pengiriman aplikasi Anda? Selamatkan diri Anda dari sakit kepala dan siapkan cluster RabbitMQ untuk aplikasi Anda!

Dalam tutorial ini, Anda akan mempelajari cara menyiapkan Cluster RabbitMQ dan memiliki cluster RabbitMQ yang berfungsi penuh dengan dukungan ketersediaan tinggi.

Siap? Baca terus dan mulai kurangi beban kerja!

Prasyarat

Untuk mengikuti tutorial ini, pastikan Anda memiliki persyaratan berikut:

  • Dua atau lebih server Linux dalam jaringan yang sama – Tutorial ini menggunakan tiga server Debian 11 bernama node01, node02, dan node03.
  • Hak istimewa root sudo atau akses ke akun root/administrator.

Menyiapkan File Host

Cluster RabbitMQ bekerja dengan nama host atau domain lokal. Anda harus memastikan setiap nama host ditetapkan ke alamat IP server dengan mengedit /etc/hosts berkas.

Buka /etc/hosts file di semua server menggunakan editor teks pilihan Anda, dan tambahkan baris berikut ke file.

Ingat bahwa mengedit file /etc/hosts memerlukan hak istimewa sudo.

Format /etc/hosts konfigurasinya adalah IP-address hostname .

Ganti nilai di bawah ini dengan alamat IP dan nama host server Anda, simpan perubahan, dan keluar dari editor.

# /etc/hosts file RabbitMQ Servers
172.16.1.20     node01
172.16.1.21     node02
172.16.1.22     node03

Sekarang, jalankan ping perintah di bawah ini untuk memverifikasi setiap nama host diselesaikan ke alamat IP server yang benar. Setiap -c 3 opsi membuat ping permintaan tiga kali, lalu menghentikan permintaan.

# ping node01 node02 and node03
ping -c 3 node01
ping -c 3 node02
ping -c 3 node03

Jika konfigurasi Anda benar, Anda akan melihat setiap nama host diselesaikan ke alamat IP server yang benar, seperti yang ditunjukkan di bawah ini.

Memasang RabbitMQ di Semua Server

Sekarang setelah Anda mengonfigurasi /etc/hosts file di semua server, saatnya menginstal paket RabbitMQ di semua server (node01, node02, dan node03). Anda dapat menginstal RabbitMQ dari repositori distribusi resmi untuk sebagian besar distribusi Linux.

Pada saat penulisan, repositori Debian dan Ubuntu menyediakan RabbitMQ stabil terbaru versi 3.8.9.

1. Jalankan apt perintah di bawah ini untuk menyegarkan semua indeks paket sistem Anda.

sudo apt update

2. Selanjutnya, jalankan apt install berikut ini perintah untuk menginstal RabbitMQ (rabbitmq-server ) di sistem Anda.

Setelah instalasi selesai, rabbitmq-server layanan secara otomatis dimulai dan diaktifkan pada sistem Anda.

sudo apt install rabbitmq-server -y

3. Terakhir, jalankan perintah berikut untuk memverifikasi rabbitmq-server status layanan.

sudo systemctl status rabbitmq-server

Di bawah ini, Anda dapat melihat layanan server RabbitMQ aktif (berjalan) dan diaktifkan . Akibatnya, layanan mulai secara otomatis saat boot/startup sistem.

Selain itu, Anda juga dapat memverifikasi versi RabbitMQ di sistem Anda menggunakan perintah berikut.

sudo rabbitmq-diagnostics server_version

Versi RabbitMQ yang diinstal adalah 3.8.9 , seperti yang ditunjukkan di bawah ini, tetapi milik Anda mungkin berbeda.

Menyiapkan Kluster RabbitMQ

Setelah Anda menginstal RabbitMQ, saatnya untuk mengatur cluster RabbitMQ. Menggunakan cluster RabbitMQ mencegah kehilangan dan kehilangan data di antara aplikasi Anda. Cluster RabbitMQ menyediakan replikasi dan ketersediaan tinggi di semua server.

RabbitMQ adalah aplikasi yang ditulis dalam Erlang dan secara default, menyediakan .erlang.cookie file di direktori data RabbitMQ (/var/lib/rabbitmq) .

Untuk membuat cluster RabbitMQ, Anda harus menyiapkan .erlang.cookie file di setiap server dengan konten yang sama dan harus dimiliki oleh rabbitmq pengguna dan grup.

1. Pada server node01, jalankan perintah berikut untuk memeriksa file yang tersedia di direktori data RabbitMQ (/var/lib/rabbitmq ). Perintah kemudian mencetak konten .erlang.cookie mengajukan.

# List files and directories on /var/lib/rabbitmq
ls -lah /var/lib/rabbitmq

# Print content of the file .erlang.cookie
cat /var/lib/rabbitmq/.erlang.cookie

Salin output (UXPBSDKHLRMGJSOJVEAN ) ke catatan Anda karena Anda akan menambahkan output ini ke server node02 dan node03 dalam langkah-langkah berikut. Perlu diingat bahwa Anda mungkin mendapatkan output yang berbeda dari .erlang.cookie. file dari apa yang ditunjukkan di bawah ini.

2. Selanjutnya pindah ke server node02, dan jalankan perintah berikut ke stop rabbitmq melayani.

sudo systemctl stop rabbitmq-server

3. Edit /var/lib/rabbitmq/.erlang.cookie file di editor teks pilihan Anda. Ganti konten asli dengan yang Anda catat di langkah pertama, simpan perubahan dan keluar dari editor.

# content of .erlang.cookie from node01
UXPBSDKHLRMGJSOJVEAN

4. Sekarang, jalankan perintah di bawah ini untuk memulai rabbitmq-server melayani.

sudo systemctl start rabbitmq-server

5. Beralih ke server node03 dan ulangi langkah (dua hingga empat) untuk mengedit /var/lib/rabbitmq/.erlang.cookie berkas.

6. Jalankan rabbitmqctl berikut ini perintah pada server node02 dan node03 untuk menambahkannya ke cluster RabbitMQ (node01).

# Stop RabbitMQ application
sudo rabbitmqctl stop_app

# Join the RabbitMQ node01
sudo rabbitmqctl join_cluster [email protected]

# Start the RabbitMQ application again
sudo rabbitmqctl start_app

Di bawah ini, Anda dapat melihat server node02 mengelompok dengan cluster RabbitMQ (node01), dan hal yang sama berlaku untuk server node03.

7. Terakhir, jalankan rabbitmqctl perintah di bawah ini untuk memverifikasi status cluster RabbitMQ. Anda dapat menjalankan ini dari server mana pun (node01, node02, atau node03).

sudo rabbitmqctl cluster_status

Anda dapat melihat pada output di bawah nama cluster ([email protected] ) dan node yang sedang berjalan.

Menyiapkan Pengguna Admin untuk RabbitMQ

Setelah menyiapkan cluster RabbitMQ, Anda akan membuat pengguna admin baru untuk RabbitMQ dan menghapus pengguna tamu default. Pengguna admin RabbitMQ memiliki izin untuk mengonfigurasi, membaca, dan menulis entitas apa pun yang tersedia di cluster RabbitMQ.

1. Beralih ke server node01, dan jalankan rabbitmqctl perintah di bawah ini untuk membuat pengguna baru bernama admin dengan kata sandi yang ditetapkan sebagai AdminPassRabbitMQ . Anda dapat mengatur nama pengguna dan kata sandi pilihan Anda, tetapi pastikan untuk mengatur kata sandi yang kuat.

sudo rabbitmqctl add_user admin AdminPassRabbitMQ

2. Selanjutnya, jalankan perintah berikut untuk mengatur (set_user_tags ) pengguna baru (admin ) sebagai administrator untuk cluster RabbitMQ.

sudo rabbitmqctl set_user_tags admin administrator

3. Jalankan perintah di bawah ini ke set_permissions ke admin pengguna dengan yang berikut:

  • Mengizinkan (-p / ) admin pengguna untuk mengakses semua vhost di cluster RabbitMQ.
  • ".*" pertama – Memungkinkan pengguna untuk mengonfigurasi izin untuk setiap entitas dan vhost.
  • Kedua ".*" – Mengaktifkan izin tulis bagi pengguna untuk setiap entitas dan vhost.
  • Ketiga ".*" – Mengaktifkan izin baca bagi pengguna untuk setiap entitas dan vhost.
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

4. Sekarang, jalankan perintah berikut untuk menghapus (delete_user ) pengguna default (guest ) dari cluster RabbitMQ.

sudo rabbitmqctl delete_user guest

5. Terakhir, jalankan perintah di bawah ini untuk membuat daftar semua pengguna yang tersedia (list_users ) di cluster RabbitMQ.

sudo rabbitmqctl list_users

Di bawah, Anda hanya dapat melihat satu pengguna (admin) . Anda juga dapat memverifikasi pengguna dari server lain (node02 dan node03), dan Anda akan mendapatkan output yang sama.

Membuat Host Virtual dan Pengguna Admin baru di RabbitMQ

Anda telah menyiapkan cluster RabbitMQ dan membuat pengguna admin di RabbitMQ. Namun sekarang, Anda akan membuat virtual host (vhost) dan pengguna di RabbitMQ, sehingga aplikasi Anda dapat terhubung ke RabbitMQ.

Konsep dasar virtual host (vhost) di RabbitMQ mirip dengan apa yang ada di Apache atau blok server di NGINX. Setiap vhost memiliki entitas seperti pertukaran, antrian, pengikatan, izin pengguna, otentikasi, dll.

1. Jalankan rabbitmqctl perintah di bawah ini untuk membuat vhost baru (add_vhost ) bernama app-qa1 .

sudo rabbitmqctl add_vhost app-qa1

2. Selanjutnya, jalankan perintah berikut untuk membuat pengguna baru (add_user ) bernama alice dengan kata sandi AlicePassRabbitMQ dan beri tag pengguna sebagai administrator . Anda dapat mengatur nama pengguna dan kata sandi sesuai keinginan Anda.

# create new user alice
sudo rabbitmqctl add_user alice AlicePassRabbitMQ

# set a tag administrator for user alice
sudo rabbitmqctl set_user_tags alice administrator

3. Jalankan perintah di bawah ini untuk mengatur izin ke pengguna alice untuk mengelola vhost app-qa1 . Izin ini memungkinkan pengguna alice untuk mengonfigurasi, membaca, dan menulis semua entitas di bawah vhost app-qa1 .

# set up permission for user alice
sudo rabbitmqctl set_permissions alice --vhost app-qa1 ".*" ".*" ".*"

4. Terakhir, jalankan setiap perintah di bawah ini untuk membuat daftar vhost yang tersedia (list_vhosts ) pada cluster RabbitMQ dan izin (list_user_permissions ) dari pengguna admin baru (alice ).

# check available vhosts on RabbitMQ
sudo rabbitmqctl list_vhosts

# check permissions for user alice
sudo rabbitmqctl list_user_permissions alice

Membuat Pertukaran, Antrian, dan Binding di RabbitMQ

Host virtual dan pengguna admin Anda telah disiapkan, tetapi apakah hanya itu yang Anda perlukan agar aplikasi Anda berfungsi? Anda masih perlu membuat entitas, seperti pertukaran, antrian, dan binding di RabbitMQ. Entitas tersebut diperlukan untuk membuat aplikasi Anda bekerja dengan RabbitMQ.

1. Jalankan rabbitmqadmin berikut ini perintah untuk membuat pertukaran baru di RabbitMQ yang disebut test_exchange di bawah app-qa1 vhost dan pengguna alice . Anda dapat menentukan jenis pertukaran dengan type opsi, yaitu direct untuk demo ini.

# Create new exchange test_exchange
sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 declare exchange name=test_exchange type=direct

2. Selanjutnya, jalankan setiap perintah di bawah ini untuk membuat antrian baru di RabbitMQ. Dalam demo ini, Anda akan membuat classic default (test_classic ) dan quorum antrian bernama test_quorum .

# create quorum queue with option queue_type=quorum
sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 declare queue name=test_quorum durable=true queue_type=quorum

# create default classic queue
sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 declare queue name=test_classic durable=true

3. Jalankan perintah di bawah ini untuk membuat pengikatan untuk keduanya test_classic dan test_quorum antrian. Setiap pengikatan memiliki routing_key yang berbeda tetapi masih berjalan di bursa yang sama (test_exchange ).

# create binding for test_quorum
sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 declare binding source="test_exchange" destination_type="queue" destination="test_quorum" routing_key="test_routing_key_quorum"

# create binding for test_classic
sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 declare binding source="test_exchange" destination_type="queue" destination="test_classic" routing_key="test_routing_key_classic"

4. Sekarang, jalankan perintah berikut ke publish hello, world pesan ke test_exchange . Pastikan untuk menyetel routing_key. yang benar

# publish message for the test_quorum queue
sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 publish exchange=test_exchange routing_key=test_routing_key_quorum payload="hello world, Quorum Queue"

# publish message for the test_classic queue
sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 publish exchange=test_exchange routing_key=test_routing_key_classic payload="hello world, Classic Queue"

5. Terakhir, jalankan perintah berikut ke get hello, world pesan dari test_quorum dan test_classic antrian.

# retrieve the message from test_quorum queue
sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 get queue=test_quorum

# retrieve the message from test_classic queue
sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 get queue=test_classic

Seperti yang ditunjukkan di bawah ini, Anda akan mengetahui bahwa antrean berfungsi jika Anda menerima hello, world pesan dari test_quorum dan test_classic antrian.

Mengaktifkan Plugin Manajemen RabbitMQ

Anda telah berhasil mengerjakan RabbitMQ melalui lingkungan baris perintah sejauh ini. Tapi mungkin, Anda lebih suka GUI untuk berinteraksi dengan server dan cluster RabbitMQ. Jika demikian, Anda harus mengaktifkan plugin manajemen RabbitMQ.

Plugin Manajemen RabbitMQ menyediakan UI manajemen berbasis web yang berjalan pada port default 15672 dan alat manajemen baris perintah [rabbitmqadmin]

Jalankan rabbitmq-plugins perintah di bawah ini pada semua server (node01, node02, dan node03) untuk mengaktifkan rabbitmq_management pengaya. Perintah ini secara otomatis mengaktifkan plugin lain yang diperlukan, seperti rabbitmq_management_agent dan rabbitmq_web_dispatch .

sudo rabbitmq-plugins enable rabbitmq_management

Di bawah ini adalah output serupa yang akan Anda lihat di layar terminal Anda.

Sekarang, buka browser web Anda, dan arahkan ke alamat IP server Anda diikuti dengan port 15672 (http://172.16.1.20:15672/) untuk mengakses antarmuka manajemen berbasis web RabbitMQ. Port 15672 terbuka secara otomatis saat Anda mengaktifkan plugin manajemen RabbitMQ.

Masuk ke halaman masuk UI manajemen RabbitMQ dengan pengguna alice dan sandi AlicePassRabbitMQ .

Di dasbor RabbitMQ, Anda akan melihat semua node yang tersedia di cluster RabbitMQ.

Di bawah ini, Anda dapat melihat semua node di cluster RabbitMQ berjalan tanpa masalah.

Memverifikasi Antrian Kuorum dengan Ketersediaan Tinggi

Anda sebelumnya telah memverifikasi bahwa node di cluster RabbitMQ sedang berjalan dan antrian berfungsi, dan itu bagus. Tetapi bagaimana jika salah satu node mati atau gagal? Pastikan antrean test_quorum menyediakan ketersediaan tinggi dan replikasi di seluruh server.

1. Pada dasbor RabbitMQ, klik Antrian tab untuk mengakses antrian yang tersedia di cluster RabbitMQ.

Di bawah ini, Anda dapat melihat test_classic antrian dan test_quorum antre.

2. Selanjutnya, klik test_classic antrian untuk mendapatkan informasi rinci.

Seperti yang Anda lihat di bawah, test_classic antrian berjalan di [email protected] tanpa cermin/replikasi. Ketika node [email protected] sedang down, test_classic antrian menjadi tidak tersedia.

3. Beralih kembali ke Antrian menu, tapi klik test_quorum antrian kali ini.

Di bawah, Anda dapat melihat test_quorum antrian tersedia di [email protected] dan juga menyediakan mirror ke node lain di cluster. Penyiapan ini akan menjaga test_quorum antrian berjalan bahkan ketika node01 sedang down.

4. Sekarang, jalankan perintah berikut untuk mematikan/mematikan node01 server. Dengan server node01 down.

# turnoff node01
sudo poweroff

5. Pindah ke server node02 dan jalankan perintah di bawah ini untuk memeriksa cluster_status RabbitMQ

# checking RabbitMQ cluster status
sudo rabbitmqctl cluster_status

Anda akan melihat Running Nodes current saat ini pada cluster RabbitMQ adalah node02 dan simpul03 .

6. Selanjutnya jalankan perintah berikut untuk mendapatkan pesan “hello world” dari test_classic antre. Perintah ini akan membuat lima permintaan ke test_classic antrian menggunakan loop Bash.

# setup temporary environment variable CLASSIC
export CLASSIC="sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 get queue=test_classic"

# retrieve message from `test_classic` queue 5 times using bash loop
for i in {1..5}; do $CLASSIC; done

Anda akan menerima pesan Tidak ditemukan output, seperti yang ditunjukkan di bawah ini, karena server node01 sedang down.

7. Terakhir, jalankan perintah berikut untuk mengambil pesan “hello world” dari test_quorum antre.

Mirip dengan menguji antrian test_classic, perintah ini membuat lima permintaan ke test_quorum antrian, tapi kali ini, Anda akan mendapatkan pesan "hello world" bahkan node01 sedang turun. Mengapa? test_quorum antrian secara otomatis direplikasi/dicerminkan ke server node02 atau node03.

# setup temporary environment variable QUORUM
export QUORUM="sudo rabbitmqadmin -u alice -p AlicePassRabbitMQ -V app-qa1 get queue=test_quorum"

# retrieve message from `test_quorum` queue 5 times using bash loop
for i in {1..5}; do $QUORUM; done

Kesimpulan

Tutorial ini bertujuan untuk membantu Anda melalui proses pengaturan cluster RabbitMQ pada sistem Debian/Ubuntu Linux. Anda juga telah mempelajari administrasi dasar server RabbitMQ dan cara membuat antrean yang mendukung ketersediaan tinggi di RabbitMQ.

Anda telah menyiapkan cluster RabbitMQ sepenuhnya pada saat ini. Jadi apa selanjutnya? Mungkin belajar mengimplementasikan RabbitMQ ke aplikasi Anda?


Linux
  1. Cara menonaktifkan IPv6 di Ubuntu, Linux Mint, Debian

  2. Cara mengatur MySQL Cluster di Ubuntu

  3. Bagaimana cara mengatur nama utas di Linux pthreads?

  1. Cara Mengatur Server LAMP Ubuntu/Debian

  2. Cara mengatur alamat IP dari C di linux

  3. Cara mengatur antarmuka jaringan yang disukai di linux

  1. Cara membuat daftar hitam modul di Ubuntu/Debian Linux

  2. Cara Mengatur atau Mengubah Zona Waktu di Linux

  3. Linux – Bagaimana Cara Mengatur Afinitas Prosesor Suatu Proses Di Linux?