GNU/Linux >> Znalost Linux >  >> Cent OS

Clustered RabbitMQ Centos 7

Úvod

RabbitMQ je open-source podnikové schéma zasílání zpráv původně založené na standardu AMQP (Advanced Messaging Queuing Protocol), ale nyní podporuje řadu dalších protokolů. RabbitMQ je lehký a snadno se nasazuje v místě nebo v cloudu a je nejoblíbenějším zasíláním zpráv s otevřeným zdrojovým kódem. Pro zajištění optimálního výkonu RabbitMQ je pro RabbitMQ monitoring zásadní. Pro organizace je však náročné najít Clustered RabbitMQ monitorovací nástroje, které poskytují úplný přehled o jejich infrastruktuře. Podívejte se také na RabbitMQ na Centos8 a dokumentaci na webu rabbitmq

Co může RabbitMQ dělat?

Spolehlivost

RabbitMQ tedy nabízí řadu funkcí, které vám umožní vyrovnat výkon se spolehlivostí, včetně vytrvalosti, podpory doručení, potvrzení vydavatelem a vysoké dostupnosti.

Flexibilní směrování

Zprávy jsou směrovány přes ústředny, než dorazí do fronty.

RabbitMQ také obsahuje několik vestavěných typů výměny pro typickou logiku směrování.

Také pro složitější směrování můžete svázat výměny dohromady nebo dokonce napsat svůj vlastní typ výměny jako plugin.

Clustering RabbitMQ

Několik serverů RabbitMQ v místní síti lze seskupovat dohromady a vytvořit tak jednoho logického zprostředkovatele.

Federace

Pro servery, které potřebují být připojeny volněji a nespolehlivě, než umožňuje klastrování, nabízí RabbitMQ model federace.

Vysoce dostupné fronty

Fronty lze tedy zrcadlit na několika počítačích v clusteru, což zajišťuje, že i v případě selhání hardwaru budou vaše zprávy v bezpečí.

Multiprotokol

RabbitMQ podporuje zasílání zpráv prostřednictvím různých protokolů zasílání zpráv.

Seskupeno mnoho klientů

Existují také klienti RabbitMQ pro téměř jakýkoli jazyk, na který si vzpomenete.

Uživatelské rozhraní pro správu

RabbitMQ se dodává se snadno použitelným uživatelským rozhraním pro správu, které vám umožní sledovat a ovládat každý aspekt vašeho zprostředkovatele zpráv.

Předpoklady

  • Základním požadavkem pro nastavení RabbitMQ Cluster je mít minimálně 2 uzly s CentOS 7, pro které budeme tento článek používat. Poté nastavte jejich FQDN a základní síťová nastavení
  • Alespoň dvě čerstvě použité a aktualizované instance CentOS 7 ve stejné podsíti s povolenou privátní sítí
  • RabbitMQ nainstalovaný s konzolou pro správu povolenou na každém serveru.
  • Uživatel bez oprávnění správce s právy sudo

Instalace RabbitMQ

Nainstalujte tedy úložiště Epel a balíček Clustered RabbitMQ

[root@master ~]# yum install epel-release -y
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: mirrors.icidc.com
 * extras: mirrors.icidc.com
 * updates: mirrors.icidc.com
base                                                                                                                                                                                       | 3.6 kB  00:00:00
extras                                                                                                                                                                                     | 2.9 kB  00:00:00
updates                                                                                                                                                                                    | 2.9 kB  00:00:00
(1/4): extras/7/x86_64/primary_db                                                                                                                                                          | 242 kB  00:00:00
(2/4): base/7/x86_64/group_gz                                                                                                                                                              | 153 kB  00:00:00
(3/4): base/7/x86_64/primary_db                                                                                                                                                            | 6.1 MB  00:00:02
(4/4): updates/7/x86_64/primary_db                                                                                                                                                         | 9.6 MB  00:00:05
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================================================================================================================
 Package                                                Arch                                             Version                                           Repository                                        Size
==================================================================================================================================================================================================================
Installing:
 epel-release                                           noarch                                           7-11                                              extras                                            15 k

Transaction Summary
==================================================================================================================================================================================================================
Install  1 Package

Total download size: 15 k
Installed size: 24 k
Downloading packages:
warning: /var/cache/yum/x86_64/7/extras/packages/epel-release-7-11.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for epel-release-7-11.noarch.rpm is not installed
epel-release-7-11.noarch.rpm                                                                                                                                                               |  15 kB  00:00:00
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <[email protected]>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-8.2003.0.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : epel-release-7-11.noarch                                                                                                                                                                       1/1
  Verifying  : epel-release-7-11.noarch                                                                                                                                                                       1/1

