Debian13部署RabbitMQ
1、下载软件包
GitHub下载 https://github.com/rabbitmq/rabbitmq-server/releases
我这边下是支持debian的deb格式
https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.2.3/rabbitmq-server_4.2.3-1_all.deb
因为RabbitMQ是采用 Erlang语言开发的
这要使用最新 Erlang 27.x 软件包网站:
https://packagecloud.io/rabbitmq/erlang
github地址 https://github.com/rabbitmq/erlang-debian-package
2、环境安装部署
Debian13安装脚本rabbitMq.sh
创建脚本
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie trixie main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/trixie trixie main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
启动rabbitmq
systemctl start rabbitmq-server
查看rabbitmq 状态
systemctl status rabbitmq-server
关闭重启服务
# 关闭rabbitmq服务
systemctl stop rabbitmq-server
# 重启rabbitmq服务
systemctl restart rabbitmq-server
开启RabbitMQWeb管理界面插件
rabbitmq-plugins enable rabbitmq_management
防火墙配置
#web管理界面端口
ufw allow 15672/tcp
# EPMD (Erlang 端口映射守护进程)
ufw allow 4369/tcp
#Erlang 节点间通信端口(基础端口 + 动态分配,通常配置基础端口为 25672)
ufw allow 25672/tcp
#AMQP 通信端口
ufw allow 5672/tcp
然后我们打开浏览器,访问服务器公网ip:15672
DNS 解析
RabbitMQ 集群依赖 DNS 解析,为了防止 DNS 解析失败,建议在所有节点的 /etc/hosts 中添加记录
vim /etc/hosts
#添加以下内容
10.1.26.60 RabbitMQ-01
10.1.26.61 RabbitMQ-02
10.1.26.62 RabbitMQ-03
3、账号配置
添加远程账号
rabbitmqctl add_user admin admin123
设置用户角色,分配操作权限
#角色共有四种:
#administrator:可以登录控制台、查看所有信息、并对rabbitmq进行管理
#monToring:监控者;登录控制台,查看所有信息
#policymaker:策略制定者;登录控制台指定策略
#managment:普通管理员;登录控制
rabbitmqctl set_user_tags admin administrator
为用户添加资源权限(授予访问虚拟机根节点的所有权限)
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
其他指令
修改密码
rabbitmqctl change_ password 用户名 新密码
删除用户
rabbitmqctl delete_user 用户名
查看用户清单
rabbitmqctl list_users
4、集群搭建
修改各节点机器名称
hostnamectl set-hostname RabbitMQ-01
配置各个节点的hosts
vim /etc/hosts
10.1.26.60 RabbitMQ-01
10.1.26.61 RabbitMQ-02
把主服务器/var/lib/rabbitmq下的.erlang.cookie文件复制到另外节点上设备上
保持所有服务器使用同一个.erlang.cookie文件
SCP远程拷贝输入远程服务器密码,也可以手动下载上传同一位置
scp /var/lib/rabbitmq/.erlang.cookie root@10.201.216.161:/var/lib/rabbitmq/.erlang.cookie
在各节点启动服务
rabbitmq-server -detached
连接集群节点
在被加入节点机器上执行
#1.关掉服务
rabbitmqctl stop_app
#2.重置
rabbitmqctl reset
#3.将二号节点加入到一号节点
rabbitmqctl join_cluster rabbit@RabbitMQ-01
#4.开启服务
rabbitmqctl start_app
#5.查看集群状态
rabbitmqctl cluster_status
集群账号设置
#只要在一台机器上执行
#1.创建账号
rabbitmqctl add_user admin admin123
#2.设置角色
rabbitmqctl set_user_tags admin administrator
#3.设置用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
#4.登录
#注意如果登录不了注意清除页面缓存
解除集群节点
#在要解除的节点上执行
rabbitmqctl stop_app
rabbitmqctl reset
#强制重置
#rabbitmqctl force_reset
rabbitmqctl start_app
rabbitmqctl cluster_status
#此条在主节点(RabbitMQ-01)主节点上执行踢出RabbitMQ-02
rabbitmqctl forget_cluster_node rabbit@RabbitMQ-02
查看安装环境
rabbitmqctl environment
systemctl status rabbitmq-server
安装插件,支持web访问
#1.进入安装目录
cd /usr/lib/rabbitmq
#2.执行语句
rabbitmq-plugins enable rabbitmq_web_stomp
5、备份
备份配置方案
导出 RabbitMQ 元数据(如交换机、队列、绑定、用户、权限、策略等)的标准命令。
注意:它不导出队列中的消息内容
rabbitmqctl export_definitions <文件路径>
#更长的路径(如果未加入环境变量)
/usr/lib/rabbitmq/bin/rabbitmqctl export_definitions /tmp/backup.json
导入恢复
#停止 RabbitMQ,导入之前备份的 JSON 文件
rabbitmqctl import_definitions /tmp/backup.json
6、其他
日志目录
cd /var/log/rabbitmq
遇到起不来问题
查看日志
journalctl -u rabbitmq-server -f
端口占用查看
ps aux | grep beam
ss -tulnp | grep 25672
仍有进程占用,记下 PID 并 kill
kill -9 <PID>
清理可能的残留状态(会丢失所有队列、用户、权限等配置!)
rm -rf /var/lib/rabbitmq/mnesia/
重新启动 RabbitMQ并查看状态
systemctl start rabbitmq-server
systemctl status rabbitmq-server
非 UTF-8 编码问题解决
查看当前设置
locale
如果看到 LANG=C 或 LANGUAGE= 为空,且没有 .UTF-8 的后缀,就需要修改
Debian
编辑.profile
vim .profile
#编辑内容
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN.UTF-8
#重启就生效了
shutdown -r now
编辑**/etc/locale.gen**
vim /etc/locale.gen
取消注释你需要的 UTF-8 行(推荐至少保留一个英文 UTF-8)
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
生成locale
locale-gen
验证是否成功
locale -a | grep -E "(en_US|zh_CN).*UTF-8"
其他
locale-gen en_US.UTF-8
localedef -i en_US -f UTF-8 en_US.UTF-8
export LANG=en_US.UTF-8
#-------以下2行就OK了-----------------------
locale-gen zh_CN.UTF-8
update-locale LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8
#-------以下临时生效------------------------
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
#查看当前设置
locale
CentOS
# 安装语言包
yum install glibc-langpack-en
# 或者使用 localectl 设置
localectl set-locale LANG=en_US.UTF-8
修改完成后,必须退出终端重新登录,或者重启服务器,然后再运行你的程序
登录后警报问题
⚠ All stable feature flags must be enabled after completing an upgrade. [Learn more]
通过命令执行
#查看当前未启用的 stable feature flags
rabbitmqctl list_feature_flags
启用所有 stable 且 disabled 的 flags
rabbitmqctl enable_feature_flag all