mqtt 负载均衡_EMQ百万级MQTT消息服务(分布式集群)
在强大的单机也比不上集群,EMQ的集群模式很粗暴,只需要把EMQ服务关联在一起然后负载均衡就可以达到集群的效果,这样就算面对1000CK问题也迎刃而解
附上:
喵了个咪的博客:w-blog.cnEMQ官方地址:http://emqtt.com/EMQ中文文档:http://emqtt.com/docs/v2/guide.html
1.集群方式接受
Erlang/OTP 最初是爱立信为开发电信设备系统设计的编程语言平台,电信设备(路由器、接入网关、…)典型设计是通过背板连接主控板卡与多块业务板卡的分布式系统。Erlang/OTP 语言平台的分布式程序,由分布互联的 Erlang 运行系统组成,每个 Erlang 运行系统被称为节点(Node),节点(Node) 间通过 TCP 互联,消息传递的方式通信:
--------- ---------
| Node1 | --------| Node2 |
--------- ---------| / || / || / || / |
--------- ---------
| Node3 | --------| Node4 |
--------- ---------
EMQ 消息服务器集群基于 Erlang/OTP 分布式设计,集群原理可简述为下述两条规则:
- MQTT 客户端订阅主题时,所在节点订阅成功后广播通知其他节点:某个主题(Topic)被本节点订阅。
- MQTT 客户端发布消息时,所在节点会根据消息主题(Topic),检索订阅并路由消息到相关节点。
EMQ 消息服务器同一集群的所有节点,都会复制一份主题(Topic) -> 节点(Node)映射的路由表,例如:
topic1 -> node1, node2
topic2 -> node3
topic3 -> node2, node4
EMQ集群方式分别有以下方式:
- manual 手工命令创建集群
- static 静态节点列表自动集群
- mcast UDP 组播方式自动集群
- dns DNS A 记录自动集群
- etcd 通过 etcd 自动集群
- k8s Kubernetes 服务自动集群
为了方便我们这里使用static方式关联节点
2.集群搭建
这里已经基于Centos7.4搭建并且调优好了两台EMQ,内网IP分别是192.168.2.111和192.168.2.112
首先需要修改Node名称
vim /usr/local/emqttd/etc/emq.confnode.name = emq@192.168.2.111> emqttd_ctl status
Node 'emq@192.168.2.111' is started
emqttd 2.3.5 is running
修改配置文件配置使用静态方式链接节点(所有节点都需要修改)
> vim /usr/local/emqttd/etc/emq.conf cluster.discovery = static##--------------------------------------------------------------------
## Cluster with static node list
cluster.static.seeds = emq@192.168.2.111,emq@192.168.2.112
为了安全Erlang 节点间通过一个相同的 cookie 进行互连认证。Erlang 节点 Cookie 设置:
# 在node1上执行
> emqttd stop
> emqttd start
> scp $HOME/.erlang.cookie root@192.168.2.112:$HOME/.erlang.cookie
通过命令查看集群状态
> emqttd_ctl cluster statusCluster status: [{running_nodes,['emq@192.168.2.111','emq@192.168.2.112']}]
通过界面可以看到如下显示
3 总结
有了集群就解决了大规模部署的问题,但是在实际使用中还有很多需要关注的点,在下一节将介绍用户体系和ACL鉴权
注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!
mqtt 负载均衡_EMQ百万级MQTT消息服务(分布式集群)相关推荐
- was这么做的负载均衡_关于F5负载均衡器+WAS+Oracle 10g集群的方案的若干问题
本人的项目出现了并发访问量增大.数据库压力增大等问题造成的效率低下的问题,现在初步想将原来的单WAS + 单oracle 的架构改为: 1.在WAS前增加两台F5负载均衡器(一台是冗余的). 2.增加 ...
- kafka 如何做到1秒发布百万级条消息?
kafka 如何做到1秒发布百万级条消息 kafak 提供的生产端的API发布消息到一个 topic 或者多个 topic 的一个分区(保证消息的顺序性)或多个分区(并行处理,不能保证消息的顺序性). ...
- haproxy keepalived_企业实战KeepAlived+Redis+Haproxy实现主从热备、负载均衡、秒级切换...
最近公司生产环境需要做一个Redis+Keepalived+Haproxy的集群架构,分别用六个端口,实现多路复用,最终实现主从热备.负载均衡.秒级切换. 一,Redis6.06集群官网部署,这里不再 ...
- Worktile中百万级实时消息推送服务的实现
Worktile中百万级实时消息推送服务的实现 出自:http://blog.jobbole.com/81125/ 转载于:https://www.cnblogs.com/ribavnu/p/4531 ...
- Worktile 中百万级实时消息推送服务的实现
Worktile 中百万级实时消息推送服务的实现 转自:http://www.360doc.com/content/15/0907/19/1073512_497529854.shtml 这是一个创建于 ...
- kubernetes V1.6.4 分布式集群的部署及service负载均衡
1,kubernetes的基本概念和术语 1.1 kubernetes与微服务的简介 最近几年,微服务一词经常被IT的技术界人士提及,简单介绍的话,微服务架构就是将原本单独部署运行的大型软件拆分为一个 ...
- Linux下Apache与Tomcat的完全分布式集群配置(负载均衡)
最近公司要给客户提供一套集群方案,项目组采用了Apache和Tomcat的集群配置,用于实现负载均衡的实现. 由于以前没有接触过Apache,因此有些手生,另外在网上搜寻了很多有关这方面的集群文章,但 ...
- 读书笔记第四讲:《百万级并发商品服务架构解密》丁鸣亮
本文是读书笔记第四讲:网易考拉海购商品中心2017年商品中心架构,百万级并发商品服务 架构解密,作者:丁鸣亮 文章目录 1.前言:电商平台的商品服务 2.考拉:商品服务的"黑历史" ...
- 亿级Web系统搭建:单机到分布式集群
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
最新文章
- 450刀的eGPU vs 谷歌Colab,谁更划算?
- 动手推导Self-Attention
- Windows 2003 AD升级到 Windows 2008 AD
- 无线传输系统功率LCC功率补偿系统设计
- 【webrtc】webrtc的rtp重传代码分析
- pandas内置绘图_使用Pandas内置功能探索数据集
- 利用platform库获取浏览器和操作系统版本
- c语言编写modbus程序,C语言编写modbus协议
- 信息学奥赛C++语言:哥德巴赫猜想
- 理解NLP中的卷积神经网络(CNN)
- 如何用git将本地文件放到github上
- 高通模式9008模式linux,高通芯片如何进入9008模式深度救砖
- 山东济南ISO9001认证|ISO14001认证|ISO45001认证|ISO三体系认证的流程
- 高等数学学习笔记——第九十讲——斯托克斯公式
- 网站metro风格正式发布
- 好看的女孩男生拍照姿势大全
- Mac 重启服务→services
- 服务器上验证码不显示
- 利用XGBoost实现短期电力负荷预测
- python多进程编程_【玩树莓】编程篇(八)Python多线程、多进程编程
热门文章
- 什么是维度诅咒?如何评估降维算法在当前任务数据集上的效果?
- Python代码发现链表中的环并输出环中的第一个元素
- 随机森林及重要参数解析
- mac如何导入python第三方库_mac下python安装第三方库
- 墨刀未能成功读取服务器数据,墨刀的使用
- 3dsmax 让物体变透明
- python 下载大文件
- pyinstaller打包教程及错误RuntimeError: Unable to open ./shape_predictor_68_face_landmarks.dat
- 第一次调研快速入门查找期刊及分级?
- 人脸检测对齐--Joint Cascade Face Detection and Alignment