Installed:
  epel-release.noarch 0:7-11

Complete!
[root@master ~]# 

Nainstalujte také Clustered RabbitMQ a požadované balíčky

[root@master ~]# yum -y install rabbitmq-server erlang
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                                                                                                       | 8.4 kB  00:00:00
 * base: mirrors.icidc.com
 * epel: download.nus.edu.sg
 * extras: mirrors.icidc.com
 * updates: mirrors.icidc.com
epel                                                                                                                                                                                       | 4.7 kB  00:00:00
(1/3): epel/x86_64/group_gz                                                                                                                                                                |  96 kB  00:00:00
(2/3): epel/x86_64/updateinfo                                                                                                                                                              | 1.0 MB  00:00:00
(3/3): epel/x86_64/primary_db                                                                                                                                                              | 6.9 MB  00:00:01
Resolving Dependencies
--> Running transaction check
---> Package rabbitmq-server.noarch 0:3.3.5-34.el7 will be installed
--> Processing Dependency: erlang-erts >= R12B-3 for package: rabbitmq-server-3.3.5-34.el7.noarch
--> Processing Dependency: erlang-kernel >= R12B-3 for package: rabbitmq-server-3.3.5-34.el7.noarch
--> Processing Dependency: erlang-mnesia >= R12B-3 for package: rabbitmq-server-3.3.5-34.el7.noarch
--> Processing Dependency: erlang-os_mon >= R12B-3 for package: rabbitmq-server-3.3.5-34.el7.noarch


......................

Dependencies Resolved

==================================================================================================================================================================================================================
 Package                                                    Arch                                         Version                                                 Repository                                  Size
==================================================================================================================================================================================================================
Installing:
 rabbitmq-server                                            noarch                                       3.3.5-34.el7                                            epel                                       4.0 M
Installing for dependencies:
 erlang-asn1                                                x86_64                                       R16B-03.18.el7                                          epel                                       758 k
 erlang-compiler                                            x86_64                                       R16B-03.18.el7                                          epel                                       1.0 M
 erlang-crypto                                              x86_64                                       R16B-03.18.el7                                          epel                                        86 k
 erlang-erts                                                x86_64                                       R16B-03.18.el7                                          epel                                       2.5 M
 erlang-hipe                                                x86_64                                       R16B-03.18.el7                                          epel                                       2.4 M
                             293 k
 erlang-sd_notify                                           x86_64                                       0.1-1.el7                                               epel                                       9.1 k
 erlang-snmp                                                x86_64                                       R16B-03.18.el7                                          epel                                       1.5 M
 erlang-ssl                                                 x86_64                                       R16B-03.18.el7                                          epel                                       588 k
 erlang-stdlib                                              x86_64                                       R16B-03.18.el7                                          epel                                       2.2 M
 erlang-syntax_tools                                        x86_64                                       R16B-03.18.el7                                          epel                                       336 k
 erlang-tools                                               x86_64                                       R16B-03.18.el7                                          epel                                       566 k
 erlang-xmerl                                               x86_64                                       R16B-03.18.el7                                          epel                                       998 k
 lksctp-tools                                               x86_64                                       1.0.17-2.el7                                            base                                        88 k

Transaction Summary
==================================================================================================================================================================================================================
Install  1 Package (+21 Dependent packages)

Total download size: 21 M
Installed size: 36 M
Downloading packages:
warning: /var/cache/yum/x86_64/7/epel/packages/erlang-asn1-R16B-03.18.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY                                    ]  0.0 B/s | 624 kB  --:--:-- ETA
Public key for erlang-asn1-R16B-03.18.el7.x86_64.rpm is not installed
(1/22): erlang-asn1-R16B-03.18.el7.x86_64.rpm                                                                                                                                              | 758 kB  00:00:00
..........                                                                                                                                                           4/22
  Verifying  : erlang-compiler-R16B-03.18.el7.x86_64                                                                                                                                                         5/22
  Verifying  : erlang-mnesia-R16B-03.18.el7.x86_64                                                                                                                                                           6/22
  Verifying  : erlang-crypto-R16B-03.18.el7.x86_64                                                                                                                                                           7/22
  Verifying  : erlang-hipe-R16B-03.18.el7.x86_64                                                                                                                                                             8/22
  Verifying  : erlang-inets-R16B-03.18.el7.x86_64                                                                                                                                                            
  Verifying  : erlang-os_mon-R16B-03.18.el7.x86_64                                                                                                                                                          17/22
  Verifying  : erlang-otp_mibs-R16B-03.18.el7.x86_64                                                                                                                                                        18/22
  Verifying  : erlang-tools-R16B-03.18.el7.x86_64                                                                                                                                                           19/22
  Verifying  : erlang-snmp-R16B-03.18.el7.x86_64                                                                                                                                                            20/22
  Verifying  : erlang-syntax_tools-R16B-03.18.el7.x86_64                                                                                                                                                    21/22
  Verifying  : erlang-asn1-R16B-03.18.el7.x86_64                                                                                                                                                            22/22

