1. 程式人生 > >centos6.8下emqtt叢集安裝配置與測試驗證

centos6.8下emqtt叢集安裝配置與測試驗證

1.簡介
emqttd(Erlang MQTT Broker)是基於Erlang/OTP語言平臺開發,支援大規模連線和分散式叢集,釋出訂閱模式的開源MQTT訊息伺服器。
emqttd完整支援MQTT V3.1/V3.1.1版本協議規範,並擴充套件支援WebSocket、Stomp、CoAP、MQTT-SN或私有TCP協議。emqttd訊息伺服器
支援單節點100萬連線與多節點分散式叢集。EMQ 2.0 (Erlang/Enterprise/Elastic MQTT Broker) 是基於 Erlang/OTP 語言平臺開發,
支援大規模連線和分散式叢集,釋出訂閱模式的開源 MQTT 訊息伺服器。2.0 版本開始 emqttd 訊息伺服器自正式簡稱為EMQ。
2.下載
建議使用最新穩定版本:http://emqtt.com/downloads
3.環境介紹
節點一:192.168.20.38
節點二:192.168.20.52
節點三:192.168.20.111
4.安裝配置
分別在三臺機器執行
yum install -y lksctp-tools
將emqttd-centos6.8-v2.2.0.zip上傳至/home目錄
cd /home
unzip emqttd-centos6.8-v2.2.0.zip
cd emqttd
vi /home/emqttd/etc/emq.conf
node.name =
[email protected]
(對應節點寫對應的機器IP)
由於我機器上1883、8080等埠已經被用了,所以我修改了emq.conf中的對應埠配置:
1883->2883,8080->6060,8083->6063,8084->6064
控制檯方式啟動服務:./bin/emqttd console
後臺啟動:./bin/emqttd start
關閉服務:./bin/emqttd stop
啟動狀態查詢:./bin/emqttd_ctl status
在192.168.20.52和192.168.20.11機器上分別執行:
./bin/emqttd_ctl cluster join
[email protected]

任意節點檢視叢集狀態
./bin/emqttd_ctl cluster status
移除某個節點命令
./bin/emqttd_ctl cluster remove [email protected]
5.管理後臺
URL:http://192.168.20.38:18083/
賬號:admin  密碼:public
可以用命令./bin/emqttd_ctl admins passwd admin 123456修改密碼
6.鑑權配置
關閉匿名認證,修改/home/emqttd/etc:
mqtt.allow_anonymous = false
啟用 emq_auth_username 外掛(不啟用則mqtt.allow_anonymous = false不生效):
./bin/emqttd_ctl plugins load emq_auth_username
兩種方式新增使用者(管理員只能通過命令新增):

直接在 etc/plugins/emq_auth_username.conf 中明文配置預設使用者例如:

auth.user.1.username = hthl_pub
auth.user.1.password = 123456
auth.user.2.username = hthl_sub
auth.user.2.password = 123456
auth.user.3.username = hthl_all
auth.user.3.password = 123456


(上面一行留空是因為emqt2.2.0版本有BUG,必須回車,否則最後行無效) 使用 ./bin/emqttd_ctl users 命令新增使用者:
./bin/emqttd_ctl users add hthl_pub 123456
./bin/emqttd_ctl users add hthl_sub 123456
./bin/emqttd_ctl users add hthl_all 123456

修改鑑權檔案acl.conf:

%% 允許hthl_sub使用者訂閱hthl/#主題
{allow, {user, "hthl_sub"}, subscribe, ["hthl/#"]}.
%% 允許hthl_pub使用者釋出hthl/#主題
{allow, {user, "hthl_pub"}, publish, ["hthl/#"]}.
%% 允許hthl_all使用者釋出訂閱$SYS/#和hthl/#主題
{allow, {user, "hthl_all"}, pubsub, ["$SYS/#", "hthl/#"]}.
%% 允許本機發布訂閱全部主題
{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.
%% 上述規則無匹配,禁止
{deny, all}.


(上面一行留空是因為emqt2.2.0版本有BUG,必須回車,否則最後行無效) 修改後重啟生效:
./bin/emqttd stop
./bin/emqttd start
./bin/emqttd restart(使用此命令無法重新載入配置檔案)
7.測試驗證
HTTP API必須修改emq.conf檔案中的listener.api.mgmt = 127.0.0.1:6060為:listener.api.mgmt = 6060
修改後重啟生效:
./bin/emqttd stop
./bin/emqttd start
./bin/emqttd restart(使用此命令無法重新載入配置檔案)
釋出訊息測試命令如下:
curl -v --basic -u hthl_pub:123456 -d "qos=1&retain=0&topic=hthl/hyt&message=hello from http..." -k http://192.168.20.38:6060/mqtt/publish