centos服務器進行EMQ X 服務的安裝、集羣及添加身份驗證

一、簡介

1.EMQ X R3.2 消息服務器簡介

EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基於 Erlang/OTP 平臺開發的開源物聯網 MQTT 消息服務器。Erlang/OTP 是出色的軟實時(Soft-Realtime)、低延時(Low-Latency)、分佈式(Distributed) 的語言平臺。MQTT 是輕量的(Lightweight)、發佈訂閱模式(PubSub) 的物聯網消息協議。

EMQ X 面向海量的 移動/物聯網/車載 等終端接入,並實現在海量物理網設備間快速低延時的消息路由:

1.穩定承載大規模的 MQTT 客戶端連接,單服務器節點支持百萬連接。

2.分佈式節點集羣,快速低延時的消息路由,單集羣支持千萬規模的路由。

3.消息服務器內擴展,支持定製多種認證方式、高效存儲消息到後端數據庫。

4.完整物聯網協議支持,MQTT、MQTT-SN、CoAP、LwM2M、私有 TCP/UDP 協議支持。

2.MQTT 發佈訂閱模式簡述

MQTT 是基於 發佈(Publish)/訂閱(Subscribe) 模式來進行通信及數據交換的,與 HTTP 的 請求(Request)/應答(Response) 的模式有本質的不同。

訂閱者(Subscriber) 會向 消息服務器(Broker) 訂閱一個 主題(Topic) 。成功訂閱後,消息服務器會將該主題下的消息轉發給所有的訂閱者。

主題(Topic)以 ‘/’ 爲分隔符區分不同的層級。包含通配符 ‘+’ 或 ‘#’ 的主題又稱爲 主題過濾器(Topic Filters); 不含通配符的稱爲 主題名(Topic Names) 例如:

sensor/1/temperature

chat/room/subject

presence/user/feng

sensor/1/#

sensor/+/temperature

uber/drivers/joe/inbox

注: ‘+’ 通配一個層級,’#’ 通配多個層級(必須在末尾)。

註解

注: 發佈者(Publisher) 只能向 ‘主題名’ 發佈消息,訂閱者(Subscriber) 則可以通過訂閱 ‘主題過濾器’ 來通配多個主題名稱。

 

二、emqx服務器的單點搭建

2.1. 下載emqx zip文件

運行:wget https://www.emqx.io/downloads/broker/v3.2.2/emqx-centos7-v3.2.2.zip

下載安裝包到指定位置。

2.2、解壓zip壓縮包

運行: unzip emqx-centos7-v3.2.2.zip

2.3、啓動emqx

首先cd到emqx目錄

   運行:cd emqx/

   然後再運行:./bin/emqx start

   顯示:emqx 3.2.2 is started successfully! 表示啓動成功

停止emqx

./bin/emqx stop

2.4、查看運行狀態

 運行:./bin/emqx_ctl status 命令

 

2.5、防火牆開放18083和1883端口

firewall-cmd --zone=public --add-port=18083/tcp --permanent

systemctl start firewalld

systemctl stop firewalld

firewall-cmd --list-ports

2.6、查看Dashboard控制檯

EMQ X 默認加載 Dashboard 插件,啓動 Web 管理控制檯。用戶可通過 Web 控制檯,查看服務器運行狀態、統計數據、連接(Connections)、會話(Sessions)、主題(Topics)、訂閱(Subscriptions)、插件(Plugins)等。

控制檯地址: http://127.0.0.1:18083,默認用戶名: admin,密碼:public

 

 

2.7、測試客戶端發佈、訂閱

  1. 準備兩個springboot集成mqtt的項目,既可以是發佈者也可以是訂閱者。
  2. 修改配置的ip和端口爲剛剛啓動的emqx服務器的ip和端口,端口默認爲1883
  3. a客戶端發佈topic爲topic1的內容時,a和b客戶端都能收到訂閱,同樣b客戶端發佈時,a和b也能收到。至此,單點的emqx服務器搭建成功。

 

 

三、emqx服務器的集羣搭建

官方的壓測顯示,單點的EMQ X R3.0 在單機 8核/32G內存的 CentOS 雲服務器,也能夠測試到 130萬 的客戶端連接數,但單點沒有容錯能力,如果部署emq的服務器掛了後續服務將會受到影響,所以現在搭建集羣。

3.1、按上述方法在2臺機上安裝emqx服務器

修改文件./emqx/etc/emqx.conf

主要修改以下幾個地方:

第一臺:

#集羣發現模式,靜態發現,啓動後不用輸加入集羣命令

cluster.discovery = static 

#集羣列表,配合上面static發現策略使用

cluster.static.seeds = [email protected].137.59,[email protected].137.4

#節點名

node.name = [email protected]37.57

 

#集羣通信端口段

node.dist_listen_min = 6369

node.dist_listen_max = 7369

 

第二臺:

#集羣發現模式,靜態發現,啓動後不用輸加入集羣命令

cluster.discovery = static 

#集羣列表,配合上面static發現策略使用

cluster.static.seeds = [email protected].137.59,[email protected].137.4

#節點名

node.name = emqx2@192.168.137.4

#集羣通信端口段

node.dist_listen_min = 6369

node.dist_listen_max = 7369

 

3.2、防火牆把4369,6369端口也開啓

3.3、把2臺機器的emqx服務器分別啓動

啓動成功後查看任意一臺Dashboard控制檯,可以看到兩個節點及它們的連接數。

 

四、添加權限驗證

4.1.分別在兩個服務器的etc下面找到emqx.conf文件

##關閉匿名認證

allow_anonymous = false

4.2、加載用戶名認證插件

./bin/emqx_ctl plugins load emqx_auth_username

4.3、添加用戶

./bin/emqx_ctl users add admin jingxin123

其中,admin是賬戶名,jingxin123是密碼

4.4、分別重啓兩個emqx服務器

 

五、mqtt集成到springboot並測試

  1. 集成mqtt到兩個springboot項目,配置文件添加連接emqx的ip及端口
  2. 其中一個發佈信息,另一個能收到訂閱,反之亦然。
  3. 關掉其中一個emqx服務器,發佈及訂閱信息仍能成功。
  4. 開啓這臺emqx服務器,關掉另一個,發佈及訂閱還是成功。至此,安裝,集羣及集成到springboot項目完成

注:mqtt集成到springboot進行消息的發佈及訂閱請參考《springboot整合mqtt進行消息的發佈及訂閱》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章