Installed:
  rabbitmq-server.noarch 0:3.3.5-34.el7

Dependency Installed:
  erlang-asn1.x86_64 0:R16B-03.18.el7             erlang-compiler.x86_64 0:R16B-03.18.el7               erlang-crypto.x86_64 0:R16B-03.18.el7               erlang-erts.x86_64 0:R16B-03.18.el7
  erlang-hipe.x86_64 0:R16B-03.18.el7             erlang-inets.x86_64 0:R16B-03.18.el7                  erlang-kernel.x86_64 0:R16B-03.18.el7               erlang-mnesia.x86_64 0:R16B-03.18.el7
  erlang-os_mon.x86_64 0:R16B-03.18.el7           erlang-otp_mibs.x86_64 0:R16B-03.18.el7               erlang-public_key.x86_64 0:R16B-03.18.el7           erlang-runtime_tools.x86_64 0:R16B-03.18.el7
  erlang-sasl.x86_64 0:R16B-03.18.el7             erlang-sd_notify.x86_64 0:0.1-1.el7                   erlang-snmp.x86_64 0:R16B-03.18.el7                 erlang-ssl.x86_64 0:R16B-03.18.el7
  erlang-stdlib.x86_64 0:R16B-03.18.el7           erlang-syntax_tools.x86_64 0:R16B-03.18.el7           erlang-tools.x86_64 0:R16B-03.18.el7                erlang-xmerl.x86_64 0:R16B-03.18.el7
  lksctp-tools.x86_64 0:1.0.17-2.el7

Complete!
[root@master ~]# 

Spustit a povolit službu

[root@master ~]# systemctl start rabbitmq-server

[root@master ~]# systemctl enable rabbitmq-server
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.

Přidávání uživatele pro RabbitMQ

Použijte RabbitMQ, nejprve přidejte uživatele. Ve výchozím nastavení existuje pouze host a může se připojit k jedinému localhost

[root@master ~]# rabbitmqctl add_user rabbit password
Creating user "rabbit" ...
...done.
[root@master ~]# rabbitmqctl list_users
Listing users ...
guest   [administrator]
rabbit  []
...done.
[root@master ~]#

Udělte administrátorská práva uživateli rabbitmq

Udělte uživateli oprávnění pro virtuální hostitele

[root@master ~]# rabbitmqctl set_user_tags rabbit administrator
Setting tags for user "rabbit" to [administrator] ...
...done.
[root@master ~]# 

Přidat virtuálního hostitele do Clustered RabbitMQ

Použijte RabbitMQ, přidejte virtuální hostitele

[root@master ~]# rabbitmqctl add_vhost /my_vhost
Creating vhost "/my_vhost" ...
...done.
[root@master ~]# rabbitmqctl list_vhosts
Listing vhosts ...
/
/my_vhost
...done.
[root@master ~]#

Nainstalujte knihovnu klienta AMQP

Implementuje AMQP (Advanced Message Queuing Protocol) používaný pro Clustered RabbitMQ

[root@master ~]# yum -y install python2-pika
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.rise.ph
 * epel: mirror.telkomuniversity.ac.id
 * extras: mirror.rise.ph
 * updates: mirror.rise.ph
Resolving Dependencies
--> Running transaction check
---> Package python2-pika.noarch 0:0.10.0-10.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================================================================================================================
 Package                                               Arch                                            Version                                                Repository                                     Size
==================================================================================================================================================================================================================
Installing:
 python2-pika                                          noarch                                          0.10.0-10.el7                                          epel                                          170 k

Transaction Summary
==================================================================================================================================================================================================================
Install  1 Package

