Mengelompokkan RabbitMQ pada CentOS 7

RabbitMQ adalah broker pesan sumber terbuka yang mendukung AMQP, STOMP, dan teknologi komunikasi lainnya. Ini banyak digunakan dalam aplikasi perusahaan dan arsitektur layanan mikro modern di mana ia bertindak sebagai saluran pesan tidak sinkron antara berbagai layanan mikro. Panduan ini akan menjelaskan bagaimana Anda bisa mengelompokkan RabbitMQ pada beberapa server CentOS 7 untuk membentuk broker pesan ketersediaan tinggi. Dalam tutorial ini, satu server akan bertindak sebagai server master dan server lainnya akan bertindak sebagai server cermin jika server master tidak tersedia.

Prasyarat

Konfigurasikan firewall

CentOS firewall, ( firewalld), tidak mengizinkan lalu lintas masuk secara default. Untuk membuat RabbitMQ tersedia untuk sistem lain di dalam dan di luar jaringan, dan untuk memungkinkan kami mengakses konsol manajemen, pertama-tama kita harus membuka beberapa port.

Konsol manajemen antarmuka web RabbitMQ mendengarkan secara default di port 15672. Kami ingin membuat konsol manajemen tersedia untuk umum sehingga kami dapat mengaksesnya dari komputer kami. Karena itu kami akan menginstruksikan firewallduntuk secara permanen membuka port 15672di zona publik (yang merupakan zona default dan aktif pada instance Vultr).

sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent

Simpul RabbitMQ harus dapat berkomunikasi satu sama lain. Kami ingin membuka port yang diperlukan, tetapi hanya melalui jaringan internal. Kami tidak ingin siapa pun di internet dapat mengelola atau langsung menghubungi server kami. Perintah berikut menganggap bahwa server kami ada di 192.168.0.100/24subnet.

Layanan pertama adalah layanan epmdpenemuan rekan yang mendengarkan secara default di port 4369.

sudo firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.0.100/24"
  port protocol="tcp" port="4369" accept'

Untuk komunikasi internode dan CLI, RabbitMQ harus dapat berkomunikasi melalui port 25672.

sudo firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.0.100/24"
  port protocol="tcp" port="25672" accept'

Alat CLI berkomunikasi melalui rentang port 35672-35682.

sudo firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.0.100/24"
  port protocol="tcp" port="35672-35682" accept'

Jika aplikasi Anda memerlukan protokol AMQP, Anda juga perlu membuka porta 5671dan 5672. Jika Anda harus dapat berkomunikasi melalui protokol lain, Anda dapat menemukan informasi yang diperlukan tentang persyaratan jaringan RabbitMQ pada dokumentasi resmi RabbitMQ .

sudo firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.0.100/24"
  port protocol="tcp" port="5672" accept'

sudo firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.0.100/24"
  port protocol="tcp" port="5671" accept'

Sekarang firewalldsudah dikonfigurasi, kita perlu menginstruksikannya untuk memuat ulang konfigurasi.

sudo firewall-cmd --reload

Ulangi langkah-langkah dari bagian ini di semua server.

Install rabbitmqadmin

Plugin manajemen dilengkapi dengan alat Python yang disebut rabbitmqadminyang dapat dengan mudah diinstal pada sistem setelah plugin manajemen diaktifkan.

sudo wget http://localhost:15672/cli/rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin/
sudo chmod +x /usr/local/bin/rabbitmqadmin

Konfigurasikan DNS

Anda harus menggunakan nama host server untuk mengidentifikasi server saat pengelompokan. Secara default, server tidak memiliki catatan DNS yang ditetapkan dan koneksi akan gagal. Untuk segera mengatasinya, tambahkan nama host master dan mirror ke /etc/hostsfile menggunakan editor favorit Anda.

Misalnya, file host master Anda mungkin terlihat seperti berikut. Perhatikan dua catatan terakhir, yang memungkinkan server untuk mengidentifikasi satu sama lain dengan nama host mereka. Pastikan untuk mengubah alamat IP ke alamat Anda.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1 guest
::1       guest

127.0.0.1 YOUR_MASTER_SERVER_HOST_NAME
::1       YOUR_MASTER_SERVER_HOST_NAME


192.168.0.101 YOUR_MASTER_SERVER_HOST_NAME
192.168.0.102 YOUR_MIRROR_SERVER_HOST_NAME

Mengelompokkan node

