因要求需要部署一套rabbitmq,以前没接触过,所以在网上找到了方法:
以下是提供思路的大佬的原文:
1.Centos7 离线安装RabbitMQ,并配置集群___擎正义之旗
https://blog.csdn.net/Alger_magic/article/details/82868267
2.Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method:解决方法___czczcz_
https://blog.csdn.net/czczcz_/article/details/83379158
3.Spring Boot整合RabbitMQ详细教程___梦里梦不出梦里梦的梦
https://blog.csdn.net/qq_38455201/article/details/80308771
为了自己不弄晕,准备分三章来写,当前记录怎么把三台单机的rabbitMQ 整合为集群并部署负载均衡
目录
1.修改host文件
vim /etc/hosts
将要设置的ip地址 和hostname对应起来 比如我的:
为了让他生效 我是用reboot重启,如够不要重启我使用了命令 hostnamectl
2.使用相同的erlang.cookie
cat /var/lib/rabbitmq/.erlang.cookie
因为三台是不一样的
我要用node01作为主节点的话 就把这个node01的主节点拷贝过去
scp -r /var/lib/rabbitmq/.erlang.cookie root@ip:/var/lib/rabbitmq/
.erlang.cookie
然后再次查看
这样就一致了,说明替换成了(这里有个问题 进目录是看不到的 所以要在上一级目录看或者用绝对路径看)
将这三个cookie 权限赋值
chmod 400 /var/lib/rabbitmq/.erlang.cookie
3.添加集群命令
这里需要使用命令让三台服务器组成集群
因为cookie换了 需要重新启动 三台rabbitmq
service rabbitmq-server stop
#或者kill -9 进程号
然后再重新启动一下
service rabbitmq-server start
或直接使用 restart 也行
等待启动成功.....
接下来是设置集群 首先使用命令查看集群状态
rabbitmqctl cluster_status
因为是单机,所以都是一个样子 如下:
这时候需要修改node02 和node03的状态
两台机子做同一个操作:
rabbitmqctl stop_app #先停止服务
然后绑定
rabbitmqctl join_cluster rabbit@rabbit-node1 #绑定到node01上
这样就完成了两者绑定到node01
接着启动服务
rabbitmqctl start_app
启动后
再查看集群状态 这下就绑定好了
可以看看node02 和 node03 前后的集群状态
前:
后:
然后登陆node01的UI界面:(可能需要对admin重新赋予权限)
这样就搭好了!
4.使用负载均衡haproxy
我准备搭载在一个新的服务器上 ,当然也可以搭载在节点服务器上
将haproxy包安装
rpm -ivh haproxy-1.5.18-8.el7.x86_64.rpm
查看haproxy.conf文件(截取了一部分)
HAProxy程序的配置文件默认在/etc/haproxy/haproxy.cfg
cat /etc/haproxy/haproxy.cfg
然后vim 修改这个配置文件
vim /etc/haproxy/haproxy.conf
将下面的内容放到最后:
####################################################################
listen http_front
bind 0.0.0.0:8100 #监听端口
stats refresh 30s #统计页面自动刷新时间
stats uri /haproxy?stats #统计页面url
stats realm Haproxy Manager #统计页面密码框上提示文本
stats auth admin:admin #统计页面用户名和密码设置
#stats hide-version #隐藏统计页面上HAProxy的版本信息
#####################我把RabbitMQ的管理界面也放在HAProxy后面了###############################
listen rabbitmq_admin
bind 0.0.0.0:8101
server node01 10.30.75.28:15672
server node02 10.30.75.29:15672
server node03 10.30.75.30:15672
####################################################################
listen rabbitmq_cluster
bind 0.0.0.0:5671
option tcplog
mode tcp
timeout client 3h
timeout server 3h
option clitcpka
balance roundrobin #负载均衡算法(#banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数)
#balance url_param userid
#balance url_param session_id check_post 64
#balance hdr(User-Agent)
#balance hdr(host)
#balance hdr(Host) use_domain_only
#balance rdp-cookie
#balance leastconn
#balance source //ip
server node01 10.30.75.28:5672 check inter 5s rise 2 fall 3 #check inter 2000 是检测心跳频率,rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用
server node02 10.30.75.29:5672 check inter 5s rise 2 fall 3
server node03 10.30.75.30:5672 check inter 5s rise 2 fall 3
根据自己的情况 更改ip地址和端口
然后测试文件
我这有个警告在那里 然后文件说是valid的
但是启动不成功
查看问题:
5月 01 00:46:38 node haproxy-systemd-wrapper[13135]: [ALERT] 120/004638 (13137) : Starting proxy http_front: cannot bind socket [0.0.0.0:8100]
5月 01 00:46:38 node haproxy-systemd-wrapper[13135]: [ALERT] 120/004638 (13137) : Starting proxy rabbitmq_admin: cannot bind socket [0.0.0.0:8101]
5月 01 00:46:38 node haproxy-systemd-wrapper[13135]: [ALERT] 120/004638 (13137) : Starting proxy rabbitmq_cluster: cannot bind socket [0.0.0.0:5671]
我猜是 防火墙问题,然后查了一下果然开启的,根据自身要求去开启白名单还是关闭防火墙
我直接stop掉了
然后把 selinux关掉(这里是个巨坑)
重新启动服务
5.测试
使用haproxy的负载均衡的ip端口去访问rabbitmq
在浏览器输入ip:8100/haproxy?stats, 查看HAProxy状态,如下图
以上!