MQTT+Nginx+Keepalive实现 高可用+负载均衡的集群效果

本文探讨了多种ActiveMQ集群部署方式,包括主备模式、Zookeeper+Keepalive等,最终推荐使用Nginx结合Keepalive实现MQTT的高可用和负载均衡。通过配置Nginx的stream模块进行TCP流量转发,解决了不支持failover的客户端连接问题,同时介绍了如何通过Keepalive设置虚拟IP以提高服务的可用性。
摘要由CSDN通过智能技术生成

Mqtt是基于Tcp的发布/订阅模型的轻量级传输协议,由于Apache Active MQ 可以作为消息传输的中间件,就决定使用AMQ作为broker,但由于业务的需求,需要同时与大量的客户端进行同时通信,就不得不使用分布式的组织架构,采用集群的方式加大服务的承载能立,提高可用性。

经过研究发现AMQ的部署方式由多种,但每一种方式都各有利弊。

1.    主备模式:
一台服务器做master,当master 挂掉时slave住自动接管master的任务,对外提供服务。Master-slave 之间是数据互通的,但却不能做到负载均衡,对外提供服务的只有mater,虽然做到了高可用,但不能做到负载均衡,并且并不能提高节点的承载能力。
2.    使用zookeeper+keepalive实现伪集群
Zookeeper是一个第三方的调度软件,2N+1个节点下才能对外提供正常的服务。在这种部署模式下,多台broker组成一个集群,数据在三个节点之间进行备份,当正在提供服务的broker挂掉时,zookeeper会自动的推选出一个master,等之前的master恢复时会自动被zookeeper接管,接受调度。虽然做到了高可用,但是却不能提供负载均衡功能。
3.    使用文件目录共享或数据库共享的模式进行的集群
虽然实现了集群,但是也只是高可用,也不能实现负载。尤其时使用jdbc时,其性能受制于数据库的性能,并且数据库也要做高可用主备,不推荐使用。
4.    使用静态集群方式
在配置时可以很好的完成负载均衡,但是数据只是存储在一台broker上,当这台broker挂掉时,其消息就不会被消费

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值