准备
安装之前的准备工作。
| 准备内容 | 说明 | 其他 |
|---|---|---|
| 3 台服务器 | centos、redhat 等 | |
| Erlang | RabbitMQ 运行需要的基础环境 | |
| socat | RabbitMQ 运行需要的基础环境 | |
| logrotate | RabbitMQ 运行需要的基础环境 | 这个服务器一般自带了 |
下面的安装示例中使用的版本分别是:
rabbitmq-server-3.12.13-1.el8.noarch.rmp
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.12.13/rabbitmq-server-3.12.13-1.el7.noarch.rpm
erlang-25.3.2.9-1.el7.x86_64.rmp
https://github.com/rabbitmq/erlang-rpm/releases/download/v25.3.2.13/erlang-25.3.2.13-1.el8.x86_64.rpm
安装
Erlang
rpm -ivh erlang-25.3.2.9-1.el7.x86_64.rpm

安装成功后查看版本:

socat

rabbitmq-server

启动
systemctl start rabbitmq-server
systemctl status rabbitmq-server 查看状态

加载管控插件
默认情况下只启动了消息传输服务,而不能用到管理监控功能,这个需要手动加载:
rabbitmq-plugins enable rabbitmq_management

创建用户设置权限
默认的用户名密码是 guest/guest,一般需要创建其他用户并设置权限。
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p “/” admin “.” “.” “.”

组建集群
利用 Erlang 的特性组成集群,首先需要保证三台服务器的 erlang_cookies 相同。
拷贝第一胎服务器上的文件:/var/lib/rabbitmq/.erlang.cookie 到另外两台服务器上,并修改用户和权限:
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 600 /var/lib/rabbitmq/.erlang.cookie
在另外两台服务器上分别执行如下命令:
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@linux-3-175
rabbitmqctl start_app
rabbitmqctl cluster_status 查看集群状态

也可以登录管理页面,首页显示节点信息:

错误
启动失败,报错:unable to use my own hostname
启动后报错,执行 journalctl -xe 可以看到如下错误日志

设置 houstname 为域名,然后在 /etc/hosts 中添加记录(需要加上集群中的所有节点信息),如下:

启动失败,报错:unregistered authentication agent for …
执行 journalctl -xe 可以看到如下错误日志

这种错误的原因有很多,我这里的原因是搭建集群时,设置的 /var/lib/rabbitmq/.erlang.cookie 权限有问题,修改所有权和文件权限即可:
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 600 /var/lib/rabbitmq/.erlang.cookie

无法登录管理页面,提示:user can only log in via localhost
浏览器访问 http://ip:15672,输入用户名密码后提示:

默认的 guest/guest 用户没有这个权限,手动创建其他用户并设置权限后登录成功。
参考
- Erlang Version Requirements | RabbitMQ
- rabbitmq/rabbitmq-server: Open source RabbitMQ: core server and tier 1 (built-in) plugins (github.com)
- rabbitmq/erlang-rpm: Latest Erlang/OTP releases packaged as a zero dependency RPM, just enough for running RabbitMQ (github.com)









