Menggabungkan RabbitMQ di CentOS 7

RabbitMQ adalah broker mesej sumber terbuka yang menyokong AMQP, STOMP dan teknologi komunikasi lain. Ia digunakan secara meluas dalam aplikasi perusahaan dan seni bina perkhidmatan mikro moden di mana ia berfungsi sebagai saluran mesej tak segerak antara pelbagai perkhidmatan mikro. Panduan ini akan menerangkan bagaimana anda boleh mengelompokkan RabbitMQ ke pelayan CentOS 7 yang pelbagai untuk membentuk broker mesej ketersediaan yang tinggi. Dalam tutorial ini, satu pelayan akan bertindak sebagai pelayan induk dan pelayan lain akan bertindak sebagai pelayan cermin sekiranya pelayan induk menjadi tidak tersedia.

Prasyarat

Konfigur firewall

Firewall CentOS, ( firewalld), tidak membenarkan lalu lintas masuk secara lalai. Untuk menjadikan RabbitMQ tersedia untuk sistem lain di dalam dan di luar rangkaian, dan untuk membolehkan kami mengakses konsol pengurusan, kami mesti membuka beberapa pelabuhan terlebih dahulu.

Konsol pengurusan antara muka web RabbitMQ secara lalai mendengar di port 15672. Kami ingin menjadikan konsol pengurusan tersedia secara terbuka supaya kami dapat mengaksesnya dari komputer kami. Oleh itu, kami akan mengarahkan firewalldpelabuhan secara kekal terbuka 15672di zon awam (yang merupakan zon lalai dan aktif pada contoh Vultr).

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

Kelenjar RabbitMQ perlu berkomunikasi dengan satu sama lain. Kami ingin membuka port yang diperlukan, tetapi hanya melalui rangkaian dalaman. Kami tidak mahu sesiapa sahaja di internet dapat mentadbir atau menghubungi pelayan kami secara langsung. Perintah berikut menganggap bahawa pelayan kami berada di 192.168.0.100/24subnet.

Perkhidmatan pertama adalah perkhidmatan epmdpenemuan rakan sebaya yang secara lalai mendengar 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 perlu berkomunikasi melalui pelabuhan 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 pelbagai 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 port 5671dan 5672. Sekiranya anda perlu berkomunikasi melalui protokol lain, anda boleh mendapatkan maklumat yang diperlukan mengenai keperluan rangkaian RabbitMQ pada dokumentasi rasmi 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 yang firewallddikonfigurasikan, kita perlu mengarahkannya untuk memuatkan semula konfigurasi.

sudo firewall-cmd --reload

Ulangi langkah-langkah dari bahagian ini pada semua pelayan.

Pasang rabbitmqadmin

Plugin pengurusan datang dengan alat Python yang dipanggil rabbitmqadminyang boleh dipasang dengan mudah pada sistem sebaik sahaja plugin pengurusan diaktifkan.

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

Konfigur DNS

Anda mesti menggunakan nama host pelayan untuk mengenal pasti pelayan semasa melakukan kluster. Secara lalai, pelayan tidak mempunyai rekod DNS yang ditetapkan dan sambungan akan gagal. Untuk mengatasi masalah ini dengan cepat, tambahkan nama tuan dan cermin host ke /etc/hostsfail menggunakan editor kegemaran anda.

Contohnya, fail hos tuan anda mungkin seperti berikut. Perhatikan dua rekod yang terakhir, yang membolehkan pelayan mengenal pasti satu sama lain dengan nama hos mereka. Pastikan anda menukar alamat IP anda sendiri.

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

Kumpulkan nod

Prasyarat import untuk membolehkan nod bergabung antara satu sama lain adalah bahawa kuki Erlang dari semua nod adalah serupa. Secara lalai, setiap nod akan diberikan kuki Erlang yang unik, jadi anda mesti menyusun semulanya pada semua nod.

