EMQ 單節點部署

官方文檔:http://emqtt.com/docs/v2/getstarted.html#emq-2-0
下載地址:http://emqtt.com/downloads
EMQ X R3.0 消息服務器簡介
EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基於 Erlang/OTP 平臺開發的開源物聯網 MQTT 消息服務器。Erlang/OTP 是出色的軟實時(Soft-Realtime)、低延時(Low-Latency)、分佈式(Distributed) 的語言平臺。MQTT 是輕量的(Lightweight)、發佈訂閱模式(PubSub) 的物聯網消息協議。

EMQ X 項目設計目標是承載移動終端或物聯網終端海量 MQTT 連接,並實現在海量物聯網設備間快速低延時消息路由:

穩定承載大規模的 MQTT 客戶端連接,單服務器節點支持50萬到100萬連接。
分佈式節點集羣,快速低延時的消息路由,單集羣支持1000萬規模的路由。
消息服務器內擴展,支持定製多種認證方式、高效存儲消息到後端數據庫。
完整物聯網協議支持,MQTT、MQTT-SN、CoAP、WebSocket 或私有協議支持。

EMQ3.0安裝:
源碼安裝:
mkdir /data/emq
unzip emqx-centos7-v3.0.1.zip
cd emqx

啓動emqx

./bin/emqx start

檢查運行狀態

./bin/emqx_ctl status

停止emqx

./bin/emqx stop

放開防火牆訪問端口

rpm安裝:

安裝依賴

yum -y install lksctp-tools

安裝包

yum -y install emqttd-centos7-v2.3.11-1.el7.centos.x86_64.rpm

啓動

systemctl start emqttd.service

EMQ X 消息服務默認允許匿名認證,啓動後 MQTT 客戶端可連接1883端口,啓動運行日誌輸出在 log/ 目錄。
EMQ X 消息服務器啓動後,會默認加載 Dashboard 插件,啓動 Web 管理控制檯。用戶可通過 Web 控制檯,查看服務器運行狀態、統計數據、客戶端(Client)、會話(Session)、主題(Topic)、訂閱(Subscription)、插件(Plugin)。
控制檯地址: http://127.0.0.1:18083,默認用戶: admin,密碼:public

EMQ X R3.0 消息服務器默認設置,允許最大客戶端連接是512,因爲大部分操作系統 ‘ulimit -n’ 限制爲1024

EMQ 單節點部署

簡單優化:
Linux 操作系統參數

2M - 系統所有進程可打開的文件數量:

sysctl -w fs.file-max=2097152
sysctl -w fs.nr_open=2097152

1M - 系統允許當前進程打開的文件數量:

ulimit -n 1048576

TCP 協議棧參數

backlog - Socket 監聽隊列長度:

sysctl -w net.core.somaxconn=65536

Erlang 虛擬機參數
emqttd/etc/emq.conf:

Erlang Process Limit

node.process_limit = 2097152

Sets the maximum number of simultaneously existing ports for this system

node.max_ports = 1048576

EMQ X 最大允許連接數
emqx/etc/emqx.conf ‘listeners’段落:

Size of acceptor pool

listener.tcp.external.acceptors = 64

Maximum number of concurrent clients

listener.tcp.external.max_clients = 1000000

測試客戶端設置
測試客戶端在一個接口上,最多隻能創建65000連接:
sysctl -w net.ipv4.ip_local_port_range="500 65535"

echo 1000000 > /proc/sys/fs/nr_open

EMQ服務端口:
![](https://s1.51cto.com/images/blog/201903/06/740034b2688520003e9fe87fbfdd0374.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
EMQ 2.0 佔用的上述端口,可通過 etc/emq.conf 配置文件的 ‘listener’ 段落設置:

TCP Listener: 1883, 127.0.0.1:1883, ::1:1883

listener.tcp.external = 0.0.0.0:1883

SSL Listener: 8883, 127.0.0.1:8883, ::1:8883

listener.ssl.external = 8883

External MQTT/WebSocket Listener

listener.ws.external = 8083

HTTP Management API Listener

listener.api.mgmt = 127.0.0.1:8080
18083端口是 Web 管理控制佔用,該端口由 emq_dashboard 插件啓用。
控制檯 URL: http:://localhost:18083/ ,默認登錄用戶名: admin, 密碼: public。
EMQ 消息服務器提供了狀態監控 URL
http://localhost:8080/status

註解
Erlang 的 Port 非 TCP 端口,可以理解爲文件句柄。
node.process_limit = 參數值 > 最大允許連接數 * 2
node.max_ports = 參數值 > 最大允許連接數

etc/emq.conf 配置文件的 listener 段落設置最大允許連接數:
listener.tcp.external = 0.0.0.0:1883

listener.tcp.external.acceptors = 8

listener.tcp.external.max_clients = 1024

創建 admin 賬戶:
$ ./bin/emqx_ctl admins add admin public test
ok
重置 admin 賬戶密碼:
$ ./bin/emqx_ctl admins passwd root private
ok
刪除 admin 賬戶:
$ ./bin/emqx_ctl admins del root
ok

更多基礎命令可參考官網:http://www.emqtt.com/docs/v3/commands.html

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