CentOS9安装RabbitMQ

使用 yum 方式安装。参考官方安装指南

一、介绍及规划

1.1 介绍

RabbitMQ 是由 erlang 语言开发,基于 AMQP 协议实现的消息队列,它是一种应用程序之间的通信方法,

1.2 规划

主机名 ip 系统1 Erl 版本 RabbitMQ 版本
rabbitmq201 192.168.10.201 centos9 27.3.4.6-1 4.2.2-1
rabbitmq202 192.168.10.202 centos9 27.3.4.6-1 4.2.2-1
rabbitmq203 192.168.10.203 centos9 27.3.4.6-1 4.2.2-1
1
2
3
4
5
cat >> /etc/hosts <<EOF
192.168.10.201 rabbitmq201
192.168.10.202 rabbitmq202
192.168.10.203 rabbitmq203
EOF
1
hostnamectl set-hostname rabbitmq201
1
hostnamectl set-hostname rabbitmq202
1
hostnamectl set-hostname rabbitmq203

二、安装

REPL 提供的 yum 源版本会落后不少,这里使用 RabbitMQ 官方提供的 yum

  1. 导入签名
1
2
3
4
5
6
## primary RabbitMQ signing key
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc'
## modern Erlang repository
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key'
## RabbitMQ server repository
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key'

​ 加速地址

1
2
3
4
5
6
7
8
## primary RabbitMQ signing key
rpm --import 'https://g.bravexist.cn/https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc'

## modern Erlang repository
rpm --import 'https://g.bravexist.cn/https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key'

## RabbitMQ server repository
rpm --import 'https://g.bravexist.cn/https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key'
  1. 创建 /etc/yum.repos.d/rabbitmq.repo
1
vi /etc/yum.repos.d/rabbitmq.repo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# In /etc/yum.repos.d/rabbitmq.repo
##
## Zero dependency Erlang RPM
##
[modern-erlang]
name=modern-erlang-el9
# Use a set of mirrors maintained by the RabbitMQ core team.
# The mirrors have significantly higher bandwidth quotas.
baseurl=https://yum1.rabbitmq.com/erlang/el/9/$basearch
https://yum2.rabbitmq.com/erlang/el/9/$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-noarch]
name=modern-erlang-el9-noarch
# Use a set of mirrors maintained by the RabbitMQ core team.
# The mirrors have significantly higher bandwidth quotas.
baseurl=https://yum1.rabbitmq.com/erlang/el/9/noarch
https://yum2.rabbitmq.com/erlang/el/9/noarch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
##
## RabbitMQ Server
##
[rabbitmq-el9]
name=rabbitmq-el9
baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/$basearch
https://yum1.rabbitmq.com/rabbitmq/el/9/$basearch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[rabbitmq-el9-noarch]
name=rabbitmq-el9-noarch
baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/noarch
https://yum1.rabbitmq.com/rabbitmq/el/9/noarch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

加速地址1

1
sed -i 's#https://github.com#https://g.bravexist.cn/https://github.com#g' /etc/yum.repos.d/rabbitmq.repo

加速地址2

1
sed -i 's#https://github.com#https://gh.bravexist.cn/https://github.com#g' /etc/yum.repos.d/rabbitmq.repo
  1. 安装依赖
1
dnf install -y logrotate
  1. 安装最新版本 ErlangRabbitMQ
1
dnf install erlang rabbitmq-server

或列出指定版本并安装

1
dnf list erlang rabbitmq-server --showduplicates

​ 安装指定版本

1
dnf install erlang-27.3.4.6-1.el9 rabbitmq-server-4.2.2-1.el8
  1. 验证
1
erl -version
1
rabbitmqctl version
  1. 启动
1
systemctl start rabbitmq-server

三、搭建集群

需提前做好 hosts 解析。

3.1 准备工作

  1. Erlang 节点间通信需要完全一致的 Cookie 文件
1
2
3
cat > /var/lib/rabbitmq/.erlang.cookie <<EOF
VMBQVRFSQJJIUFJNHWQU
EOF
1
cat /var/lib/rabbitmq/.erlang.cookie
  1. 修正权限
1
2
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
1
ls -l /var/lib/rabbitmq/.erlang.cookie
  1. 重启
1
systemctl restart rabbitmq-server

3.2 加入集群

  1. 主节点 rabbit201 无须操作
  • rabbitmq201
  1. 从节点加入集群
  • rabbitmq202

​ 停止 RabbitMQ 应用(但不停止 Erlang 虚拟机)

1
rabbitmqctl stop_app

​ 重置该节点数据(新装机器可选,若是旧机器必须执行以清除旧数据)

1
rabbitmqctl reset

​ 加入到 rabbitmq201注意 :设置正确的主机名

1
rabbitmqctl join_cluster rabbit@rabbitmq201

​ 启动应用

1
rabbitmqctl start_app
  1. 其余从节点类似
  • rabbitmq203
1
2
3
4
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq201
rabbitmqctl start_app
  1. 验证集群状态
  • 任意节点
1
rabbitmqctl cluster_status

3.3 使用

默认的 guest 用户只能在 localhost 登录。我们需要创建一个管理员账户。

  1. 启用插件
1
rabbitmq-plugins enable rabbitmq_management
  1. 创建用户

    • 任意一台机器操作即可。

    用户 admin 密码 admin123 (请修改复杂密码)

1
rabbitmqctl add_user admin admin123

​ 设置为管理员标签

1
rabbitmqctl set_user_tags admin administrator

​ 设置权限 (所有 vhost,配置、写、读权限)

1
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
  1. 测试访问

http://192.168.10.201:15672

  1. 查看用户
1
rabbitmqctl list_users