Perintah berikut akan menetapkan kuki Erlang menjadi " WE<3COOKIES", tetapi jangan ubah ini mengikut keinginan anda. Lakukan ini pada semua pelayan.

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

Restart RabbitMQ pada semua pelayan untuk memastikan kuki Erlang dimuatkan dengan betul.

sudo systemctl restart rabbitmq-server.service

Jalankan arahan berikut pada semua pelayan kecuali pada pelayan induk. Ini akan membiarkan nod menyertai pelayan induk dan membentuk kluster.

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

Sahkan bahawa node telah bergabung dengan kluster dengan menjalankan perintah berikut.

sudo rabbitmqctl cluster_status

Semua nod anda akan muncul di nodesdan running_nodesbahagian output. Mulai sekarang, anda tidak perlu lagi mengulangi langkah pada setiap pelayan, konfigurasi akan dicerminkan secara automatik ke nod lain.

Buat dasar ketersediaan tinggi

Sekarang bahawa kita mempunyai kumpulan RabbitMQ nod, kita boleh menggunakannya untuk membuat antrian dan bursa ketersediaan tinggi dengan menyediakan dasar baru. Dasar ini boleh ditambahkan melalui RabbitMQ Management Console atau menggunakan antara muka baris arahan.

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

Senarai berikut akan menerangkan tentang setiap bahagian arahan.

  • -p "/": Gunakan polisi ini di "/"vhost (lalai selepas pemasangan)
  • --priority 1: Urutan untuk menerapkan polisi
  • --apply-to "all": Boleh "queues", "exchanges"atau"all"
  • ha: Nama yang kami berikan pada dasar kami
  • ".*": Ungkapan biasa yang digunakan untuk membuat keputusan untuk beratur atau pertukaran dasar ini diterapkan. ".*"akan sesuai dengan apa sahaja
  • '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}': Perwakilan polisi JSON. Dokumen ini menerangkan bahawa kami mahu - betul-betul 2 nod di mana data disegerakkan secara automatik

Ringkasnya, dasar ini akan memastikan bahawa kita akan selalu mempunyai 2 salinan data dalam barisan atau pertukaran selagi kita mempunyai sekurang-kurangnya 2 nod dan berjalan. Jika anda mempunyai nod lebih banyak, anda boleh meningkatkan nilai ha-params. Sebuah korum, ( N/2 + 1), nod dinasihatkan. Memiliki lebih banyak salinan data anda akan mengakibatkan penggunaan disk, i / o dan net yang lebih tinggi yang dapat menghasilkan kinerja yang menurun.

Jika anda ingin mencerminkan data ke semua nod dalam kelompok, anda boleh menggunakan dokumen JSON yang berikut.

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

Jika anda ingin mencerminkan data hanya ke nod tertentu, (misalnya: node-1dan node-2), anda boleh menggunakan yang berikut.

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

Anda boleh menukar ungkapan biasa untuk menetapkan dasar yang berbeza untuk beratur yang berbeza. Katakan kita mempunyai tiga nod berikut:

  • arnab @ master
  • arnab @ client-ha
  • arnab @ produk-ha

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

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"}

Satu komen kecil di sini: barisan eksklusif tidak pernah dicerminkan atau tahan lama di RabbitMQ, walaupun dasar ini sesuai dengan barisan tersebut. Antrean eksklusif akan dimusnahkan secara automatik setelah pelanggan memutuskan hubungan dan, oleh itu, tidak ada gunanya menirunya ke pelayan lain. Sekiranya pelayan gagal, pelanggan akan memutuskan sambungan daripadanya dan barisan akan dihancurkan secara automatik. Contoh cermin juga akan hancur.

Menguji persediaan

Untuk menguji penyusunan berkelompok kita dapat membuat antrian baru menggunakan antarmuka baris perintah melalui konsol pengurusan.

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

Ini akan membuat barisan tahan lama pada /vhost lalai dengan nama my-ha-queue.

