Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >RabbitMQ + Haproxy 实现高可用镜像集群

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

作者头像
Reset
发布于 2022-12-27 08:17:26
发布于 2022-12-27 08:17:26
51900
代码可运行
举报
文章被收录于专栏:ResetReset
运行总次数:0
代码可运行

1.准备阶段

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
43.138.xxx.xxx node1
82.157.xxx.xxx node2
39.105.xxx.xxx node3

结构图

2.安装阶段

修改节点名:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 vim /etc/hostname	修改主机名称

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
在三台服务器分别执行当前命令
vim /etc/hosts
注意:如果是三台外网服务器则不能按照该写法
43.138.xxx.xxx node1
82.157.xxx.xxx node2
39.105.xxx.xxx node3

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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用户需要输入对应密码)

在主节点中执行如下命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)执行组成集群命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 rabbitmq-server -detached

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1、停止MQ服务
rabbitmqctl stop_app

1、重置MQ
rabbitmqctl reset

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

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

查看集群状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rabbitmqctl cluster_status

集群移除从节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1、停止从节点服务并重置
	rabbitmqctl stop_app
	rabbitmqctl reset


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

搭建镜像队列

创建镜像配置

参数信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

配置文件详情

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 访问

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RabbitMQ + Haproxy 实现高可用镜像集群
1.准备阶段准备三台服务器案例使用三台腾讯云服务器43.138.xxx.xxx node182.157.xxx.xxx node239.105.xxx.xxx node3 结构图图片2.安装阶段修改节点名:查看三台服务器的主机名称,并分别修改主机名为 node1/2/3vim /etc/hostname修改主机名称修改HOST:注意:使用外网服务器时需要注意IP地址的填写在三台服务器分别执行当前命令vim /etc/hosts注意:如果是三台外网服务器则不能按照该写法43.138.xxx.xxx node1
Reset
2022/12/19
7480
rabbitmq高可用集群搭建_mongodb高可用架构
​ 当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目的。RabbitMQ 集群是一个或多个节点的逻辑分组,集群中的每个节点都是对等的,每个节点共享所有的用户,虚拟主机,队列,交换器,绑定关系,运行时参数和其他分布式状态等信息。一个高可用,负载均衡的 RabbitMQ 集群架构应类似下图:
全栈程序员站长
2022/09/30
2.5K0
rabbitmq高可用集群搭建_mongodb高可用架构
RabbitMQ---集群,Haproxy+Keepalive 实现高可用负载均衡,Federation Exchange和Federation Queue
最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?
大忽悠爱学习
2021/12/07
8210
RabbitMQ---集群,Haproxy+Keepalive 实现高可用负载均衡,Federation Exchange和Federation Queue
centos8安装rabbitmq_rabbitmq镜像集群
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/01
3420
centos8安装rabbitmq_rabbitmq镜像集群
RabbitMQ高可用集群配置
1、安装RabbitMQ 1)下载和安装erlang 下载erlang wget http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el6.x86_64.rpm 安装erlang,root用户使用rpm安装 rpm -ihv erlang-18.1-1.el6.x86_64.rpm 2)下载和安装RabbitMQ 下载RabbitMQ wget https://github.com/rabbitmq/rabbitmq-server/releases/
用户1225216
2018/03/05
8740
RabbitMQ高可用集群配置
RabbitMQ集群和高可用方案
Cluster多机多节点部署:多机多节点是指在每台机器中部署一个RabbitMQ服务节点,进而由多个机器组成一个RabbitMQ集群
CodingDiray
2020/05/21
10.7K1
08 . Prometheus+Grafana监控haproxy+rabbitmq
https://www.cnblogs.com/you-men/p/12839535.html
iginkgo18
2020/09/27
1.1K0
08 . Prometheus+Grafana监控haproxy+rabbitmq
消息中间件—RabbitMQ(集群原理与搭建篇)
摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理 一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能力等问题的考虑,在生产环境上一般都会考虑使用RabbitMQ的集群方案。 对于RabbitMQ这么成熟的消息队列产品来说,搭建它并不难并且也有不少童鞋写过如何搭建RabbitMQ消息队列集群的博文,但可能仍然有童鞋并不了解其背后的原理,这会导致其遇到性能问题时无法对集群进行进一步的调优。本篇主要介绍RabbitMQ集群方案的原理,如何搭建具备负载均衡能力的中小规模RabbitMQ集群,并最后给出生产环境构建一个能够具备高可用、高可靠和高吞吐量的中小规模RabbitMQ集群设计方案。
用户2991389
2018/09/05
1.5K0
消息中间件—RabbitMQ(集群原理与搭建篇)
搭建高可用/高可靠的RabbitMQ镜像队列集群架构
192.168.243.164、192.168.243.165及192.168.243.166这三台机器上需要事先安装好RabbitMQ,具体安装步骤参考如下文章:
端碗吹水
2020/12/01
1.6K0
搭建高可用/高可靠的RabbitMQ镜像队列集群架构
通过流水线部署2节点RabbitMQ镜像集群(Ubuntu)
RabbitMQ最基本的集群的通过 rabbitmqctl join_cluster 命令组建的,但是这种集群只会同步配置信息,不会同步队列里面的消息。要实现同步队列消息,需要在这个基础上,再设置 ha-mode 的 Policy,就可以了。
airxiechao
2022/04/27
2910
RabbitMQ集群
今天我们来学习如何避免单点的MQ故障而导致的不可用问题,这个就要靠MQ的集群去实现了。
叫我阿杰好了
2022/11/07
6910
RabbitMQ集群
Rabbitmq实践与原理
RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用。
mikelLam
2022/10/31
7150
Rabbitmq实践与原理
027. RabbitMQ 集群和高可用方案
1. 常用命令 ---- rabbitmqctl status 查看节点状态。 rabbitmqctl stop [pid_file] 停止运行 RabbitMQ 的 Erlang 虚拟机和 RabbitMQ 服务应用。 如果指定了 pid_file,还需要等待指定进程的结束。pid_file 是通过调用 rabbitmq-server 命令启动 RabbitMQ 服务时创建的,默认情况下存放于 Mnesia 目录中。 如果使用 rabbitmq-server -detach 这个带有 -detach 后缀
山海散人
2021/03/03
8170
027. RabbitMQ 集群和高可用方案
DockerCompose搭建Rabbitmq集群
RabbitMQ底层依赖于Erlang,而Erlang虚拟机就是一个面向分布式的语言,默认就支持集群模式。集群模式中的每个RabbitMQ 节点使用 cookie 来确定它们是否被允许相互通信。
杨不易呀
2023/11/03
1.3K0
DockerCompose搭建Rabbitmq集群
RibbitMQ学习笔记之RabbitMQ 集群
最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitMQ 服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞吐量呢?购买昂贵的服务器来增强单机 RabbitMQ 务的性能显得捉襟见肘,搭建一个 RabbitMQ 集群才是解决实际问题的关键.
默 语
2024/11/20
1050
RibbitMQ学习笔记之RabbitMQ 集群
RabbitMQ:第四章:RabbitMQ集群搭建
RabbitMQ:第二章:Spring整合RabbitMQ(简单模式,广播模式,路由模式,通配符模式,消息可靠性投递,防止消息丢失,TTL,死信队列,延迟队列,消息积压,消息幂等性)
Java廖志伟
2022/03/07
5300
RabbitMQ:第四章:RabbitMQ集群搭建
RabbitMQ之集群搭建
  最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的 要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitMQ 服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞 吐量呢?购买昂贵的服务器来增强单机 RabbitMQ 务的性能显得捉襟见肘,搭建一个 RabbitMQ 集群才是 解决实际问题的关键.
