GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Clustered RabbitMQ Centos 7

Einführung

RabbitMQ ist ein Open-Source-Enterprise-Messaging-Schema, das ursprünglich auf dem Advanced Messaging Queuing Protocol (AMQP)-Standard basiert, jetzt aber zahlreiche andere Protokolle unterstützt. Leichtgewichtig und einfach vor Ort oder in der Cloud bereitzustellen, ist RabbitMQ das beliebteste Open-Source-Messaging. Um eine optimale Leistung von RabbitMQ zu gewährleisten, ist die Überwachung von RabbitMQ von entscheidender Bedeutung. Für Unternehmen ist es jedoch eine Herausforderung, geclusterte RabbitMQ-Überwachungstools zu finden, die einen vollständigen Einblick in ihre Infrastruktur bieten. Sehen Sie sich auch RabbitMQ auf Centos8 und die Dokumentation der RabbitMQ-Site an

Was kann RabbitMQ?

Zuverlässigkeit

Daher bietet RabbitMQ eine Vielzahl von Funktionen, mit denen Sie Leistung gegen Zuverlässigkeit abwägen können, darunter Persistenz, Lieferunterstützung, Publisher-Bestätigungen und Hochverfügbarkeit.

Flexibles Routing

Nachrichten werden durch Vermittlungsstellen geleitet, bevor sie in Warteschlangen ankommen.

Auch RabbitMQ verfügt über mehrere eingebaute Austauschtypen für die typische Routing-Logik.

Auch für komplexeres Routing können Sie Austausche zusammenbinden oder sogar Ihren eigenen Austauschtyp als Plugin schreiben.

Clustering von RabbitMQ

Mehrere RabbitMQ-Server in einem lokalen Netzwerk können zu einem Cluster zusammengefasst werden und einen einzigen logischen Broker bilden.

Föderation

Für Server, die lockerer und unzuverlässiger verbunden werden müssen, als das Clustering zulässt, bietet RabbitMQ ein Föderationsmodell an.

Hochverfügbare Warteschlangen

So können Warteschlangen über mehrere Computer in einem Cluster gespiegelt werden, wodurch sichergestellt wird, dass Ihre Nachrichten auch im Falle eines Hardwareausfalls sicher sind.

Multiprotokoll

RabbitMQ unterstützt Messaging über eine Vielzahl von Messaging-Protokollen.

Viele Kunden gruppiert

Außerdem gibt es RabbitMQ-Clients für fast jede erdenkliche Sprache.

Verwaltungs-UI

RabbitMQ wird mit einer benutzerfreundlichen Verwaltungsoberfläche geliefert, mit der Sie jeden Aspekt Ihres Nachrichtenbrokers überwachen und steuern können.

Voraussetzungen

  • Die wesentliche Voraussetzung für die Einrichtung des RabbitMQ-Clusters sind mindestens 2 Knoten mit CentOS 7, die wir in diesem Artikel verwenden werden. Richten Sie dann deren FQDN und grundlegende Netzwerkeinstellungen ein
  • Mindestens zwei frisch verwendete und aktualisierte CentOS 7-Instanzen im selben Subnetz mit aktiviertem privatem Netzwerk
  • RabbitMQ wird mit aktivierter Verwaltungskonsole auf jedem Server installiert.
  • Ein Nicht-Admin-Benutzer mit sudo-Rechten

KaninchenMQ installieren

Installieren Sie also das Epel-Repository und das Clustered RabbitMQ-Paket

[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 ~]# 

Installieren Sie auch Clustered RabbitMQ und die erforderlichen Pakete

[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 ~]# 

Dienst starten und aktivieren

[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.

Benutzer für RabbitMQ hinzufügen

Verwenden Sie RabbitMQ, fügen Sie zuerst Benutzer hinzu. Standardmäßig existiert nur ein Gastbenutzer und er kann sich nur mit dem lokalen Host verbinden

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

Gewähren Sie dem Benutzer rabbitmq Administratorrechte

Einem Benutzer Berechtigungen für virtuelle Hosts erteilen

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

Virtualhost zu Clustered RabbitMQ hinzufügen

Verwenden Sie RabbitMQ, fügen Sie virtuelle Hosts hinzu

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

AMQP-Client-Bibliothek installieren

Implementiert AMQP (Advanced Message Queuing Protocol), das für Clustered RabbitMQ verwendet wird

[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 ~]#

Erstellen Sie ein Python-Skript, um die Verbindung zu testen

Senden einer Nachricht auf 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 ~]#

Skript erstellen, um zu prüfen, ob die Nachricht empfangen wurde

[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

Erlang-Cookie auf alle Knoten für Clustered RabbitMQ setzen

[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

Knoten mit Clustered RabbitMQ verbinden

[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

Installieren Sie das RabbitMQ-Management-Plugin

[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

Zugriff auf „http://hostname or IP address):15672/“ eines Clients, dann wird das RabbitMQ-Anmeldeformular angezeigt, melden Sie sich mit einem Admin-Benutzer an.

Dashboard mit Clusterknoten


Cent OS
  1. CentOS-Linux-Download

  2. So aktualisieren Sie CentOS

  3. AlmaLinux vs. CentOS

  4. Installieren von Tomcat 8 auf Centos 6

  5. Installation von MariaDB auf CentOS 7

So installieren Sie R unter CentOS 8

So richten Sie den RabbitMQ-Cluster unter CentOS 7 ein

So installieren Sie RabbitMQ Server unter CentOS 7

Debian vs. CentOS

So installieren Sie RabbitMQ in CentOS 7

So installieren Sie RabbitMQ unter CentOS 8