前言
在各个节点安装单点emqx服务以后,就可以开始搭建集群环境;本集群环境使用的服务器节点为10.8.15.62、10.8.15.63、10.8.15.64
我们这里介绍的是 静态节点列表自动集群,手动集群管理的方式可以参考()
简介
EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。
MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。
EMQ X 设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由:
1.稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。
2.分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。
3.消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
4.完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持。
5.在模块面板中开启emqx_mod_delayed后,可以支持延迟消息发布
集群搭建
1.在各节点上正确安装emqx
2.修改配置文件(主要修改./etc/emqx.conf)
emqx.conf配置文件需要修改的内容如下:
================================
#集群发现模式,静态发现,启动后不用输加入集群命令
cluster.discovery = static
#集群列表,配合上面static发现策略使用
cluster.static.seeds = [email protected],[email protected],[email protected]
#节点名(3个节点此处分别为[email protected]、[email protected]、[email protected])
node.name = [email protected]
#关闭emq的匿名认证,使用用户名密码验证(如果需要密码验证就这样配置)
allow_anonymous = false
#集群通信端口段
node.dist_listen_min = 6369
node.dist_listen_max = 7369
================================
注意:节点命名格式为Name@Host, Host 必须是 IP 地址或 FQDN (主机名、域名)
3.配置连接验证的密码信息(根据实际采用的加密连接方式来修改各自的配置文件即可,我这里使用用户名密码验证的方式)
编辑配置文件(用户名密码连接的配置文件为 etc/plugins/emqx_auth_username.conf)
================================
auth.user.1.username = admin
auth.user.1.password = public
auth.user.password_hash = sha256
================================
4.优化参数
sysctl -w fs.file-max=
sysctl -w fs.nr_open=
sysctl -w net.core.somaxconn=65500
ulimit -n
说明:
1.net.core.somaxconn参数的值不能超过USHRT_MAX,即不能超过65535
2.sysctl命令用于运行时配置内核参数,这些参数位于/proc/sys目录下。
-w 是临时改变某个指定参数的值
3.使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数(默认是1024),这里要临时设置加大此参数。
5.分别启动各节点的emqx服务
./bin/emqx start
6.查询集群状态
./bin/emqx_ctl cluster status
7.登录查看集群情况
:18083 admin/public
8.登录控制台,打开插件里面的密码验证功能
插件->emqx_auth_username->开启
其它可能的事项
可能会碰到问题,检查防火墙是否开启emq集群通信的端口(如果是阿里云,在安全组里配):
#emqx集群需要端口
如果集群节点间存在防火墙,防火墙需要开启 4369 端口和一个 TCP 端口段。
4369 由 epmd 端口映射服务使用,
TCP 端口段用于节点间建立连接与通信。(6369/7369)