GNU/Linux >> Linux の 問題 >  >> Cent OS

Clustered RabbitMQ Centos 7

はじめに

RabbitMQは、当初はAdvanced Messaging Queuing Protocol(AMQP)標準に基づいていたオープンソースのエンタープライズメッセージングスキームですが、現在は他の多くのプロトコルをサポートしています。軽量でオンプレミスまたはクラウドに簡単にデプロイできるRabbitMQは、最も人気のあるオープンソースメッセージングです。 RabbitMQの最適なパフォーマンスを確保するには、RabbitMQの監視が重要ですが、組織にとって、インフラストラクチャを完全に可視化するクラスター化されたRabbitMQ監視ツールを見つけることは困難です。また、Centos8のRabbitMQとドキュメントrabbitmqサイトを確認してください

RabbitMQで何ができるか?

信頼性

そのため、RabbitMQは、永続性、配信サポート、発行元の確認、高可用性など、パフォーマンスと信頼性のトレードオフを可能にするさまざまな機能を提供します。

柔軟なルーティング

メッセージは、キューに到着する前に交換を介してルーティングされます。

また、RabbitMQは、一般的なルーティングロジック用のいくつかの組み込み交換タイプを備えています。

また、より複雑なルーティングの場合は、エクスチェンジをバインドしたり、プラグインとして独自のエクスチェンジタイプを記述したりすることもできます。

クラスタリングRabbitMQ

ローカルネットワーク上の複数のRabbitMQサーバーをクラスター化して、単一の論理ブローカーを形成できます。

フェデレーション

クラスタリングで許可されているよりも緩く信頼性の低い接続が必要なサーバーのために、RabbitMQはフェデレーションモデルを提供します。

高可用性キュー

そのため、キューをクラスター内の複数のマシン間でミラーリングして、ハードウェア障害が発生した場合でもメッセージを安全に保つことができます。

マルチプロトコル

RabbitMQは、さまざまなメッセージングプロトコルを介したメッセージングをサポートしています。

グループ化された多くのクライアント

また、考えられるほぼすべての言語のRabbitMQクライアントがあります。

管理UI

RabbitMQには、メッセージブローカーのあらゆる側面を監視および制御できる使いやすい管理UIが付属しています。

前提条件

  • RabbitMQクラスターのセットアップに不可欠な要件は、この記事で使用するCentOS 7で少なくとも2つのノードを用意することです。次に、それらのFQDNと基本的なネットワーク設定をセットアップします
  • プライベートネットワークが有効になっている、同じサブネット内の少なくとも2つの新しく使用および更新されたCentOS7インスタンス
  • 各サーバーで管理コンソールを有効にしてインストールされたRabbitMQ。
  • sudo権限を持つ非管理者ユーザー

RabbitMQのインストール

したがって、EpelリポジトリとClusteredRabbitMQパッケージをインストールします

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

ClusteredRabbitMQと必要なパッケージもインストールします

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

サービスを開始して有効にする

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

RabbitMQのユーザーを追加する

RabbitMQを使用して、最初にユーザーを追加します。デフォルトでは、ゲストユーザーのみが存在し、彼は唯一のローカルホストに接続できます

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

rabbitmqユーザーに管理者権限を付与する

仮想ホストのユーザーに権限を付与する

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

クラスター化されたRabbitMQに仮想ホストを追加する

RabbitMQを使用し、仮想ホストを追加します

[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クライアントライブラリをインストールする

Clustered RabbitMQに使用されるAMQP(Advanced Message Queuing Protocol)を実装します

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

接続をテストするためのPythonスクリプトを作成する

PythonClusteredRabbitMQでメッセージを送信する

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

メッセージが受信されたかどうかを確認するためのスクリプトを作成します

[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

ClusteredRabbitMQのすべてのノードにerlangcookieを設定します

[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

ノードをClusteredRabbitMQに参加させる

[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

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

クライアントの「http:// hostname or IP address):15672 /」にアクセスすると、RabbitMQログインフォームが表示され、管理者ユーザーでログインします。

クラスタノードを含むダッシュボード


Cent OS
  1. CentOSLinuxダウンロード

  2. Centos6へのTomcat8のインストール

  3. CentOS7へのMariaDBのインストール

  1. CentOSを更新する方法

  2. AlmaLinuxとCentOS

  3. CentOSとCentOSストリーム

  1. CentOS8にOdoo14をインストールします

  2. CentOS7にPHP7をインストールします

  3. CentOS7にMariaDBをインストールします