博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EMQ 配置
阅读量:7231 次
发布时间:2019-06-29

本文共 4086 字,大约阅读时间需要 13 分钟。

系统版本: ubuntu 16.04 LTS
EMQ 版本: 2.3.11

我使用的代理就是 EMQ(emqttd) 介绍或者详细的配置可以到官网看看. 我这里只写一些主要的配置.

下载和安装

我从官网下载的是 emqttd-ubuntu16.04-v2.3.11_amd64.deb 下载后直接双击安装即可.

启动

安装后在控制台输出 sudo emqttd console 来启动代理. 启动后会输出如下信息.

Exec: /usr/lib/emqttd/erts-9.0/bin/erlexec -boot /usr/lib/emqttd/releases/2.3.11/emqttd -mode embedded -boot_var ERTS_LIB_DIR /usr/lib/emqttd/erts-9.0/../lib -mnesia dir "/var/lib/emqttd/mnesia/emq@127.0.0.1" -config /var/lib/emqttd/configs/app.2018.10.03.18.37.02.config -args_file /var/lib/emqttd/configs/vm.2018.10.03.18.37.02.args -vm_args /var/lib/emqttd/configs/vm.2018.10.03.18.37.02.args -- consoleRoot: /usr/lib/emqttd/usr/lib/emqttdErlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:32] [hipe] [kernel-poll:true]starting emqttd on node 'emq@127.0.0.1'emqttd ctl is starting...[ok]emqttd hook is starting...[ok]emqttd router is starting...[ok]emqttd pubsub is starting...[ok]emqttd stats is starting...[ok]emqttd metrics is starting...[ok]emqttd pooler is starting...[ok]emqttd trace is starting...[ok]emqttd client manager is starting...[ok]emqttd session manager is starting...[ok]emqttd session supervisor is starting...[ok]emqttd wsclient supervisor is starting...[ok]emqttd broker is starting...[ok]emqttd alarm is starting...[ok]emqttd mod supervisor is starting...[ok]emqttd bridge supervisor is starting...[ok]emqttd access control is starting...[ok]emqttd system monitor is starting...[ok]emqttd 2.3.11 is running nowEshell V9.0  (abort with ^G)(emq@127.0.0.1)1> Load emq_mod_presence module successfully.dashboard:http listen on 0.0.0.0:18083 with 4 acceptors.mqtt:tcp listen on 127.0.0.1:11883 with 4 acceptors.mqtt:tcp listen on 0.0.0.0:1883 with 16 acceptors.mqtt:ws listen on 0.0.0.0:8083 with 4 acceptors.mqtt:ssl listen on 0.0.0.0:8883 with 16 acceptors.mqtt:wss listen on 0.0.0.0:8084 with 4 acceptors.mqtt:api listen on 0.0.0.0:8080 with 4 acceptors.
也可以用这两个命令来启停
systemctl start emqttd
systemctl stop emqttd

目录

目录 说明
/usr/lib/emqttd/ 所有的可执行文件包括插件
/etc/emqttd/ 保存所有配置文件包括插件配置

配置

Erlang 虚拟机主要参数说明

属性名 说明
node.process_limit Erlang 虚拟机允许的最大进程数,一个 MQTT 连接会消耗2个 Erlang 进程,所以参数值 > 最大连接数 * 2
node.max_ports Erlang 虚拟机允许的最大 Port 数量,一个 MQTT 连接消耗1个 Port,所以参数值 > 最大连接数
node.dist_listen_min Erlang 分布节点间通信使用 TCP 连接端口范围。注: 节点间如有防火墙,需要配置该端口段
node.dist_listen_max Erlang 分布节点间通信使用 TCP 连接端口范围。注: 节点间如有防火墙,需要配置该端口段

日志参数配置

console 日志

## Console log. Enum: off, file, console, bothlog.console = console## Console log level. Enum: debug, info, notice, warning, error, critical, alert, emergencylog.console.level = error## Console log file## log.console.file = log/console.log

error 日志

## Error log filelog.error.file = log/error.log

crash 日志

## Enable the crash log. Enum: on, offlog.crash = onlog.crash.file = log/crash.log

syslog 日志

## Syslog. Enum: on, offlog.syslog = on##  syslog level. Enum: debug, info, notice, warning, error, critical, alert, emergencylog.syslog.level = error

MQTT 协议参数配置

ClientId 最大允许长度

## Max ClientId Length Allowed.mqtt.max_clientid_len = 1024

MQTT 最大报文尺寸

## Max Packet Size Allowed, 64K by default.mqtt.max_packet_size = 64KB

客户端连接闲置时间

设置 MQTT 客户端最大允许闲置时间(Socket 连接建立, 但未收到 CONNECT 报文):

## Client Idle Timeout (Second)mqtt.client.idle_timeout = 30

启用客户端连接统计

## Enable client Stats: on | offmqtt.client.enable_stats = off

强制 GC 设置

## Force GC: integer. Value 0 disabled the Force GC.mqtt.conn.force_gc_count = 100

关于插件的配置参考

MQTT 认证设置

EMQ 消息服务器认证由一系列认证插件(Plugin)提供,系统支持按用户名密码、ClientID 或匿名认证.

系统默认开启匿名认证(anonymous),通过加载认证插件可开启的多个认证模块组成认证链:

----------------           ----------------           ------------Client --> | Username认证 | -ignore-> | ClientID认证 | -ignore-> | 匿名认证 |           ----------------           ----------------           ------------                  |                         |                         |                 \|/                       \|/                       \|/            allow | deny              allow | deny              allow | deny

如果开启 用户名和密码 认证以及 客户ID认证时, 我们会先判断 用户名和密码 如果认证成功会忽略客户端ID, 如果认证失败则会去认证客户端ID.

⚠️ 客户端ID也需要配置密码.
用户名和密码以及客户端ID都是唯一的, 而且连接到代理的会话也是唯一的. 二次连接代理会将前一个下线.

转载地址:http://awvfm.baihongyu.com/

你可能感兴趣的文章
CACTI 95th模版导入 及95th模板下载
查看>>
请求头header里的contentType为application/json和capplition/x-www-form-urlencoded
查看>>
迁云的那些事
查看>>
jquery ui 和ext.js一些区别,欢迎给位指正批评
查看>>
clj-xmemcached: memcached client for clojure
查看>>
SecureCRT日志自动记录
查看>>
磁盘 io 测试
查看>>
客户不提供开发者账号打包上传应用的处理方法
查看>>
Netfilter与FreeBSD的网络包过滤
查看>>
闲谈IPv6-现状和过渡
查看>>
我的友情链接
查看>>
Xcode3.2.6+iOS4.2無法上傳iPhone
查看>>
XMPP开发环境的搭建
查看>>
Docker 数据卷,数据卷容器详细介绍
查看>>
使用rman备份到挂载的NFS目录,提示ORA-19504-27054报错
查看>>
通过 rsync 搭建 CentOS 本地 yum 源服务器
查看>>
hadoop hive 常见问题解决持续更新
查看>>
如何做不浮躁的人
查看>>
终端服务设施方案共享(Part3)
查看>>
linux的基本指令--第三节
查看>>