EMQ X 是基於 Erlang/OTP 平臺開發的開源物聯網 MQTT 消息服務器,目前廣泛應用於全球各行業物聯網平臺建設中。其設計目標是實現高可靠承載海量物聯網終端的 MQTT 連接,支持在海量物聯網設備間低延時消息路由。
本文將以 EMQ X v4.3.10(開源版)爲例,介紹 EMQ X 在 Docker、Kubernetes、Windows 和 Linux 上的安裝方法以及常見問題,爲大家利用 MQTT 消息服務器快速搭建物聯網平臺提供幫助。
安裝前檢查
絕大多數情況下操作系統的環境依賴、監聽端口都不會出現問題,測試環境下可以直接安裝啓動,EMQ X 會檢查可能存在的問題並停止啓動、報出錯誤。
但是我們仍然建議當生產環境存在升級 EMQ X 版本、升級其他服務等環境變動之後,再次啓動 EMQ X 前務必進行測試和檢查,避免產生不必要的損失。
檢查環境依賴
常見的由於環境依賴導致的問題如下:
- OpenSSL 版本不正確:常見於 CentOS 系統上,需要更新 OpenSSL 版本
- 缺失 MSVCRxxx.dll 文件:Windows 系統特有,需要安裝對應的依賴庫
- 安裝包與操作系統不符:EMQ X 需要對應操作系統和版本下載,否則無法啓動並報
cannot execute binary file
錯誤
更多的問題和解決方法詳見:EMQ X - 常見錯誤
檢查端口占用
端口占用會導致 EMQ X 無法啓動或部分功能異常,常見的症狀有:
- 執行
emqx start
時提示啓動超時 - 無法打開 Dashboard 或打開後一直報 404 Not Found 錯誤
出現以上情況,可以使用 emqx console
命令啓動 EMQ X,console 模式下可以打印詳細的錯誤日誌。
EMQ X 默認情況下監聽以下端口:
端口 | 說明 |
---|---|
集羣通信 | |
4369-4380 | 集羣通信 |
5370-5380 | 集羣 RPC 通信 |
協議接入 | |
1883 | MQTT 協議端口 |
11883 | MQTT 協議端口 |
8883 | MQTT/SSL 端口 |
8083 | MQTT/WebSocket 端口 |
5683 | LwM2M 端口 |
管理監控 | |
8081 | HTTP API 端口 |
18083 | Dashboard 管理控制檯端口 |
使用 Docker 安裝 EMQ X
使用 Docker 不需要建立安裝運行環境,可以更快安裝啓動 EMQ X,Docker 安裝教程請見 Install Docker Engine 。
運行單個 EMQ X 節點
Docker 安裝完成之後,可以通過 Docker Hub 獲取 EMQ X 鏡像:
docker pull emqx/emqx:4.3.10
啓動 Docker 容器,建立端口映射:
docker run -d --name emqx \
-p 1883:1883 \
-p 8081:8081 \
-p 8083:8083 \
-p 8084:8084 \
-p 8883:8883 \
-p 18083:18083 \
emqx/emqx:4.3.10
啓動成功之後,訪問 Dashboard 管理控制檯 http://localhost:18083。
docker-compose 簡單集羣
通過 docker-compose 可以在本地快速創建 EMQ X 集羣。
創建 docker-compose.yaml
文件:
version: '3'
services:
emqx1:
image: emqx/emqx
environment:
- "EMQX_NAME=emqx"
- "EMQX_HOST=node1.emqx.io"
- "EMQX_CLUSTER__DISCOVERY=static"
- "[email protected], [email protected]"
healthcheck:
test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
interval: 5s
timeout: 25s
retries: 5
networks:
emqx-bridge:
aliases:
- node1.emqx.io
emqx2:
image: emqx/emqx
environment:
- "EMQX_NAME=emqx"
- "EMQX_HOST=node2.emqx.io"
- "EMQX_CLUSTER__DISCOVERY=static"
- "[email protected], [email protected]"
healthcheck:
test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
interval: 5s
timeout: 25s
retries: 5
networks:
emqx-bridge:
aliases:
- node2.emqx.io
networks:
emqx-bridge:
driver: bridge
啓動 docker-compose 集羣:
docker-compose -p my_emqx up -d
查看集羣:
docker exec -it my_emqx_emqx1_1 sh -c "emqx_ctl cluster status"
Cluster status: #{running_nodes => ['[email protected]','[email protected]'],
stopped_nodes => []}
在 Kubernetes 上安裝 EMQ X
EMQ X Kubernetes Operator 是 EMQ 推出的一種封裝、部署和管理 EMQ X 的方法,也是一個特定的應用控制器,允許 DevOps 人員在 Kubernetes 上編排 EMQ X 集羣,管理他們的生命週期。
EMQ X Kubernetes Operator 可以幫助用戶在 Kubernetes 的環境上快速創建和管理 EMQ X 集羣,不僅極大簡化部署和管理流程,也降低了管理和配置的專業技能要求。
它將使部署和管理工作變成一種低成本、標準化、可重複性的能力,高效實現集羣擴容、無縫升級、故障處理和統一監控。
詳細的部署和使用方式請查看:https://github.com/emqx/emqx-operator。
在 Windows 上安裝 EMQ X
EMQ X 生產部署建議使用 Linux 服務器,不推薦 Windows 服務器,EMQ X 企業版中沒有提供 Windows 版本,如需測試可以使用 Docker 或者虛擬機的方式安裝。
通過 EMQ X 下載頁面 下載要安裝的 EMQ X 版本的 ZIP 包,解壓安裝包後,使用命令行進入解壓目錄運行即可:
cd D:\emqx
.\bin\emqx start
在 Linux 上安裝 EMQ X
Linux 一鍵安裝
EMQ X 提供一鍵安裝腳本進行安裝,腳本將自動識別並下載對應操作系統的安裝包進行安裝:
curl https://repos.emqx.io/install_emqx.sh | bash
Linux 二進制包安裝
通過 EMQ X 下載頁面 下載要安裝的 EMQ X 版本的 ZIP 包,解壓程序包後,使用命令行進入解壓目錄運行即可:
cd /opt/emqx
./bin/emqx start
yum 包管理工具安裝
安裝所需要的依賴包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
使用以下命令設置穩定存儲庫,以 CentOS 7 爲例
sudo yum-config-manager --add-repo https://repos.emqx.io/emqx-ce/redhat/centos/7/emqx-ce.repo
安裝最新版本的 EMQ X
sudo yum install emqx
其他包管理工具和操作系統安裝
訪問 EMQ X 安裝文檔 查看更多安裝教程。
部署說明
EMQ X 支持不同的部署方式,您可以通過雲服務或私有部署的方式來使用 EMQ X。
EMQ 提供了全託管的雲原生 MQTT 消息服務 EMQ X Cloud:自動化、全託管部署,無需管理服務器基礎設施,可以爲您的物聯網應用帶來輕鬆便捷的 MQTT 雲服務。
如果您需要私有部署,EMQ X 也提供了企業版,支持在物理機、容器/K8s、私有云、混合雲和公有云(如阿里雲、華爲雲和 AWS )中的任何地方運行,不受位置限制,不受廠商鎖定。
EMQ X Cloud 和 EMQ X 企業版均提供免費試用服務和試用版版本,您可以在數分鐘內完成部署,立即開始探索和測試更豐富的產品功能。
以下是不同版本之間的主要區別,您可以根據自身情況選擇不同的部署方式。
版權聲明: 本文爲 EMQ 原創,轉載請註明出處。