HAProxy+Keepalived(VIP)搭建Rabbitmq高可用镜像队列

目标

  • 搭建一款三节点的Rabbitmq服务集群,满足高可用的要求
  • 要求高可用,保活,镜像队列,负载均衡。

主要组件

  • RabbitMQ 用于存储转发消息及镜像队列,
  • HAProxy 用于负载均衡到达rabbitmq的流量,
  • Keepalived 用于保活HAProxy(也可以保活rabbitmq),并对外提供VIP用于访问。
  • 下载地址

架构模型

在这里插入图片描述

访问链路

在这里插入图片描述
图片选自:RabbitMQ负载均衡(3)——Keepalived+HAProxy实现高可用的负载均衡

  • 客户端通过VIP建立通信链路;通信链路通过Keeaplived的Master节点路由到对应的HAProxy之上;HAProxy通过负载均衡算法将负载分发到集群中的各个节点之上。
  • 正常情况下客户端的连接通过图中左侧部分进行负载分发。
  • 当Keepalived的Master节点挂掉或者HAProxy挂掉无法恢复,那么Backup提升为Master,客户端的连接通过图中右侧部分进行负载分发

选型原因

  • 为什么要搭建多节点的消息队列?
    • 单节点rabbitmq存在宕机风险,因此需要搭建三台互相备份
  • 如何做到消息镜像的?
    • 镜像其实是一种策略,首先是将三台rabbitmq设置为集群,然后开启镜像策略,使得消息传递到一个队列时,会自动拷贝到其他镜像的队列。
  • 如果某一台接受到的压力过大,如何做到负载均衡?
    • rabbitmq集群本身不具备负载均衡的功能,需要配合其他软件使用,比如HAProxy,同样的道理,为了防止出现宕机问题,需要在集群中配置多台HAProxy。
  • 如果HAProxy宕机了,另外一台如何感知?并切换流量请求?
    • HAProxy在宕机时,keepalived有保活脚本,大概意思就是发现keepalived发现HAProxy不存在,就会启动它,过三秒发现还是没启动,那就关闭它,关闭它的时候,会触发vip漂移到另外一台上。
    • HAProxy 之间需要能够自动进行故障转移,通常的解决方案就是 KeepAlived。KeepAlived也是两台,一主一从,对外提供vip,主机宕机,从机会接管vip(具体见文末的彩蛋2)。
  • 本案例中选取了两台HAProxy做负载均衡,负载方式是每台HAProxy都负载三台Rabbitmq,还是每台负载其中的两台?
    • 负载均衡三台。满足极端情况下的高可用。
  • 万一有一台Rabbitmq挂了,那么HAProxy是否还会向其发送消息导致消息丢失?
    • HAProxy的.cfg文件中定义的有健康检查机制,参数fall在指定多少次不成功的健康检查后,认为该服务宕掉了。
    • 配置文件中:server node3 hadoop003:5672 check inter 5000 rise 2 fall 3 weight 1,这里的rise 2 fall 3 就是用于判断死活的。
    • haproxy健康检查rabbitmq,keepalived的ha_check.sh脚本检测haproxy
  • 如果keepalived挂了,另一台keepalived如何work?
    • 这个问题我没有仔细研究,应该是两台keepalived互相有心跳保活,主机宕机,从机会立刻抢占vip.

简易搭建流程

  • 第一步:分别在不同虚拟机上安装RabbitMQ
  • 第二步:验证RabbitMQ安装成功
  • 第三步:搭建Rabbit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值