高可用的RabbitMQ配置

高可用的RabbitMQ配置

高可用的Rabbitmq的镜像集群的部署教程

三台机器:

mq1: 192.168.86.157

mq2: 192.168.86.158

mq3: 192.168.86.159

1.配置IP(三台机器)

#分别在各自的机器中配置host  ip
#例如 mq1
vim /etc/hosts
#添加以下内容
192.168.86.157 mq1
192.168.86.158 mq2
192.168.86.159 mq3
192.168.86.160 mq4

2.环境的安装(三台机器)

#将需要安装的三个文件以及一个依赖库文件上传到相应的文件夹
#依次安装
rpm -ivh openssl-libs-1.0.2k-21.el7_9.x86_64.rpm --force
rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
rpm -ivh rabbitmq-server-3.7.18-1.el7.noarch.rpm
#复制配置文件
cp /usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
#d打开配置文件rabbitmq.config
vim /etc/rabbitmq/rabbitmq.config
#61行的注释去掉 注意后面的逗号也要去掉



#开启rabbitmq的相关的插件
rabbitmq-plugins enable rabbitmq_management
#开启mqtt协议的插件
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-plugins enable rabbitmq_web_mqtt

# .启动RabbitMQ的服务
	systemctl start rabbitmq-server
	systemctl restart rabbitmq-server
	systemctl stop rabbitmq-server
#查看服务状态(见下图:)
	systemctl status rabbitmq-server

关闭三台机器的防火墙

systemctl disable firewalld
systemctl stop firewalld.service

同步三台机器的erlang的cookie

#在机器mq1上执行
scp /var/lib/rabbitmq/.erlang.cookie root@mq2:/var/lib/rabbitmq/
	scp /var/lib/rabbitmq/.erlang.cookie root@mq3:/var/lib/rabbitmq/
#查看cookie是否一致:
	node1: cat /var/lib/rabbitmq/.erlang.cookie 
	node2: cat /var/lib/rabbitmq/.erlang.cookie 
	node3: cat /var/lib/rabbitmq/.erlang.cookie
# 4.后台启动rabbitmq所有节点执行如下命令,启动成功访问管理界面:
	systemctl stop rabbitmq-server
	rabbitmq-server -detached 

# 5.在node2和node3执行加入集群命令:
	1.关闭       rabbitmqctl stop_app
	2.加入集群    rabbitmqctl join_cluster rabbit@mq1
	3.启动服务    rabbitmqctl start_app

# 6.查看集群状态,任意节点执行:
	rabbitmqctl cluster_status

# 7.如果出现如下显示,集群搭建成功:
	Cluster status of node rabbit@mq3 ...
	[{nodes,[{disc,[rabbit@mq1,rabbit@mq2,rabbit@mq3]}]},
	{running_nodes,[rabbit@mq1,rabbit@mq2,rabbit@mq3]},
	{cluster_name,<<"rabbit@mq1">>},
	{partitions,[]},
	{alarms,[{rabbit@mq1,[]},{rabbit@mq2,[]},{rabbit@mq3,[]}]}]
#然后在浏览器输入192.168.86.157:15672
192.168.86.157:15672
#登录的账户和密码均为guest 该账户拥有最高的管理员权限
guest
#但是这个时候的集群 还只是主从+集群的方式工作 如果主节点宕机,附属节点无法继续完成主节点的工作,两个附属节点只做了主节点的数据的备份,但是没有对主节点的队列进行备份,所以如果主节点宕机,附属节点还是会有队列的信息,但是并没有保存队列的数据信息。无法自动的进行代替主节点。

#下面将会进行镜像集群的搭建

# 0.策略说明
	rabbitmqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern>  <definition>
	-p Vhost: 可选参数,针对指定vhost下的queue进行设置
	Name:     policy的名称
	Pattern: queue的匹配模式(正则表达式)
	Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
           		ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
                        all:表示在集群中所有的节点上进行镜像
                        exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
                        nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
            	 ha-params:ha-mode模式需要用到的参数
                ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
                priority:可选参数,policy的优先级
                
                 
# 1.查看当前策略
	rabbitmqctl list_policies

# 2.添加策略
	rabbitmqctl set_policy ha-all '^ys' '{"ha-mode":"all","ha-sync-mode":"automatic"}' 
	说明:策略正则表达式为 “^” 表示所有匹配所有队列名称  ^hello:匹配hello开头队列

# 3.删除策略
	rabbitmqctl clear_policy ha-all

#安装配置Haproxy高可用负载均衡
#解压压缩包


#挂载机器的yum源
mkdir /mnt/cdrom
#挂载命令
mount /dev/sr0 /mnt/cdrom/
#编辑yum配置文件
cat >> /etc/yum.repos.d/CentOS-Media.repo <<EOF
#添加如下内容
[local]
name=local
baseurl=file:///mnt/cdrom
gpgcheck=0
enable=1
EOF
#将默认的yum源配置文件改名  使其失效
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back

yum makecache


#通过yum安装 haproxy
yum -y install haproxy
#查看详细信息
rpm -qi haproxy
#修改配置文件
vim /etc/haproxy/haproxy.cfg

### haproxy 监控页面地址是:http://IP:9188/hastatus
listen admin_stats
    bind *:9100   #监听的地址和端口,默认端口1080
    mode http      #模式
    option httplog
    stats refresh 5s    #页面自动刷新间隔,每隔5s刷新
    stats uri /hastatus  #访问路径,在域名后面添加/stats可以查看haproxy监控状态,默认为/haproxy?stats
    stats realm welcome login\ Haproxy  #提示信息,空格之前加\
    stats auth guest:guest  #登陆用户名和密码
    stats hide-version   #隐藏软件版本号
    stats admin if TRUE   #当通过认证才可管理
 
### rabbitmq 集群配置,转发到
listen rabbitmqcluster
    bind *:1884
    option tcplog
    mode http
    balance roundrobin
    server mq1 192.168.86.157:1884 check inter 2000 rise 2 fall 3 weight 1  #节点一
    server mq2 192.168.86.158:1884 check inter 2000 rise 2 fall 3 weight 1  #节点二
    server mq3 192.168.86.159:1884 check inter 2000 rise 2 fall 3 weight 1
#指定配置文件
haproxy -f /etc/haproxy/haproxy.cfg -c

#检查配置文件格式
haproxy -c -f /etc/haproxy/haproxy.cfg
#启动haproxy
haproxy -f /etc/haproxy/haproxy.cfg
#查看状态
service haproxy status

#添加开机自启动
cat <<eof>>/etc/rc.d/rc.local
haproxy -f /etc/haproxy/haproxy.cfg  
eof

vim /etc/sysctl.conf        #修改内核参数
net.ipv4.ip_nonlocal_bind = 1  #没有就新增此条记录

#访问192.168.86.157:9100/hastatus
#账户 guest 密码 guest

上一篇:AT2164-[AGC006C]Rabbit Exercise【差分,倍增,数学期望】


下一篇:.RabbitMQ 在.Net中如何使用1