RabbitMQ集群搭建

目录

1 RabbitMQ集群搭建

 2 镜像模式

2.1 镜像模式实现 

3 HAProxy安装和配置 

3.1 .X86架构的CentOS虚拟机中安装HAProxy

​编辑 3.2 ARM架构的CentOS虚拟机中安装HAProxy

4 HAProxy负载均衡测试 


1 RabbitMQ集群搭建

设置RabbitMQ开机自启动

chkconfig rabbitmq-server on

1. ⾸先,克隆两台台IP地址为192.168.93.100、192.168.93.101的虚拟机,然后安装 RabbitMQ以及整合环境搭建,这样我们就准备好了两台Linux服 务器。 

 2.在192.168.93.100和192.168.93.101 服务器上,修改/etc/hosts映射⽂件。

127.0.0.1 node1 localhost.localdomain localhost4 localhost4.localdomain4
::1 node1 localhost.localdomain localhost6 localhost6.localdomain6
192.168.93.100 node1
192.168.93.101 node2 

3.两台Linux主机修改完host⽂件后,需重启Linux服务器。

reboot

 4.在RabbitMQ集群环境下,节点间相互通信时,cookie必须保持⼀致。⾸先查看.erlang.cookie⽂件的位置。

find / -name .erlang.cookie

注:由于我这里已经配置好了,所以有两个。以 /root 下或 /var 下的 .erlang.cookie 文件为准。

 RabbitMQ集群搭建_第1张图片

5.同步RabbitMQ的cookie⽂件到每台服务器,可以使⽤跨服务器拷⻉.erlang.cookie到每台节点。 

scp /var/.erlang.cookie 192.168.93.101:/var

 6.将 /root 或 /var 目录下的 .erlang.cookie 文件替换到 rabbitmq目录下(两台都需要执行)

cp /var/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie

 7.两台服务器同步完cookie⽂件后,需重启Linux服务器。

reboot

 8.在两台服务器上分别停⽌防⽕墙,并启动RabbitMQ服务。

systemctl stop firewalld
rabbitmq-server -detached

 9.第二台加⼊集群节点(组成集群)。

rabbitmqctl stop_app    # 停止服务
rabbitmqctl join_cluster rabbit@node1    # 加入集群
rabbitmqctl start_app    # 开启服务

10.集群配置好后,可以在RabbitMQ任意节点上执⾏下⾯的命令来查看是否集群配置成功。 

rabbitmqctl cluster_status

 11.在搭建RabbitMQ集群之前,所创建的交换机、队列、⽤户都属于单⼀结构,将在新的RabbitMQ集群环境中是 不能⽤的。所以在新的集群中重新⼿动添加⽤户即可(任意节点添加,所有节点共享)。

rabbitmqctl add_user admin 123456    # 创建账号密码
rabbitmqctl set_user_tags admin administrator    # 设置权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"    # 设置可用范围

 注意:当节点脱离RabbitMQ集群还原成单⼀结构后,交换机、队列和⽤户等数据都会重新回来。

12.创建虚拟机。选择【Admin】-【Virtual Hosts】-【Add virtual host】选项,添加⼀个虚拟机。 

RabbitMQ集群搭建_第2张图片

12.控制台查看是否集群成功。RabbitMQ集群搭建_第3张图片 

 2 镜像模式

2.1 镜像模式实现 

1. 通过RabbitMQ可视化管理⻚⾯设置镜像模式策略。 

RabbitMQ集群搭建_第4张图片

3 HAProxy安装和配置 

3.1 .X86架构的CentOS虚拟机中安装HAProxy

1.访问http://www.haproxy.org/download/1.8/src/haproxy-1.8.12.tar.gz地址下载HAProxy安装包。 

 2.再准备⼀台CentOS服务器,将IP地址设置为192.168.93.102,将作为HAProxy服务器。

3.将下载好的HAProxy安装包传输到这台CentOS系统中。 

# 1.Windows系统使⽤Xftp⼯具或者lrzsz⼯具将HAProxy安装包上传⾄CentOS系统
# 2.Mac系统使⽤scp命令将HAProxy安装包上传⾄CentOS系统
scp /Users/Downloads/haproxy-1.8.12.tar.gz [email protected]:/opt

 4.解压HAProxy安装包。

tar -zxvf haproxy-1.8.12.tar.gz

 5.make时需要使⽤TARGET指定内核及版本。

uname -r

 

6.根据内核版本选择编译参数。 

cd haproxy-1.8.12
cat README

7.编译安装HAProxy。

(1) 进⼊haproxy-1.8.12⽬录后,进⾏编译和安装。 

make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

 (2) 编译HAProxy参数说明:

RabbitMQ集群搭建_第5张图片

8.安装成功后,查看HAProxy版本。 

/usr/local/haproxy/sbin/haproxy -v

 9.配置启动⽂件,复制haproxy⽂件到/usr/sbin⽬录下 ,复制haproxy.init脚本到/etc/init.d下。

cp /usr/local/haproxy/sbin/haproxy /usr/sbin/
cp ./examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy

 10.创建系统账号。

useradd -r haproxy

 11.haproxy.cfg配置⽂件需要⾃⾏创建。

mkdir /etc/haproxy
vim /etc/haproxy/haproxy.cfg

 12.添加配置信息到haproxy.cfg⽂件。

#全局配置
global
 #⽇志输出配置,所有⽇志都记录在本机,通过local0输出
 log 127.0.0.1 local0 info
 #当前⼯作⽬录
 chroot /usr/local/haproxy
 #⽤户与⽤户组
 user haproxy
 group haproxy
 #指定⽤户,运⾏进程ID
 uid 99
 #指定组
 gid 99
 #守护进程启动HAProxy
 daemon
 #服务器最⼤并发连接数;如果请求的连接数⾼于此值,将其放⼊请求队列,等待其它连接被释放
 maxconn 4096