Prasyarat impor untuk memungkinkan node bergabung satu sama lain adalah bahwa cookie Erlang dari semua node identik. Secara default, setiap node akan diberi cookie Erlang yang unik, jadi Anda harus mengkonfigurasi ulang pada semua node.

Perintah berikut akan mengatur cookie Erlang menjadi " WE<3COOKIES", tetapi jangan ragu untuk mengubahnya sesuai keinginan Anda. Lakukan ini di semua server.

sudo sh -c "echo 'WE<3COOKIES' > /var/lib/rabbitmq/.erlang.cookie"

Mulai ulang RabbitMQ di semua server untuk memastikan bahwa cookie Erlang dimuat ulang dengan benar.

sudo systemctl restart rabbitmq-server.service

Jalankan perintah berikut pada semua server kecuali pada server master. Ini akan membiarkan node bergabung dengan server master dan membentuk sebuah cluster.

sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster "rabbit@<YOUR_MASTER_SERVER_HOST_NAME>"
sudo rabbitmqctl start_app

Verifikasi bahwa node telah bergabung dengan cluster dengan menjalankan perintah berikut.

sudo rabbitmqctl cluster_status

Semua node Anda akan muncul di bagian nodesdan running_nodesdi output. Mulai sekarang, Anda tidak perlu lagi mengulangi langkah-langkah di setiap server, konfigurasi akan secara otomatis dicerminkan ke node lain.

Buat kebijakan ketersediaan tinggi

Sekarang kita memiliki sekelompok node RabbitMQ, kita dapat menggunakan ini untuk membuat antrian ketersediaan tinggi dan pertukaran dengan menyiapkan kebijakan baru. Kebijakan ini dapat ditambahkan melalui RabbitMQ Management Console atau menggunakan antarmuka baris perintah.

sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "all" ha ".*" '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'

Daftar berikut ini akan menjelaskan apa arti setiap bagian dari perintah.

  • -p "/": Gunakan kebijakan ini di "/"vhost (default setelah instalasi)
  • --priority 1: Urutan untuk menerapkan kebijakan
  • --apply-to "all": Bisa jadi "queues", "exchanges"atau"all"
  • ha: Nama yang kami berikan untuk kebijakan kami
  • ".*": Ekspresi reguler yang digunakan untuk memutuskan antrian atau pertukaran kebijakan mana yang diterapkan. ".*"akan cocok dengan apa pun
  • '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}': Representasi kebijakan JSON. Dokumen ini menjelaskan bahwa kami ingin - tepatnya 2 node tempat data disinkronkan secara otomatis

Singkatnya, kebijakan ini akan memastikan bahwa kami akan selalu memiliki 2 salinan data pada antrian atau pertukaran selama kami memiliki minimal 2 node aktif dan berjalan. Jika Anda memiliki lebih banyak node, Anda dapat meningkatkan nilai ha-params. Kuorum, ( N/2 + 1), dari node disarankan. Memiliki lebih banyak salinan data Anda akan menghasilkan disk yang lebih tinggi, i / o, dan penggunaan bersih yang dapat mengakibatkan kinerja yang menurun.

Jika Anda ingin mirror data ke semua node di cluster, Anda bisa menggunakan dokumen JSON berikut.

'{ "ha-mode": "all", "ha-sync-mode": "automatic"}'

Jika Anda ingin mirror data hanya ke node tertentu, (misalnya: node-1dan node-2), Anda bisa menggunakan yang berikut ini.

'{ "ha-mode": "nodes", "ha-params" :["rabbit@node-1", "rabbit@node-2"], "ha-sync-mode": "automatic"}'

Anda dapat mengubah ekspresi reguler untuk menetapkan kebijakan berbeda ke antrian yang berbeda. Katakanlah kita memiliki tiga simpul berikut:

  • kelinci @ tuan
  • rabbit @ client-ha
  • kelinci @ produk-ha

Kita kemudian dapat membuat dua kebijakan yang akan menghasilkan antrian yang memiliki nama yang dimulai dengan "klien" untuk dicerminkan ke rabbit@client-hasimpul dan semua antrian yang memiliki nama yang dimulai dengan "produk" untuk dicerminkan ke rabbit@product-hanode.

sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "queues" ha-client "client.*" '{ "ha-mode": "nodes", "ha-params": ["rabbit@master", "rabbit@client-ha"], "ha-sync-mode": "automatic"}
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "queues" ha-product "product.*" '{ "ha-mode": "nodes", "ha-params": ["rabbit@master", "rabbit@product-ha"], "ha-sync-mode": "automatic"}

