rabbitMq部署(二) 单机rabbitmq 整合为集群

版权声明:转载的话 请标明出处 https://blog.csdn.net/qq_28198181/article/details/89704487

因要求需要部署一套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文件

2.使用相同的erlang.cookie

3.添加集群命令

4.使用负载均衡haproxy

5.测试


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状态,如下图

以上!

猜你喜欢

转载自blog.csdn.net/qq_28198181/article/details/89704487