别团等shy哥发育
2023/02/25
4600
RabbitMQ之集群搭建
RabbitMQ集群搭建过程-3
搭建集群后,主节点和从节点的交换机和消息队列是镜像的。如果此时主节点宕机了,从节点还能继续消费,Queues中的Node会替换成子节点,当主节点重启完成后,会加入到对应的Node子节点中,这样就形成了高可用架构。
Remember_Ray
2021/04/05
9620
RabbitMQ学习笔记(五)——RabbitMQ集群搭建&入门
◆ 般的基础架构中,单机扩容(Scale-Up)很难实现 ◆ 需要扩容时尽量使用扩展数量实现(Scale-Out) ◆ RabbitMQ集群可以方便地通过Scale-Out扩展规模
不愿意做鱼的小鲸鱼
2022/09/26
9540
RabbitMQ学习笔记(五)——RabbitMQ集群搭建&入门
CentOs7.3 搭建 RabbitMQ 3.6 Cluster 集群服务
CentOs7.3 搭建 RabbitMQ 3.6 Cluster 集群服务 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 AMQP,即Advanced message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息
程序员鹏磊
2018/02/09
1.3K0
CentOs7.3 搭建 RabbitMQ 3.6 Cluster 集群服务
相关推荐
RabbitMQ + Haproxy 实现高可用镜像集群
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验