Sebuah komentar kecil di sini: antrian eksklusif tidak pernah dicerminkan atau tahan lama di RabbitMQ, bahkan jika kebijakan ini cocok dengan antrian tersebut. Antrian eksklusif secara otomatis dihancurkan begitu klien memutus dan, dengan demikian, tidak ada gunanya untuk mereplikasi ke server lain. Jika server gagal, klien akan memutuskan dari itu dan antrian akan dihancurkan secara otomatis. Contoh cermin akan dihancurkan juga.

Menguji pengaturan

Untuk menguji pengaturan berkerumun kami dapat membuat antrian baru menggunakan antarmuka baris perintah melalui konsol manajemen.

sudo rabbitmqadmin declare queue --vhost "/" name=my-ha-queue durable=true

Ini akan membuat antrian yang tahan lama pada /vhost default dengan namanya my-ha-queue.

Jalankan perintah berikut dan verifikasi di output bahwa antrian memiliki kebijakan 'ha' kami ditugaskan dan memiliki pid pada master dan pada mirror node.

sudo rabbitmqctl list_queues name policy state pid slave_pids

Kami sekarang dapat mempublikasikan pesan ke antrian dari master node dan menghentikan RabbitMQ pada master node.

sudo rabbitmqadmin -u user_name -p password  publish routing_key=my-ha-queue payload="hello world"
sudo systemctl rabbitmqctl shutdown

Sekarang dapatkan kembali dengan menghubungkan ke mirror node.

 sudo rabbitmqadmin -H MIRROR_NODE_IP_OR_DNS -u user_name -p password get queue=my-ha-queue

Akhirnya, kita dapat me-restart node master kita.

sudo systemctl start rabbitmq-server.service

Hapus pengguna tamu

Seperti disebutkan sebelumnya, RabbitMQ secara otomatis membuat pengguna tamu dengan kata sandi tamu default. Ini akan menjadi praktik yang buruk untuk meninggalkan pengguna default ini pada sistem terbuka untuk umum.

sudo rabbitmqctl delete_user guest


Leave a Comment

Cara Memasang Graylog Server pada CentOS 7

Cara Memasang Graylog Server pada CentOS 7

Menggunakan Sistem yang Berbeda? Graylog server adalah perangkat lunak manajemen log sumber terbuka siap pakai perusahaan. Ia mengumpulkan log dari berbagai sumber dan menganalisis

Atur Akun Pengguna khusus SFTP di CentOS 7

Atur Akun Pengguna khusus SFTP di CentOS 7

Pada kesempatan tertentu, Administrator Sistem mungkin perlu membuat akun pengguna dan membatasi akses mereka untuk hanya mengelola file mereka sendiri melalui sFTP, tetapi tidak

Cara Memasang Chamilo 1.11.8 pada CentOS 7

Cara Memasang Chamilo 1.11.8 pada CentOS 7

Menggunakan Sistem yang Berbeda? Chamilo adalah sistem manajemen pembelajaran (LMS) gratis dan open source yang banyak digunakan untuk pendidikan online dan kolaborasi tim

Menginstal Komunitas Odoo 9 di CentOS 7

Menginstal Komunitas Odoo 9 di CentOS 7

Odoo, sebelumnya dikenal sebagai OpenERP, adalah platform bisnis ERP open source yang terkenal. Perusahaan dengan ukuran berapa pun dapat mengambil manfaat dari Odoo, berkat lisnya yang berlimpah

Cara Memasang CMS CMS 2.0 pada CentOS 7 LAMP VPS

Cara Memasang CMS CMS 2.0 pada CentOS 7 LAMP VPS

Menggunakan Sistem yang Berbeda? Couch CMS adalah Content Management System (CMS) sederhana dan fleksibel, gratis dan open source yang memungkinkan desainer web untuk mendesain

Cara Memasang NextCloud 9 pada CentOS 7

Cara Memasang NextCloud 9 pada CentOS 7

NextCloud, seperti namanya, adalah alternatif yang menjanjikan dari solusi hosting file sumber terbuka lainnya OwnCloud. Dalam artikel ini, saya akan menunjukkan kepada Anda ho

Menginstal Netdata di CentOS 7

Menginstal Netdata di CentOS 7

