RabbitMQ
-
[一、安装 RabbitMQ](#一、安装 RabbitMQ)
-
环境准备:三台服务器,系统是 CentOS7
-
IP地址分别是:
- rabbitmq1:192.168.152.71
- rabbitmq2:192.168.152.72
- rabbitmq3:192.168.152.73
一、安装 RabbitMQ
记得配置yum源,避免不必要的错误
在三台服务器上分别安装 erlang 和 rabbitmq-server
-
安装 RabbitMQ 运行环境
bashyum install -y erlang
-
安装软件 RabbitMQ
bashyum install -y rabbitmq-server
二、更改配置文件
一下配置在三台服务器上都要修改
-
更改 RabbitMQ 配置文件
bashvim /etc/rabbitmq/rabbitmq.config
找到
%%{loopback_users, []},
改为下面内容,大概在 53 行bash{loopback_users, []}
-
更改 hosts 配置主机名解析
bash192.168.152.71 rabbitmq1 192.168.152.72 rabbitmq2 192.168.152.73 rabbitmq3
可以 ping 一下看是否配置成功
三、配置集群
-
改主机名,对照 hosts 配置的主机名解析,把对用服务器的主机名改为相应的解析
如:192.168.152.71
bashhostnamectl set-hostname rabbitmq1
192.168.152.72
bashhostnamectl set-hostname rabbitmq2
192.168.152.73
bashhostnamectl set-hostname rabbitmq3
然后全部都
exit
重新登录 -
启动三台服务器的 RabbitMQ 服务
bashsystemctl start rabbitmq-server systemctl enable rabbitmq-server
-
统一三台服务器的 erlang.cookie,把 rabbitmq1 的 erlang.cookie 传输到其它两台
bashscp /var/lib/rabbitmq/.erlang.cookie rabbitmq2:/var/lib/rabbitmq/.erlang.cookie scp /var/lib/rabbitmq/.erlang.cookie rabbitmq3:/var/lib/rabbitmq/.erlang.cookie
-
运行
cat /var/lib/rabbitmq/.erlang.cookie
,查看三台服务器的值是否一致,一致后再重启 rabbitmq2 和 rabbitmq3 的 RabbitMQ 服务bashsystemctl restart rabbitmq-server
-
查看 RabbitMQ 的节点状态
bashrabbitmqctl cluster_status
结果如下即为正确
bash# rabbitmq1 的结果: Cluster status of node rabbit@rabbitmq1 ... [{nodes,[{disc,[rabbit@rabbitmq1]}]}, {running_nodes,[rabbit@rabbitmq1]}, {cluster_name,<<"rabbit@rabbitmq1">>}, {partitions,[]}] ...done. # rabbitmq2 的结果: Cluster status of node rabbit@rabbitmq2 ... [{nodes,[{disc,[rabbit@rabbitmq2]}]}, {running_nodes,[rabbit@rabbitmq2]}, {cluster_name,<<"rabbit@rabbitmq2">>}, {partitions,[]}] ...done. # rabbitmq3 的结果: Cluster status of node rabbit@rabbitmq3 ... [{nodes,[{disc,[rabbit@rabbitmq3]}]}, {running_nodes,[rabbit@rabbitmq3]}, {cluster_name,<<"rabbit@rabbitmq3">>}, {partitions,[]}] ...done.
-
停止 rabbitmq2 和 rabbitmq3 主机的 RabbitMQ 应用
bashrabbitmqctl stop_app
-
让 rabbitmq2 和 rabbitmq3 加入 rabbitmq1 的集群
bashrabbitmqctl join_cluster rabbit@rabbitmq1
-
启动 rabbitmq2 和 rabbitmq3 主机的 RabbitMQ 应用,并再次查看 RabbitMQ 的节点状态
bashrabbitmqctl start_app
再三台服务器上执行
rabbitmqctl cluster_status
命令,结果就会变为下面这样bash# rabbitmq1 的结果: Cluster status of node rabbit@rabbitmq1 ... [{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]}, {running_nodes,[rabbit@rabbitmq2,rabbit@rabbitmq3,rabbit@rabbitmq1]}, {cluster_name,<<"rabbit@rabbitmq1">>}, {partitions,[]}] ...done. # rabbitmq2 的结果: Cluster status of node rabbit@rabbitmq2 ... [{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]}, {running_nodes,[rabbit@rabbitmq1,rabbit@rabbitmq3,rabbit@rabbitmq2]}, {cluster_name,<<"rabbit@rabbitmq1">>}, {partitions,[]}] ...done. # rabbitmq3 的结果: Cluster status of node rabbit@rabbitmq3 ... [{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]}, {running_nodes,[rabbit@rabbitmq2,rabbit@rabbitmq1,rabbit@rabbitmq3]}, {cluster_name,<<"rabbit@rabbitmq1">>}, {partitions,[]}] ...done.
此时集群配置成功
四、测试
可以可以启用 RabbitMQ 可视化web管理插件,更直观的看到集群状态,也方便测试
三台服务器都要开启
bash
rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server
通过IP地址加端口号访问,端口号为 15672
如:192.168.152.71:15672,默认的用户名:guest,密码:guest
可以再其中一台添加用户,看其它几台是否有变化,有则配置成功