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"
- "EMQX_CLUSTER__STATIC__SEEDS=emqx@node1.emqx.io, emqx@node2.emqx.io"
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"
- "EMQX_CLUSTER__STATIC__SEEDS=emqx@node1.emqx.io, emqx@node2.emqx.io"
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 => ['emqx@node1.emqx.io','emqx@node2.emqx.io'],
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 原創,轉載請注明出處。