Emqtt(現(xiàn)在叫做EMQ X Broker) 是基于高并發(fā)的 Erlang/OTP 語言平臺開發(fā)的開源 MQTT 消息服務器范舀。相對于linux自帶的mosquitto消息服務器爹凹,Emqtt插件更豐富,功能更全一些身诺。這里是部署Emqtt集群加上redis授權(quán)的步驟蜜托,集群方式依賴etcd服務。
安裝
- 在官網(wǎng)下載emqtt安裝包霉赡,直接安裝deb包即可橄务。
- 選擇一個服務器安裝etcd服務,直接apt安裝或者官網(wǎng)下載二進制包穴亏。配置文件最少只需要以下幾行即可:
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的優(yōu)勢是方便擴展棠涮。
- 選擇一個服務器安裝redis服務,集群化安裝可以參考之前寫的文章刺覆。
- 編輯emqtt的配置文件严肪,一般是
/etc/emqx/emqx.conf
,修改集群相關(guān)信息:
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地址是當前節(jié)點的地址
- 編輯emqtt的redis插件配置文件谦屑,一般是
/etc/emqx/plugins/emqx_auth_redis.conf
驳糯,根據(jù)redis安裝情況配置即可。 - 啟用redis插件氢橙,這一步可以在dashboard中操作(默認開啟结窘,端口是18083,帳號admin充蓝,密碼public)隧枫,或者直接修改
/var/lib/emqx/loaded_plugins
文件喉磁,添加emqx_auth_redis.
。 - 重啟emqtt服務官脓,完成协怒。
redis授權(quán)管理
-
hset mqtt_user:user password userspwd
創(chuàng)建帳號user、密碼userspwd的帳號卑笨。默認情況下相當于超級用戶孕暇,可以監(jiān)聽所有。 -
hset mqtt_acl:user test/# 3
設定帳號user的權(quán)限赤兴,只能發(fā)布妖滔、訂閱test/#下的消息。其中1代表訂閱桶良,2代表發(fā)布座舍,3代表訂閱+發(fā)布。 -
hset mqtt_user:is_superuser 1
設定帳號是超級用戶陨帆,忽略acl里面的內(nèi)容曲秉。