在 linux 下手动安装 RabbitMQ 集群。
准备
安装之前的准备工作。
准备内容 | 说明 | 其他 |
---|---|---|
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 用户没有这个权限,手动创建其他用户并设置权限后登录成功。