前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ + Haproxy 实现高可用镜像集群

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

原创
作者头像
Reset
发布2022-12-19 22:53:18
6510
发布2022-12-19 22:53:18
举报
文章被收录于专栏:Reset

1.准备阶段

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

代码语言:shell
复制
43.138.xxx.xxx node1
82.157.xxx.xxx node2
39.105.xxx.xxx node3

结构图

image-1660240572846
image-1660240572846

2.安装阶段

修改节点名:

查看三台服务器的主机名称,并分别修改主机名为 node1/2/3vim /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

image-1660241049778
image-1660241049778

把主节点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(只启动应用服务)

查看集群状态

代码语言:txt
复制
rabbitmqctl cluster_status
image-1660241681608
image-1660241681608

集群移除从节点

代码语言:txt
复制
1、停止从节点服务并重置
	rabbitmqctl stop_app
	rabbitmqctl reset


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

搭建镜像队列

创建镜像配置

image-1660242213071
image-1660242213071

参数信息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、manuallyPriority: 可选参数, policy的优先级

整合HaProxy

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

安装HaProxy

代码语言:txt
复制
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

配置文件详情

代码语言:txt
复制
#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

代码语言:txt
复制
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 访问

image-1660242716078
image-1660242716078

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.准备阶段
  • 2.安装阶段
    • 修改节点名:
      • 把主节点Node1的Cookie复制给其他从节点(Node2、 Node3)
        • 把从节点(Node2、Node3)加入集群中
          • 查看集群状态
            • 集群移除从节点
            • 搭建镜像队列
              • 创建镜像配置
              • 整合HaProxy
                • 安装HaProxy
                  • 配置文件详情
                    • 启动HaProxy
                      • Java 访问
                      相关产品与服务
                      负载均衡
                      负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档