Emqtt(现在叫做EMQ X Broker) 是基于高并发的 Erlang/OTP 语言平台开发的开源 MQTT 消息服务器。相对于linux自带的mosquitto消息服务器,Emqtt插件更丰富,功能更全一些。这里是部署Emqtt集群加上redis授权的步骤,集群方式依赖etcd服务。
安装
- 在官网下载emqtt安装包,直接安装deb包即可。
- 选择一个服务器安装etcd服务,直接apt安装或者官网下载二进制包。配置文件最少只需要以下几行即可:
name: 'default'
data-dir: '/opt/etcd/data'
listen-client-urls: http://0.0.0.0:2379
advertise-client-urls: http://0.0.0.0:2379
debug: false
etcd集群安装方式请参照文档。这一步其实可以跳过,使用广播方式或者手动方式组建集群。使用etcd的优势是方便扩展。
- 选择一个服务器安装redis服务,集群化安装可以参考之前写的文章。
- 编辑emqtt的配置文件,一般是
/etc/emqx/emqx.conf
,修改集群相关信息:
cluster.name = bar
cluster.discovery = etcd
cluster.etcd.server = http://10.100.0.24:2379 #ip地址是etcd服务的地址
cluster.etcd.prefix = mqtt
node.name = emqx@10.100.0.25 #ip地址是当前节点的地址
- 编辑emqtt的redis插件配置文件,一般是
/etc/emqx/plugins/emqx_auth_redis.conf
,根据redis安装情况配置即可。 - 启用redis插件,这一步可以在dashboard中操作(默认开启,端口是18083,帐号admin,密码public),或者直接修改
/var/lib/emqx/loaded_plugins
文件,添加emqx_auth_redis.
。 - 重启emqtt服务,完成。
redis授权管理
-
hset mqtt_user:user password userspwd
创建帐号user、密码userspwd的帐号。默认情况下相当于超级用户,可以监听所有。 -
hset mqtt_acl:user test/# 3
设定帐号user的权限,只能发布、订阅test/#下的消息。其中1代表订阅,2代表发布,3代表订阅+发布。 -
hset mqtt_user:is_superuser 1
设定帐号是超级用户,忽略acl里面的内容。
网友评论