#默认配置
defaults
 #应⽤全局的⽇志配置
 log global
 #默认的模式mode {tcp|http|health},TCP是4层,HTTP是7层,health只返回OK
 mode tcp
 #⽇志类别,采⽤tcplog
 option tcplog
 #不记录健康检查⽇志信息
 option dontlognull
 #3次失败则认为服务不可⽤
 retries 3
 #每个进程可⽤的最⼤连接数
 maxconn 2000
 #连接超时
 timeout connect 5s
 #客户端空闲超时时间为30秒则HAProxy发起重连机制
 timeout client 30s
 #服务器端链接超时时间为15秒则HAProxy发起重连机制
 timeout server 15s

#绑定配置
listen rabbitmq_cluster
 #VIP,反向代理到下⾯定义的两台Real Server
 bind 192.168.93.102:5672
 #配置TCP模式
 mode tcp
 #简单的轮询
 balance roundrobin
 #RabbitMQ集群节点配置,每隔5秒对MQ集群做检查,2次正确证明服务可⽤,3次失败证明服务不可⽤
 server node1 192.168.93.100:5672 check inter 5000 rise 2 fall 3
 server node2 192.168.93.101:5672 check inter 5000 rise 2 fall 3

#配置HAProxy的Web监控,查看统计信息
listen monitor
 bind 192.168.93.102:8100
 mode http
 option httplog
 #启⽤基于程序编译时默认设置的统计报告
 stats enable
 #设置HAProxy监控地址为http://192.168.93.102:8100/monitor
 stats uri /monitor
 #每5s刷新⼀次⻚⾯
 stats refresh 5s

 13.关闭防⽕墙。

systemctl stop firewalld

 14.启动HAProxy。

(1) HAProxy服务操作相关命令介绍。 

RabbitMQ集群搭建_第6张图片

(2) 启动HAProxy。 

service haproxy start

 15.查看HAProxy进程。

ps -ef|grep haproxy

 16.访问监控中⼼http://192.168.93.102:8100/monitor,查看HAProxy控制台对node1和node2的监控情况。

RabbitMQ集群搭建_第7张图片 3.2 ARM架构的CentOS虚拟机中安装HAProxy

 1.镜像站RPM⽅式安装。ARM架构的CentOS获取HAProxy安装包的⽅式。

下载地址1:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/web/haproxy1.9.0-1.el7.aarch64.rpm
下载⽅式2:wget
https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/web/haproxy-1.9.0-
1.el7.aarch64.rpm
下载地址3:https://pkgs.org/download/haproxy

 说明:镜像站中的RPM包都是通过开源代码编译打包⽽成,然后将其上传到镜像站。

2.再准备⼀台CentOS服务器,将IP地址设置为192.168.230.133,将作为HAProxy服务器。 

3.由于HAXProxy在CentOS仓库中默认就有HAProxy的安装包,因此可直接在这台CentOS服务器上通过yum命令 来执⾏完成安装。 

sudo yum install haproxy -y

 说明:使⽤yum命令安装的HAProxy默认安装在/usr/sbin/haproxy中,且会⾃动创建配置⽂ 件/etc/haproxy/haproxy.cfg。

4.安装完成之后检查是否安装成功。 

yum info haproxy

 5.查看⽂件位置。

find / -name "haproxy"

6.修改/etc/haproxy/haproxy.cfg配置⽂件,在该⽂件的末尾加⼊如下语句。

#绑定配置
listen rabbitmq_cluster
 #VIP,反向代理到下⾯定义的两台Real Server
 bind 192.168.230.133:5672
 #配置TCP模式
 mode tcp
 option tcplog
 #简单的轮询
 balance roundrobin
 #RabbitMQ集群节点配置,每隔5秒对MQ集群做检查,2次正确证明服务可⽤,3次失败证明服务不可⽤
 server node1 192.168.93.100:5672 check inter 5000 rise 2 fall 3
 server node2 192.168.93.101:5672 check inter 5000 rise 2 fall 3
#配置HAProxy的Web监控,查看统计信息
listen monitor
 bind 192.168.230.133:8100
 mode http
 option httplog
 #启⽤基于程序编译时默认设置的统计报告
 stats enable
 #设置HAProxy监控地址为http://192.168.230.133:8100/monitor
 stats uri /monitor
 #每5s刷新⼀次⻚⾯
 stats refresh 5s

 7.启动当前的HAProxy。

haproxy -f /etc/haproxy/haproxy.cfg

 8.访问监控中⼼http://192.168.230.133:8100/monitor,查看HAProxy控制台对node1和node2的监控情况。

RabbitMQ集群搭建_第8张图片

4 HAProxy负载均衡测试 

1.将项⽬的application.yml配置⽂件中的host地址修改成HAProxy服务器地址,即192.168.230.133。 

spring:
 rabbitmq:
 host: 192.168.93.102
 # ...

 2.运⾏测试类中的delayMessage()测试⽅法。

// 测试延迟队列
@Test
public void delayMessage() {
 rabbitTemplate.convertAndSend("business.exchange", "dl.delay", "延迟队列:测试下订单超时");
}

 3.最后启动项⽬主类,⼀旦检测到死信队列中有待消费的消息,⽴即会读取进⾏消费。从演 示结果得出,所有的请求都会交给HAProxy服务器,然后由其负载均衡到每台RabbitMQ服务器。

你可能感兴趣的:(rabbitmq,linux,分布式)