DUICUO

この記事では、CentOS 7 に RabbitMQ をインストールして展開するためのすべての手順について説明します。

序文

RabbitMQは、主要なオペレーティングシステムと複数のプログラミング言語をサポートする強力なオープンソースのエンタープライズメッセージングシステムです。私たちのプロジェクトでは、ビジネスロジックを分離し、信頼性の高いメッセージキューシステムを構築するために、RabbitMQをメッセージキューとして使用しています。RabbitMQは、注文システム、ログシステム、データ収集などの一般的なシナリオで使用できます。

この記事では、CentOS に RabbitMQ の最新バージョン (v3.8.1) をインストールする方法と、Docker を使用して RabbitMQ をインストールする方法について説明します。

RabbitMQをインストールする

RabbitMQをインストールする前に、Erlangをインストールする必要があります。まずはRabbitMQの公式サイトでバージョンの互換性を確認してください。

RabbitMQサーバーの最新バージョンは3.8.14、Erlangの最新バージョンは23.x​​です。対応するRPMパッケージは、それぞれGitHubとRabbitMQのウェブサイトからダウンロードできます。

Erlang RPMパッケージをダウンロードする

Erlang の GitHub リポジトリ ( https://github.com/rabbitmq/erlang-rpm/releases) にアクセスしてください。

 # 下载地址https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.2/erlang-23.3.2-1.el7.x86_64.rpm

RabbitMQ RPM パッケージをダウンロードします。

次の RabbitMQ 公式 Web サイトにアクセスします: https://www.rabbitmq.com/install-rpm.html#downloads。

 # 下载地址wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.14/rabbitmq-server-3.8.14-1.el7.noarch.rpm

RPM パッケージをダウンロードしたら、RPM を使用してインストールします。

rpmを使用してインストールする

まず、Erlang のインストール時に必要な依存関係 socat をインストールします。

 yum install -y socat

次に、Erlang と RabbitMQ をインストールします。

 rpm -ivh erlang-23.3.2-1.el7.x86_64.rpm rpm -ivh rabbitmq-server-3.8.14-1.el7.noarch.rpm

上記の2つのコマンドを実行すると、ErlangとRabbitMQのインストールが完了します。とても簡単です。

RabbitMQを起動します。

 systemctl start rabbitmq-server

起動時に RabbitMQ が自動的に起動するように設定します。

 systemctl enable rabbitmq-server

その他の RabbitMQ 操作:

 #查看启动后的情况rabbitmqctl status #关闭服务rabbitmqctl stop #重启rabbitmq systemctl restart rabbitmq-server #服务状态systemctl status rabbitmq-server #查看所有队列rabbitmqctl list_queues # 清除某个队列的数据rabbitmqctl purge_queue queueName # 清除所有队列数据以及用户数据、配置数据:慎用,记得要先把MQ 的meta data备份出来,reset后,将meta data导入即可。 rabbitmqctl reset但是在使用此命令前,要先关闭应用,否则不能清除。关闭应用的命令为: rabbitmqctl stop_app执行了这两条命令后再次启动此应用。命令为: rabbitmqctl start_app再次执行命令: rabbitmqctl list_queues #查看所有虚拟主机rabbitmqctl list_vhosts #添加用户: rabbitmqctl add_user username password #列出所有用户: rabbitmqctl list_users #删除用户: rabbitmqctl delete_user username #清除用户权限: rabbitmqctl clear_permissions -p vhostpath username #列出用户权限: rabbitmqctl list_user_permissions username #修改密码: rabbitmqctl change_password username newpassword #设置用户权限: rabbitmqctl set_permissions -p vhostpath username ".*" ".*" ".*" #创建虚拟主机: rabbitmqctl add_vhost vhostpath #列出所以虚拟主机: rabbitmqctl list_vhosts #列出虚拟主机上的所有权限: rabbitmqctl list_permissions -p vhostpath #删除虚拟主机: rabbitmqctl delete_vhost vhost vhostpath #移除所有数据,要在rabbitmqctl stop_app 之后使用: rabbitmqctl reset #组成集群命令: rabbitmqctl join_cluster <clusternode> [--ram] #查看集群状态: rabbitmqctl cluster_status #修改集群节点的存储形式: rabbitmqctl change_cluster_node_type disc | ram #摘除节点: rabbitmqctl forget_cluster_node [--offline] #修改节点名称: rabbitmqctl rename_cluster_node oldnode1 newnode1 [oldnode2 newnode2] [oldnode3 newnode3...]

RabbitMQの設定

1. Webベースのバックエンド管理プラグインを有効にします。

 rabbitmq-plugins enable rabbitmq_management

次のように実行します。

2. ユーザー名「admin」、パスワード「admin」で新しい管理者アカウントを作成し、管理者権限を付与します。

 rabbitmqctl add_user admin admin rabbitmqctl set_user_tags admin administrator

次のように実行します。

3. 管理者が使用できる仮想マシンの権限を構成します。

 rabbitmqctl add_vhost admin rabbitmqctl set_permissions -p admin admin ".*" ".*" ".*"

次のように実行します。

4. プラグイン管理:

 #插件列表: rabbitmq-plugins list #启动插件: rabbitmq-plugins enable XXX (XXX为插件名) #停用插件: rabbitmq-plugins disable XXX

5. バックエンドの Web 管理インターフェースを開きます。

http://localhost:15672/ で管理者ユーザーを設定しましたので、admin でログインするか、デフォルトのユーザー名とパスワードである guest でログインできます。管理インターフェースに入ると、以下の画面が表示されます。

次のように、ユーザー名/パスワード: admin / admin を使用してログインします。

ユーザー、キュー、その他の情報をバックグラウンドで管理できます。

6. デフォルトのRabbitMQポートを変更する

RabbitMQ はデフォルトでいくつかのポートを開きます。

  • 4369: Erlang検出ポート
  • 5672: クライアントが RabbitMQ サービスに接続するために使用するクライアント側の通信ポート。
  • 15672: バックエンド管理インターフェースのUIポート。http://localhost:15672/ などのURLでバックエンドにアクセスします。
  • 25672: サーバー間の内部通信ポート

実稼働環境では、セキュリティやその他の理由により、デフォルトのポート番号を変更する必要がある場合があります。

RabbitMQ-3.8.x の新バージョンをインストールしたところ、設定ファイルが見つからないことが判明しました。通常、サービスポートは設定ファイルで設定できますが、RabbitMQ-3.8.1 では設定ファイルが自動生成されないため、手動で追加する必要があります。

 [root@..]# ls /etc/rabbitmq/rabbitmq.conf ls: cannot access /etc/rabbitmq/rabbitmq.conf: No such file or directory # 需要手动添加

設定ファイルの公式推奨場所は次のとおりです: /etc/rabbitmq/rabbitmq.conf

次に必要なのは、デフォルトポートを5672から56720に変更し、リモートアクセスを許可することです。また、デフォルトのWeb管理ポートを15672から56271に変更します。これは以下の設定で実現できます。

 # vim /etc/rabbitmq/rabbitmq.conf # AMQP 0-9-1 and 1.0 port,默认5672,允许远程访问listeners.tcp.default = 0.0.0.0:56720 # web管理,默认15672 management.tcp.port = 56721 management.tcp.ip = 0.0.0.0

次のように実行します。

RabbitMQ サービスを保存して再起動します。

 systemctl restart rabbitmq-server systemctl status rabbitmq-server

netstat -lntp を使用してポートのリスニング ステータスを確認します。

7. その他の構成

RabbitMQ パフォーマンス最適化構成について詳しくは、公式 Web サイト (https://www.rabbitmq.com/configure.html) をご覧ください

Dockerを使用してRabbitMQをインストールする

開発環境では、Dockerを使ってインストールすることもできます。こちらの方が便利です。引き続きDockerを使ってインストールしてみましょう。

まず、Docker 環境をインストールする必要があります。

 yum install -y docker

Docker のバージョンを確認するには:

 [root@server docker]# docker version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-208.git7d71120.el7_9.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Mon Jun 7 15:36:09 2021 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-208.git7d71120.el7_9.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Mon Jun 7 15:36:09 2021 OS/Arch: linux/amd64 Experimental: false [root@server docker]#

RabbitMQミラーを検索:

 [root@ ~]# docker search rabbitmq NAME DESCRIPTION STARS OFFICIAL AUTOMATED rabbitmq RabbitMQ is an open source multi-protocol me… 3703 [OK] bitnami/rabbitmq Bitnami Docker Image for RabbitMQ 62 [OK] tutum/rabbitmq Base docker image to run a RabbitMQ server 22 kbudde/rabbitmq-exporter rabbitmq_exporter for prometheus 15 [OK] frodenas/rabbitmq A Docker Image for RabbitMQ 12 [OK] cyrilix/rabbitmq-mqtt RabbitMQ MQTT Adapter 9 [OK] arm32v7/rabbitmq RabbitMQ is an open source multi-protocol me… 7

RabbitMQ イメージをプルします。

 docker pull docker.io/rabbitmq

次にミラーを確認します。

 [root@server docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/rabbitmq latest ba647756d55a 3 days ago 221 MB [root@server docker]#

次にコンテナを実行します。

 docker run --name rabbitmq -d -p 5672:5672 -p 15672:15672 -v /data:/var/lib/rabbitmq docker.io/rabbitmq

サービスを再起動するスクリプトを作成します。

 [root@server docker_rabbitmq]# cat restart_service.sh #!/bin/sh basedir=`pwd` datadir=$basedir/data image=docker.io/rabbitmq name=rabbitmq mkdir -p $datadir # docker run --name rabbitmq -d -p 5672:5672 -p 15672:15672 -v /data:/var/lib/rabbitmq rabbitmq:3.8.1-management docker stop $name docker rm $name docker run -d --name=$name --restart always -p 5672:5672 -p 15672:15672 -v $datadir:/var/lib/rabbitmq $image [root@server docker_rabbitmq]#

最後に、 `docker ps` を使用して実行中のコンテナを表示します。

 [root@server docker_rabbitmq]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b959544500f4 docker.io/rabbitmq "docker-entrypoint..." 2 seconds ago Up 1 second 4369/tcp, 0.0.0.0:5672->5672/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp rabbitmq

これで RabbitMQ Docker 環境のインストールが完了します。

Docker での RabbitMQ の設定

1. Webベースのバックエンド管理プラグインを有効にします。

 rabbitmq-plugins enable rabbitmq_management

次のように実行します。

 [root@server docker_rabbitmq]# docker exec -it rabbitmq bash root@b959544500f4:/# rabbitmq-plugins enable rabbitmq_management Enabling plugins on node rabbit@b959544500f4: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_prometheus rabbitmq_web_dispatch Applying plugin configuration to rabbit@b959544500f4... The following plugins have been enabled: rabbitmq_management started 1 plugins. root@b959544500f4:/#

ブラウザから管理ページにアクセスできるようになりました: http://localhost:15672/

次のように、デフォルト アカウント「guest」を使用してログインできます。

2. ユーザー名「admin」、パスワード「admin」で新しい管理者アカウントを作成し、管理者権限を付与します。

 rabbitmqctl add_user admin admin rabbitmqctl set_user_tags admin administrator

次のように実行します。

 root@b959544500f4:/# rabbitmqctl add_user admin admin Adding user "admin" ... Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more. root@b959544500f4:/# root@b959544500f4:/# rabbitmqctl set_user_tags admin administrator Setting tags for user "admin" to [administrator] ... root@b959544500f4:/#

3. 管理者が使用できる仮想マシンの権限を構成します。

 rabbitmqctl add_vhost admin rabbitmqctl set_permissions -p admin admin ".*" ".*" ".*"

次のように実行します。

 root@b959544500f4:/# rabbitmqctl add_vhost admin Adding vhost "admin" ... root@b959544500f4:/# rabbitmqctl set_permissions -p admin admin ".*" ".*" ".*" Setting permissions for user "admin" in vhost "admin" ... root@b959544500f4:/#

4. プラグイン管理:

 #插件列表: rabbitmq-plugins list #启动插件: rabbitmq-plugins enable XXX (XXX为插件名) #停用插件: rabbitmq-plugins disable XXX

5. 構成パスの説明

rabbit的配置文件目录:/etc/rabbitmq rabbit的数据文件目录:/var/lib/rabbitmq rabbit的日志文件目录:/var/log/rabbitmq

永続性が必要な場合は、次のパスにマウントできます。

 # 创建挂在路径mkdir -p ~/rabbitmq/{etc,lib,var/{lib,log}} # 启动容器docker run -d -p 1883:1883 -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 61613:61613 -p 61614:61614 -v ~/rabbitmq/etc:/etc/rabbitmq -v ~/rabbitmq/lib:/var/lib/rabbitmq -v ~/rabbitmq/log:/var/log/rabbitmq --name rabbit rabbitmq:management

バックエンド管理の使用

1. ユーザーロール

以前、コマンドラインを使って管理者ユーザーを作成しました。以下のように、ウェブページから作成することもできます。

ここで、さまざまなロールを選択してユーザーを作成できます。

キャラクターの説明:

スーパー管理者(管理者)

管理コンソールにログインして、すべての情報を表示し、ユーザーとポリシーに対する操作を実行できます。

監視

管理コンソールにログインして、RabbitMQ ノードに関する関連情報 (プロセス数、メモリ使用量、ディスク使用量など) を表示できます。

政策立案者

管理コンソールにログインしてポリシーを管理することはできますが、ノード関連の情報(上記画像の赤枠部分)は閲覧できません。

ゼネラルマネージャー

管理コンソールにログインすることしかできず、ノード情報を表示したりポリシーを管理したりすることはできません。

他の

管理コンソールにログインできない場合は、通常、通常のプロデューサーまたはコンシューマーです。

2. vhost を作成し、ユーザーに権限を付与します。

3. management_agentプラグインを有効にする

次に、次のようにユーザー「libai」に切り替えてログインします。

次の警告が表示されました:

 Stats in management UI are disabled on this node

解決:

 #进入rabbitmq容器docker exec -it {rabbitmq容器名称或者id} /bin/bash #进入容器后,cd到以下路径cd /etc/rabbitmq/conf.d/ #修改management_agent.disable_metrics_collector = false echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf #退出容器exit #重启rabbitmq容器docker retart {rabbitmq容器id}

これから以下のように進めていきます。

 # 进入配置目录root@b959544500f4:/# cd /etc/rabbitmq/conf.d/ root@b959544500f4:/etc/rabbitmq/conf.d# ls 10-default-guest-user.conf management_agent.disable_metrics_collector.conf root@b959544500f4:/etc/rabbitmq/conf.d# # 查看当前的配置root@b959544500f4:/etc/rabbitmq/conf.d# cat management_agent.disable_metrics_collector.conf management_agent.disable_metrics_collector = true # 修改配置root@b959544500f4:/etc/rabbitmq/conf.d# echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf root@b959544500f4:/etc/rabbitmq/conf.d# # 查看修改后的配置root@b959544500f4:/etc/rabbitmq/conf.d# cat management_agent.disable_metrics_collector.conf management_agent.disable_metrics_collector = false root@b959544500f4:/etc/rabbitmq/conf.d# root@b959544500f4:/etc/rabbitmq/conf.d# exit exit [root@server docker_rabbitmq]# ls data restart_service.sh # 重启容器[root@server docker_rabbitmq]# docker restart rabbitmq rabbitmq [root@server docker_rabbitmq]#

設定後、次のようにページにアクセスします。