关于mqtt:MQTT-服务器搭建EMQ-X-安装指南和常见问题

45次阅读

共计 3347 个字符,预计需要花费 9 分钟才能阅读完成。

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 企业版均提供收费试用服务和试用版版本,您能够在数分钟内实现部署,立刻开始摸索和测试更丰盛的产品性能。

以下是不同版本之间的次要区别,您能够依据本身状况抉择不同的部署形式。

正文完
 0