在强大的单机也比不上集群,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消息服务(分布式集群)相关推荐

  1. was这么做的负载均衡_关于F5负载均衡器+WAS+Oracle 10g集群的方案的若干问题

    本人的项目出现了并发访问量增大.数据库压力增大等问题造成的效率低下的问题,现在初步想将原来的单WAS + 单oracle 的架构改为: 1.在WAS前增加两台F5负载均衡器(一台是冗余的). 2.增加 ...

  2. kafka 如何做到1秒发布百万级条消息?

    kafka 如何做到1秒发布百万级条消息 kafak 提供的生产端的API发布消息到一个 topic 或者多个 topic 的一个分区(保证消息的顺序性)或多个分区(并行处理,不能保证消息的顺序性). ...

  3. haproxy keepalived_企业实战KeepAlived+Redis+Haproxy实现主从热备、负载均衡、秒级切换...

    最近公司生产环境需要做一个Redis+Keepalived+Haproxy的集群架构,分别用六个端口,实现多路复用,最终实现主从热备.负载均衡.秒级切换. 一,Redis6.06集群官网部署,这里不再 ...

  4. Worktile中百万级实时消息推送服务的实现

    Worktile中百万级实时消息推送服务的实现 出自:http://blog.jobbole.com/81125/ 转载于:https://www.cnblogs.com/ribavnu/p/4531 ...

  5. Worktile 中百万级实时消息推送服务的实现

    Worktile 中百万级实时消息推送服务的实现 转自:http://www.360doc.com/content/15/0907/19/1073512_497529854.shtml 这是一个创建于 ...

  6. kubernetes V1.6.4 分布式集群的部署及service负载均衡

    1,kubernetes的基本概念和术语 1.1 kubernetes与微服务的简介 最近几年,微服务一词经常被IT的技术界人士提及,简单介绍的话,微服务架构就是将原本单独部署运行的大型软件拆分为一个 ...

  7. Linux下Apache与Tomcat的完全分布式集群配置(负载均衡)

    最近公司要给客户提供一套集群方案,项目组采用了Apache和Tomcat的集群配置,用于实现负载均衡的实现. 由于以前没有接触过Apache,因此有些手生,另外在网上搜寻了很多有关这方面的集群文章,但 ...

  8. 读书笔记第四讲:《百万级并发商品服务架构解密》丁鸣亮

    本文是读书笔记第四讲:网易考拉海购商品中心2017年商品中心架构,百万级并发商品服务 架构解密,作者:丁鸣亮 文章目录 1.前言:电商平台的商品服务 2.考拉:商品服务的"黑历史" ...

  9. 亿级Web系统搭建:单机到分布式集群

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

最新文章

  1. 450刀的eGPU vs 谷歌Colab,谁更划算?
  2. 动手推导Self-Attention
  3. Windows 2003 AD升级到 Windows 2008 AD
  4. 无线传输系统功率LCC功率补偿系统设计
  5. 【webrtc】webrtc的rtp重传代码分析
  6. pandas内置绘图_使用Pandas内置功能探索数据集
  7. 利用platform库获取浏览器和操作系统版本
  8. c语言编写modbus程序,C语言编写modbus协议
  9. 信息学奥赛C++语言:哥德巴赫猜想
  10. 理解NLP中的卷积神经网络(CNN)
  11. 如何用git将本地文件放到github上
  12. 高通模式9008模式linux,高通芯片如何进入9008模式深度救砖
  13. 山东济南ISO9001认证|ISO14001认证|ISO45001认证|ISO三体系认证的流程
  14. 高等数学学习笔记——第九十讲——斯托克斯公式
  15. 网站metro风格正式发布
  16. 好看的女孩男生拍照姿势大全
  17. Mac 重启服务→services
  18. 服务器上验证码不显示
  19. 利用XGBoost实现短期电力负荷预测
  20. python多进程编程_【玩树莓】编程篇(八)Python多线程、多进程编程

热门文章

  1. 什么是维度诅咒?如何评估降维算法在当前任务数据集上的效果?
  2. Python代码发现链表中的环并输出环中的第一个元素
  3. 随机森林及重要参数解析
  4. mac如何导入python第三方库_mac下python安装第三方库
  5. 墨刀未能成功读取服务器数据,墨刀的使用
  6. 3dsmax 让物体变透明
  7. python 下载大文件
  8. pyinstaller打包教程及错误RuntimeError: Unable to open ./shape_predictor_68_face_landmarks.dat
  9. 第一次调研快速入门查找期刊及分级?
  10. 人脸检测对齐--Joint Cascade Face Detection and Alignment