Menggunakan Sistem yang Berbeda? Netdata adalah bintang yang naik di bidang pemantauan metrik sistem waktu-nyata. Dibandingkan dengan alat lain dengan jenis yang sama, Netdata:

Cara Menginstal ERPNext Open Source ERP pada CentOS 7

Cara Menginstal ERPNext Open Source ERP pada CentOS 7

Menggunakan Sistem yang Berbeda? ERP atau Enterprise Resource Planning adalah rangkaian aplikasi perusahaan yang digunakan untuk mengelola proses bisnis inti. ERPNext adalah gratis

Menyiapkan SA-MP San Andreas Multiplayer Server pada CentOS 6

Menyiapkan SA-MP San Andreas Multiplayer Server pada CentOS 6

Selamat datang di tutorial Vultr lainnya. Di sini, Anda akan belajar cara menginstal dan menjalankan server SAMP. Panduan ini ditulis untuk CentOS 6. Prasyarat Anda akan tahu

Instal Elgg pada CentOS 7

Instal Elgg pada CentOS 7

Menggunakan Sistem yang Berbeda? Elgg adalah mesin jejaring sosial open source yang memungkinkan penciptaan lingkungan sosial seperti jejaring sosial kampus

Menginstal Bolt CMS pada CentOS 7

Menginstal Bolt CMS pada CentOS 7

Bolt adalah CMS open source yang ditulis dalam PHP. Kode sumber baut di-host di GitHub. Panduan ini akan menunjukkan kepada Anda cara menginstal Bolt CMS pada CentOS 7 Vult yang baru

Cara Memasang Bugzilla 5.0.x di CentOS 7

Cara Memasang Bugzilla 5.0.x di CentOS 7

Bugzilla adalah sistem pelacakan bug sumber bebas dan terbuka yang banyak digunakan oleh berbagai vendor untuk terus meningkatkan softwar mereka

Menyebarkan Kubernet Dengan Kubeadm di CentOS 7

Menyebarkan Kubernet Dengan Kubeadm di CentOS 7

Ikhtisar Artikel ini dimaksudkan untuk membantu Anda mendapatkan kluster Kubernet dan menjalankan dengan kubeadm dalam waktu singkat. Panduan ini akan menggunakan dua server, pada

Setup Sails.js untuk Pengembangan pada CentOS 7

Setup Sails.js untuk Pengembangan pada CentOS 7

Menggunakan Sistem yang Berbeda? Pendahuluan Sails.js adalah kerangka kerja MVC untuk Node.js, mirip dengan Ruby on Rails. Itu membuat untuk mengembangkan aplikasi modern ver

Menyiapkan Server Half Life 2 Pada CentOS 6

Menyiapkan Server Half Life 2 Pada CentOS 6

Tutorial ini akan membahas proses pemasangan server game Half Life 2 pada Sistem CentOS 6. Langkah 1: Menginstal prasyarat Untuk mengatur ou

Alat Pemantauan Yang Lebih Baik Untuk Ubuntu Dan CentOS

Alat Pemantauan Yang Lebih Baik Untuk Ubuntu Dan CentOS

Pendahuluan Sistem Linux dilengkapi dengan alat pemantauan secara default seperti top, df, dan du yang membantu memonitor proses dan ruang disk. Namun sering kali, mereka ar

Cara Memasang Kolab Groupware di CentOS 7

Cara Memasang Kolab Groupware di CentOS 7

Menggunakan Sistem yang Berbeda? Kolab Groupware adalah aplikasi groupware berbasis web gratis dan open source. Fitur-fiturnya terdiri dari komunikasi email, acara

Cara Memasang Koel di CentOS 7

Cara Memasang Koel di CentOS 7

Menggunakan Sistem yang Berbeda? Koel adalah aplikasi streaming audio pribadi sederhana berbasis web yang ditulis dalam Vue di sisi klien dan Laravel di sisi server. Koe

Cara Memasang GDB pada CentOS 6

Cara Memasang GDB pada CentOS 6

GDB adalah debugger untuk C, C ++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada, dan Modula-2. CentOS didasarkan pada RHEL (Red Hat Enterprise Linux). Salah satu th

Menginstal Akaunting di CentOS 7

Menginstal Akaunting di CentOS 7

Menggunakan Sistem yang Berbeda? Akaunting adalah perangkat lunak akuntansi sumber terbuka dan gratis yang dirancang untuk usaha kecil dan freelancer. Itu dibangun kecerdasan

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut