在服务之间会采用mq进行消息通信,而rabbitmq本身也如同consul一样,如果只有一个节点那么就可能出现宕机的问题,并且基于mq的特点我们是可以在多个服务之间使用同一个mq来相互通信,因此高可用的架构设计就必不可少
1、rabbitmq集群方案
主备
远程
镜像
多活
构建
2、构建rabbitmq镜像集群
Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群景象。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存 放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的权限。所以必须保证各节点cookie一致,不然节点之间就无法通信。
3、理解rabbitmq镜像集群通信过程
4、镜像集群模式特点
1、生产者向任一服务节点注册队列,该队列相关信息会同步到其他节点上
2、任一消费者向任一节点请求消费,可以直接获取到消费的消息,因为每个节点上都有相同的实际数据
3、任一节点宕机,不影响消息在其他节点上进行消费
5、haproxy实现rabbitmq负载均衡
采用haproxy来实现对rabbitmq的反向代理与负载均衡,当然实际上我们也可以利用nginx来处只是主流均会以haproxy来做
5.1、haproxy与ngnix对比
1)HAProxy是工作在网络7层之上
2)能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
3)支持url检测后端的服务器出问题的检测会有很好的帮助。
4)更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
5)单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
6)HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
6、keepalived实现对haproxy的监控
1)通过IP漂移,实现服务的高可用:服务器集群共享一个虚拟IP,同一时间只有一个服务器占有虚拟IP并对外提供服务,若该服务器不可用,则虚拟IP漂移至另一 台服务器并对外提供服务
2)对应用服务层的应用服务器集群进行状态监控:若应用服务器不可用,则keepalived将其从集群中摘除,若应用服务器恢复,则keepalived将其重新加入集群 中。
Keepalived的实现基于VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)
简单来说,Keepalived 主要提供两种功能:
依赖 IPVS 实现服务器的健康检查;文章来源:https://www.toymoban.com/news/detail-531983.html
实现 VRRPv2 协议来处理路由的故障切换。文章来源地址https://www.toymoban.com/news/detail-531983.html
到了这里,关于第六章 rabbitmq高可用集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!