Jalankan arahan berikut dan sahkan dalam output bahawa antrian telah menetapkan kebijakan 'ha' kami dan mempunyai pid pada master dan pada nod cermin.

sudo rabbitmqctl list_queues name policy state pid slave_pids

Sekarang kita dapat menerbitkan mesej ke barisan dari nod induk dan menghentikan RabbitMQ pada nod induk.

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

Sekarang dapatkannya semula dengan menyambung ke nod cermin.

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

Akhirnya, kita boleh memulakan semula nod induk kita.

sudo systemctl start rabbitmq-server.service

Padamkan pengguna tetamu

Seperti disebutkan sebelumnya, RabbitMQ secara automatik membuat pengguna tetamu dengan kata laluan tetamu lalai. Amalan buruk untuk meninggalkan pengguna lalai ini pada sistem awam yang terdedah.

sudo rabbitmqctl delete_user guest


Leave a Comment

Cara Pasang dan Konfigur CyberPanel pada Server CentOS 7 anda

Cara Pasang dan Konfigur CyberPanel pada Server CentOS 7 anda

Menggunakan Sistem Berbeza? Pengenalan CyberPanel adalah salah satu panel kawalan pertama di pasaran yang merupakan sumber terbuka dan menggunakan OpenLiteSpeed. Apa itu

Cara Memasang Apache Maven 3.5 di CentOS 7

Cara Memasang Apache Maven 3.5 di CentOS 7

Apache Maven adalah alat pengurusan projek perisian sumber terbuka dan bebas yang banyak digunakan untuk menyebarkan aplikasi berbasis Java. Prasyarat yang baru

Cara Memasang FFmpeg di CentOS

Cara Memasang FFmpeg di CentOS

FFmpeg adalah penyelesaian sumber terbuka yang popular untuk merakam, menukar, dan menstrim audio dan video, yang banyak digunakan dalam semua jenis perkhidmatan streaming dalam talian. Saya

Cara Memasang Backdrop CMS 1.8.0 pada VPS CentOS 7 LAMP

Cara Memasang Backdrop CMS 1.8.0 pada VPS CentOS 7 LAMP

Menggunakan Sistem Berbeza? Backdrop CMS 1.8.0 adalah Sistem Pengurusan Kandungan (CMS) sumber mudah alih, mudah alih, percuma dan terbuka yang membolehkan kami

Cara Pasang AirSonic pada CentOS 7

Cara Pasang AirSonic pada CentOS 7

Menggunakan Sistem Berbeza? AirSonic adalah pelayan streaming media sumber terbuka dan terbuka. Dalam tutorial ini, saya akan membimbing anda melalui proses penyebaran a

Siapkan Komposer Untuk Ketergantungan PHP Di CentOS 6

Siapkan Komposer Untuk Ketergantungan PHP Di CentOS 6

Pengenalan Komposer adalah pengurus pergantungan yang popular untuk PHP yang dapat mempermudah pemasangan dan kemas kini perpustakaan yang diperlukan untuk projek anda

Pasang RockMongo di CentOS 7

Pasang RockMongo di CentOS 7

RockMongo adalah alat Pengurusan MongoDB berasaskan web yang serupa dengan alat Pengurusan MySQL: phpMyAdmin. Tutorial ini akan merangkumi proses installin

Bagaimana untuk Menggunakan Aplikasi Web Teras NET pada CentOS 7

Bagaimana untuk Menggunakan Aplikasi Web Teras NET pada CentOS 7

.NET NET adalah rangka kerja pembangunan merentas platform terbuka yang disusun oleh Microsoft dan masyarakat NET yang semakin berkembang. Dengan bantuan .NE

Memasang Netdata di CentOS 7

Memasang Netdata di CentOS 7

Menggunakan Sistem yang berbeza? Netdata adalah bintang yang semakin meningkat dalam bidang pemantauan metrik sistem masa nyata. Berbanding dengan alat lain yang serupa, Netdata:

