在强大的单机也比不上集群,EMQ的集群模式很粗暴,只须要把EMQ服务关联在一块儿而后负载均衡就能够达到集群的效果,这样就算面对1000CK问题也迎刃而解html
附上:node
喵了个咪的博客:w-blog.cn EMQ官方地址:http://emqtt.com/ EMQ中文文档:http://emqtt.com/docs/v2/guide.html编程
Erlang/OTP 最初是爱立信为开发电信设备系统设计的编程语言平台,电信设备(路由器、接入网关、…)典型设计是经过背板链接主控板卡与多块业务板卡的分布式系统。 Erlang/OTP 语言平台的分布式程序,由分布互联的 Erlang 运行系统组成,每一个 Erlang 运行系统被称为节点(Node),节点(Node) 间经过 TCP 互联,消息传递的方式通讯:vim
--------- --------- | Node1 | --------| Node2 | --------- --------- | \ / | | \ / | | / \ | | / \ | --------- --------- | Node3 | --------| Node4 | --------- ---------
EMQ 消息服务器集群基于 Erlang/OTP 分布式设计,集群原理可简述为下述两条规则:安全
EMQ 消息服务器同一集群的全部节点,都会复制一份主题(Topic) -> 节点(Node)映射的路由表,例如:bash
topic1 -> node1, node2 topic2 -> node3 topic3 -> node2, node4
EMQ集群方式分别有如下方式:服务器
为了方便咱们这里使用static方式关联节点cookie
这里已经基于Centos7.4搭建而且调优好了两台EMQ,内网IP分别是192.168.2.111和192.168.2.112负载均衡
首先须要修改Node名称编程语言
vim /usr/local/emqttd/etc/emq.conf node.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 status Cluster status: [{running_nodes,['emq@192.168.2.111','emq@192.168.2.112']}]
经过界面能够看到以下显示
有了集群就解决了大规模部署的问题,可是在实际使用中还有不少须要关注的点,在下一节将介绍用户体系和ACL鉴权
注:笔者能力有限有说的不对的地方但愿你们可以指出,也但愿多多交流!