zl程序教程

您现在的位置是:首页 >  Java

当前栏目

RabbitMQ + Haproxy 实现高可用镜像集群

2023-02-18 16:43:34 时间

1.准备阶段

准备三台服务器 案例使用三台腾讯云服务器

43.138.xxx.xxx node1
82.157.xxx.xxx node2
39.105.xxx.xxx node3

结构图

2.安装阶段

修改节点名:

查看三台服务器的主机名称,并分别修改主机名为 node1/2/3

 vim /etc/hostname	修改主机名称

修改HOST: 注意:使用外网服务器时需要注意IP地址的填写

在三台服务器分别执行当前命令
vim /etc/hosts
注意:如果是三台外网服务器则不能按照该写法
43.138.xxx.xxx node1
82.157.xxx.xxx node2
39.105.xxx.xxx node3

例如 在node1节点中的中的hosts文件应该写为

Node1的内网IP node1
82.157.xxx.xxx node2
39.105.xxx.xxx node3
查看内网IP : ifconfig -a 

把主节点Node1的Cookie复制给其他从节点(Node2、 Node3)

RabbitMQ集群需要在每个从节点上使用与主节点一样的ErLang Cookie,因此需要使用远程操作命令,将主节点的Cookies复制给从节点(从节点服务器有配置root用户需要输入对应密码)

在主节点中执行如下命令

scp /var/lib/rabbitmq/.erlang.cookie  root@node2:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie  root@node3:/var/lib/rabbitmq/.erlang.cookie

组成集群服务

为集群所有主机(node1/2/3)执行组成集群命令

 rabbitmq-server -detached

把从节点(Node2、Node3)加入集群中

分别在Node2/3中执行如下命令

1、停止MQ服务
rabbitmqctl stop_app

1、重置MQ
rabbitmqctl reset

3、加入主节点
rabbitmqctl join_cluster rabbit@node1									

4、重启服务
rabbitmqctl start_app(只启动应用服务)

查看集群状态

rabbitmqctl cluster_status

集群移除从节点

1、停止从节点服务并重置
	rabbitmqctl stop_app
	rabbitmqctl reset


2、主节点上移除从节点
	rabbitmqctl forget_cluster_node rabbit@主机名称
  例如:rabbitmqctl forget_cluster_node rabbit@node2 就是移除从节点node2

搭建镜像队列

创建镜像配置

参数信息

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、manually

Priority:  可选参数, policy的优先级

整合HaProxy

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

安装HaProxy

1、安装依赖
yum install -y gcc wget


2、下载HaProxy
wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.5.tar.gz
  
  
3、解压HaProxy
tar -zxvf haproxy-1.6.5.tar.gz -C /usr/local
  
  
4、安装HaProxy
cd /usr/local/haproxy-1.6.5
make TARGET=linux31 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
mkdir /etc/haproxy
  

5、赋权
groupadd -r -g 149 haproxy
 useradd -g haproxy -r -s /sbin/nologin -u 149 haproxy
  
  
6、创建配置文件
touch /etc/haproxy/haproxy.cfg

配置文件详情

#logging options
global
	log 127.0.0.1 local0 info
	maxconn 5120
	chroot /usr/local/haproxy
	uid 99
	gid 99
	daemon
	quiet
	nbproc 20
	pidfile /var/run/haproxy.pid

defaults
	log global
	#使用4层代理模式,”mode http”为7层代理模式
	mode tcp
	#if you set mode to tcp,then you nust change tcplog into httplog
	option tcplog
	option dontlognull
	retries 3
	option redispatch
	maxconn 2000
	contimeout 5s
     ##客户端空闲超时时间为 60秒 则HA 发起重连机制
     clitimeout 60s
     ##服务器端链接超时时间为 15秒 则HA 发起重连机制
     srvtimeout 15s	
#front-end IP for consumers and producters

listen rabbitmq_cluster
	# 代理的端口号
	bind 0.0.0.0:5678
	#配置TCP模式
	mode tcp
	#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
	#简单的轮询
	balance roundrobin
	#rabbitmq集群节点配置 #inter 每隔五秒对mq集群做健康检查, 2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制
        server node1 43.138.xxx.xxx:5672 check inter 5000 rise 2 fall 2
        server node2 82.157.xxx.xxx:5672 check inter 5000 rise 2 fall 2
        server node3 43.142.xxx.xxx:5672 check inter 5000 rise 2 fall 2
#配置haproxy web监控,查看统计信息,152机器bind的就是192.168.226.152:8100
listen stats
	bind 0.0.0.0:8100
	mode http
	option httplog
	stats enable
	#设置haproxy监控地址为http://localhost:8100/rabbitmq-state
	stats uri /rabbitmq-state
	stats refresh 5s

启动HaProxy

1、启动HaProxy
  /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
  
2、查看HaProxy状态
ps -ef | grep haproxy
  
  
3、访问Web控制台
http://43.138.xxx.xxx:8100/rabbitmq-state

Java 访问