Total download size: 170 k
Installed size: 1.0 M
Downloading packages:
python2-pika-0.10.0-10.el7.noarch.rpm                                                                                                                                                      | 170 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : python2-pika-0.10.0-10.el7.noarch                                                                                                                                                              1/1
  Verifying  : python2-pika-0.10.0-10.el7.noarch                                                                                                                                                              1/1

Installed:
  python2-pika.noarch 0:0.10.0-10.el7

Complete!
[root@master ~]#

Vytvořte skript python pro testování připojení

Odeslání zprávy na Python Clustered RabbitMQ

[root@master ~]# cat send_msg.py
#!/usr/bin/env python

import pika

credentials = pika.PlainCredentials('unixcop', 'password')
connection = pika.BlockingConnection(pika.ConnectionParameters(
                                     'localhost',
                                     5672,
                                     '/my_vhost',
                                     credentials))

channel = connection.channel()
channel.queue_declare(queue='Hello_World')

channel.basic_publish(exchange='',
                      routing_key='Hello_World',
                      body='Hello RabbitMQ World!')

print(" [x] Sent 'Hello_World'")

connection.close()
[root@master ~]#

[root@master ~]# python send_msg.py
 [x] Sent 'Hello_World'
[root@master ~]#

Vytvořte skript pro kontrolu, zda byla zpráva přijata

[root@master ~]# cat receive_msg.py
#!/usr/bin/env python

import signal
import pika

signal.signal(signal.SIGPIPE, signal.SIG_DFL)
signal.signal(signal.SIGINT, signal.SIG_DFL)

credentials = pika.PlainCredentials('unixcop', 'password')
connection = pika.BlockingConnection(pika.ConnectionParameters(
                                     'master.example.com',
                                     5672,
                                     '/my_vhost',
                                     credentials))

channel = connection.channel()
channel.queue_declare(queue='Hello_World')

def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)

channel.basic_consume(callback,
                      queue='Hello_World',
                      no_ack=True)

print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
[root@master ~]#

[root@master ~]# python receive_msg.py
 [*] Waiting for messages. To exit press CTRL+C
 [x] Received 'Hello RabbitMQ World!'
 [x] Received 'Hello RabbitMQ World!'
^C

Nastavit erlang cookie na všechny uzly pro Clustered RabbitMQ

[root@master ~]# chmod 777 /var/lib/rabbitmq/.erlang.cookie
[root@master ~]# scp -r /var/lib/rabbitmq/.erlang.cookie root@worker1:/var/lib/rabbitmq/.erlang.cookie
[root@master ~]# scp -r /var/lib/rabbitmq/.erlang.cookie root@worker2:/var/lib/rabbitmq/.erlang.cookie
[root@master ~]# chmod 400 /var/lib/rabbitmq/.erlang.cookie
[root@master ~]# chown rabbitmq /var/lib/rabbitmq/.erlang.cookie
[root@master ~]# chgrp rabbitmq /var/lib/rabbitmq/.erlang.cookie

Připojte se k uzlům do Clustered RabbitMQ

[root@worker1~]# rabbitmqctl stop_app
[root@worker1 ~]# rabbitmqctl join_cluster rabbit@master
[root@worker1 ~]# rabbitmqctl start_app
#---------------------------------------------------------------------------------#
[root@worker2 ~]# rabbitmqctl stop_app
[root@worker2 ~]# rabbitmqctl join_cluster rabbit@master
[root@worker2 ~]# rabbitmqctl start_app

Nainstalujte si plugin pro správu RabbitMQ

[root@master ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  mochiweb
  webmachine
  rabbitmq_web_dispatch
  amqp_client
  rabbitmq_management_agent
  rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.

[root@master ~]# systemctl restart rabbitmq-server

Přístup k „http://název hostitele nebo IP adresa):15672/“ klienta, poté se zobrazí přihlašovací formulář RabbitMQ, přihlaste se jako správce.

Řídicí panel s uzly clusteru


Cent OS
  1. CentOS Linux ke stažení

  2. Instalace Tomcat 8 na Centos 6

  3. Instalace MariaDB na CentOS 7

  1. Jak aktualizovat CentOS

  2. AlmaLinux vs CentOS

  3. CentOS vs CentOS Stream

  1. Nainstalujte Odoo 14 na CentOS 8

  2. Nainstalujte PHP 7 na CentOS 7

  3. Nainstalujte MariaDB na CentOS 7