官方文档:http://emqtt.com/docs/v2/getstarted.html#emq-2-0
下载地址:http://emqtt.com/downloads
EMQ X R3.0 消息服务器简介
EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。Erlang/OTP 是出色的软实时(Soft-Realtime)、低延时(Low-Latency)、分布式(Distributed) 的语言平台。MQTT 是轻量的(Lightweight)、发布订阅模式(PubSub) 的物联网消息协议。

EMQ X 项目设计目标是承载移动终端或物联网终端海量 MQTT 连接,并实现在海量物联网设备间快速低延时消息路由:

稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。
分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。
消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
完整物联网协议支持,MQTT、MQTT-SN、CoAP、WebSocket 或私有协议支持。

EMQ3.0安装:
源码安装:
mkdir /data/emq
unzip emqx-centos7-v3.0.1.zip
cd emqx

启动emqx

./bin/emqx start

检查运行状态

./bin/emqx_ctl status

停止emqx

./bin/emqx stop

放开防火墙访问端口

rpm安装:

安装依赖

yum -y install lksctp-tools

安装包

yum -y install emqttd-centos7-v2.3.11-1.el7.centos.x86_64.rpm

启动

systemctl start emqttd.service

EMQ X 消息服务默认允许匿名认证,启动后 MQTT 客户端可连接1883端口,启动运行日志输出在 log/ 目录。
EMQ X 消息服务器启动后,会默认加载 Dashboard 插件,启动 Web 管理控制台。用户可通过 Web 控制台,查看服务器运行状态、统计数据、客户端(Client)、会话(Session)、主题(Topic)、订阅(Subscription)、插件(Plugin)。
控制台地址: http://127.0.0.1:18083,默认用户: admin,密码:public

EMQ X R3.0 消息服务器默认设置,允许最大客户端连接是512,因为大部分操作系统 ‘ulimit -n’ 限制为1024

EMQ 单节点部署_第1张图片

简单优化:
Linux 操作系统参数

2M - 系统所有进程可打开的文件数量:

sysctl -w fs.file-max=2097152
sysctl -w fs.nr_open=2097152

1M - 系统允许当前进程打开的文件数量:

ulimit -n 1048576

TCP 协议栈参数

backlog - Socket 监听队列长度:

sysctl -w net.core.somaxconn=65536

Erlang 虚拟机参数
emqttd/etc/emq.conf:

Erlang Process Limit

node.process_limit = 2097152

Sets the maximum number of simultaneously existing ports for this system

node.max_ports = 1048576

EMQ X 最大允许连接数
emqx/etc/emqx.conf ‘listeners’段落:

Size of acceptor pool

listener.tcp.external.acceptors = 64

Maximum number of concurrent clients

listener.tcp.external.max_clients = 1000000

测试客户端设置
测试客户端在一个接口上,最多只能创建65000连接:
sysctl -w net.ipv4.ip_local_port_range="500 65535"

echo 1000000 > /proc/sys/fs/nr_open

EMQ服务端口:
![](https://s1.51cto.com/images/blog/201903/06/740034b2688520003e9fe87fbfdd0374.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
EMQ 2.0 占用的上述端口,可通过 etc/emq.conf 配置文件的 ‘listener’ 段落设置:

TCP Listener: 1883, 127.0.0.1:1883, ::1:1883

listener.tcp.external = 0.0.0.0:1883

SSL Listener: 8883, 127.0.0.1:8883, ::1:8883

listener.ssl.external = 8883

External MQTT/WebSocket Listener

listener.ws.external = 8083

HTTP Management API Listener

listener.api.mgmt = 127.0.0.1:8080
18083端口是 Web 管理控制占用,该端口由 emq_dashboard 插件启用。
控制台 URL: http:://localhost:18083/ ,默认登录用户名: admin, 密码: public。
EMQ 消息服务器提供了状态监控 URL
http://localhost:8080/status

注解
Erlang 的 Port 非 TCP 端口,可以理解为文件句柄。
node.process_limit = 参数值 > 最大允许连接数 * 2
node.max_ports = 参数值 > 最大允许连接数

etc/emq.conf 配置文件的 listener 段落设置最大允许连接数:
listener.tcp.external = 0.0.0.0:1883

listener.tcp.external.acceptors = 8

listener.tcp.external.max_clients = 1024

创建 admin 账户:
$ ./bin/emqx_ctl admins add admin public test
ok
重置 admin 账户密码:
$ ./bin/emqx_ctl admins passwd root private
ok
删除 admin 账户:
$ ./bin/emqx_ctl admins del root
ok

更多基础命令可参考官网:http://www.emqtt.com/docs/v3/commands.html