Cara Memasang Pelayan Starbound di CentOS 7

Cara Memasang Pelayan Starbound di CentOS 7

Menggunakan Sistem yang berbeza? Dalam tutorial ini, saya akan menerangkan cara menyediakan pelayan Starbound di CentOS 7. Prasyarat Anda perlu memiliki permainan ini untuk anda

Cara Memasang Django di CentOS 7

Cara Memasang Django di CentOS 7

Django adalah rangka kerja Python yang popular untuk menulis aplikasi web. Dengan Django, anda dapat membina aplikasi dengan lebih cepat, tanpa mencipta semula roda. Sekiranya anda mahu

Sediakan Pelayan multipemain SA-MP San Andreas di CentOS 6

Sediakan Pelayan multipemain SA-MP San Andreas di CentOS 6

Selamat datang ke tutorial Vultr yang lain. Di sini, anda akan belajar cara memasang dan menjalankan pelayan SAMP. Panduan ini ditulis untuk CentOS 6. Prasyarat Anda akan hadir

Memasang Revive Adserver di CentOS 7

Memasang Revive Adserver di CentOS 7

Revive Adserver adalah sistem penayangan iklan sumber terbuka dan bebas yang dapat digunakan untuk mengelola iklan di laman web, dalam aplikasi, dan / atau dalam pemutar video. Dalam artikel ini,

Cara Memasang Parse Server di CentOS 7

Cara Memasang Parse Server di CentOS 7

Parse Server adalah alternatif sumber terbuka untuk perkhidmatan backend Parse yang sedang ditutup. Sekiranya anda peminat perkhidmatan ini, anda masih boleh menikmati perkhidmatan ini

Pasang Elgg di CentOS 7

Pasang Elgg di CentOS 7

Menggunakan Sistem Berbeza? Elgg adalah mesin rangkaian sosial sumber terbuka yang membolehkan penciptaan persekitaran sosial seperti rangkaian sosial kampus dan

Cara Memasang dan Mengkonfigurasi Caddy di CentOS 7

Cara Memasang dan Mengkonfigurasi Caddy di CentOS 7

Pengenalan Caddy adalah program pelayan web yang muncul dengan sokongan asli untuk HTTP / 2 dan HTTPS automatik. Dengan kemudahan penggunaan dan keselamatan, Caddy dapat b

Terapkan Kubernetes Dengan Kubeadm di CentOS 7

Terapkan Kubernetes Dengan Kubeadm di CentOS 7

Gambaran Keseluruhan Artikel ini dimaksudkan untuk membantu anda mendapatkan cluster Kubernet dan berjalan dengan kubeadm dalam waktu singkat. Panduan ini akan menggunakan dua pelayan, di

Tingkatkan Produktiviti dengan Z dan Zsh di CentOS

Tingkatkan Produktiviti dengan Z dan Zsh di CentOS

Pengenalan Mengendalikan sistem Linux bermaksud seseorang menggunakan baris perintah lebih kerap daripada tidak. Perlu menaip nama direktori panjang berulang-ulang sebagai wel

Cara Memasang OpenCart Pada Pelayan LEMP Vultr

Cara Memasang OpenCart Pada Pelayan LEMP Vultr

OpenCart adalah penyelesaian keranjang belanja sumber terbuka yang popular yang direka untuk memberikan fungsi, kemudahan penggunaan, dan penampilan yang sangat baik. Dengan OpenCart, anda pasti

Siapkan Sails.js untuk Pembangunan di CentOS 7

Siapkan Sails.js untuk Pembangunan di CentOS 7

Menggunakan Sistem Berbeza? Pengenalan Sails.js adalah rangka kerja MVC untuk Node.js, mirip dengan Ruby on Rails. Ia menjadikan untuk mengembangkan aplikasi moden

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut