谷动谷力

 找回密码
 立即注册
查看: 1621|回复: 2
打印 上一主题 下一主题
收起左侧

【MQTT】EMQX 消息服务器介绍及部署

[复制链接]
跳转到指定楼层
楼主
发表于 2023-11-22 20:10:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
【MQTT】EMQX 消息服务器介绍及部署


EMQX 概述

EMQX 是一款开源的大规模分布式 MQTT 消息服务器,功能丰富,专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条,单服务器的传输与处理吞吐量可达每秒百万级 MQTT 消息,同时保证毫秒级的低时延。

EMQX 支持多种协议,包括 MQTT (3.1、3.1.1 和 5.0)、HTTP、QUIC 和 WebSocket 等,保证各种网络环境和硬件设备的可访问性。EMQX 还提供了全面的 SSL/TLS 功能支持,比如双向认证以及多种身份验证机制,为物联网设备和应用程序提供可靠和高效的通信基础设施。

内置基于 SQL 的规则引擎,EMQX 可以实时提取、过滤、丰富和转换物联网数据。此外,EMQX 采用了无主分布式架构,以确保高可用性和水平扩展性,并提供操作友好的用户体验和出色的可观测性。


EMQX 拥有来自 50 多个国家的 20,000 多家企业用户,连接全球超过 1 亿台物联网设备,服务企业数字化、实时化、智能化转型。


EMQX特性

Mria 集群架构

支持全新的 Mria 集群架构,在此架构下 EMQX 水平扩展性得到指数级提升,单个集群可以轻松支持 1 亿 MQTT 连接,这使得 EMQX 5.0 成为目前全球最具扩展性的 MQTT Broker。

在构建满足用户业务需求的更大规模集群的同时,Mria 架构还能够降低大规模部署下的脑裂风险以及脑裂后的影响,以提供更加稳定可靠的物联网数据接入服务。


轻量级消息
通过开放标准协议 MQTT、HTTP、QUIC 和 WebSocket 为应用程序和设备提供高效、可靠的信息传递能力。

安全通信
支持通过 TLS/SSL 加密双向 MQTT 连接,通过用户名/密码、JWT、PSK、X.509 证书等进行身份认证。

实时事件处理
通过强大的,基于 SQL 的规则引擎,提取、过滤、充实和转换数百万的连续事件流。

易于扩展
随着业务的增长,EMQX 在扩展部署方面为您提供了高度的灵活性,无论是水平扩展还是垂直扩展增加。


安装部署


Docker下部署

本页将指导您使用官方 Docker 镜像快速安装和运行 EMQX,并使用 Docker Compose 实现集群搭建。


通过 Docker 运行单个 EMQX 节点

本节主要介绍如何通过 Docker 镜像安装最新版本的 EMQX,如希望体验其他版本,可以前往 EMQX 下载页面

运行以下命令获取 Docker 镜像:

  1. docker pull emqx/emqx:5.3.1
复制代码

运行以下命令启动 Docker 容器。
  1. docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.3.1
复制代码

有关 EMQX 官方镜像的更多信息,请查看 Docker Hub - emqx


Docker 部署注意事项
  • 如果需要持久 Docker 容器 ,请将以下目录挂载到容器外部,这样即使容器被删除数据也不会丢失:


    1. /opt/emqx/data
    2. /opt/emqx/log
    复制代码


    关于 EMQX 目录结构的详细信息请参考 EMQX 文件和目录

    启动容器并挂载目录:


    1. docker run -d --name emqx \

    2.   -p 1883:1883 -p 8083:8083 \
    3.   -p 8084:8084 -p 8883:8883 \
    4.   -p 18083:18083 \
    5.   -v $PWD/data:/opt/emqx/data \
    6.   -v $PWD/log:/opt/emqx/log \
    7.   emqx/emqx:5.3.1
    复制代码

  • Docker 内的 localhost 或 127.0.0.1 指向的是容器内部地址,如需访问宿主机地址请使用宿主机的真实 IP 或使用 host 网络模式。如果您使用的是 Docker for Mac 或 Docker for Windows,可以使用 host.docker.internal 作为宿主机地址。

  • 由于 EMQX 使用 data/mnesia/<节点名> 作为数据存储目录,请使用 hostname 或者 FQDN 等固定的信息作为节点名,避免因为节点名称变动导致数据丢失。


通过 Docker Compose 构建 EMQX 集群

Docker Compose 是一个用于编排和运行多容器的工具,下面将指导您通过 Docker Compose 创建简单的 EMQX 静态集群用于测试。

请注意,本章节中的 Docker Compose 示例文件仅适用于本地测试,如果您需要在生产环境中部署集群请参考 构建集群

TIP

目前 Docker Compose 已经包含在 Docker 安装包中无需单独安装,如果您的 Docker 中没有包含 Compose 请参考 Install Docker Compose 进行安装。


  • 在任意目录创建 docker-compose.yml 文件,内容如下:

  1. version: '3'


  2. services:
  3.   emqx1:
  4.     image: emqx:5.3.1
  5.     container_name: emqx1
  6.     environment:
  7.     - "EMQX_NODE_NAME=emqx@node1.emqx.io"
  8.     - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
  9.     - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io]"
  10.     healthcheck:
  11.       test: ["CMD", "/opt/emqx/bin/emqx ctl", "status"]
  12.       interval: 5s
  13.       timeout: 25s
  14.       retries: 5
  15.     networks:
  16.       emqx-bridge:
  17.         aliases:
  18.         - node1.emqx.io
  19.     ports:
  20.       - 1883:1883
  21.       - 8083:8083
  22.       - 8084:8084
  23.       - 8883:8883
  24.       - 18083:18083
  25.     # volumes:
  26.     #   - $PWD/emqx1_data:/opt/emqx/data

  27.   emqx2:
  28.     image: emqx:5.3.1
  29.     container_name: emqx2
  30.     environment:
  31.     - "EMQX_NODE_NAME=emqx@node2.emqx.io"
  32.     - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
  33.     - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io]"
  34.     healthcheck:
  35.       test: ["CMD", "/opt/emqx/bin/emqx ctl", "status"]
  36.       interval: 5s
  37.       timeout: 25s
  38.       retries: 5
  39.     networks:
  40.       emqx-bridge:
  41.         aliases:
  42.         - node2.emqx.io
  43.     # volumes:
  44.     #   - $PWD/emqx2_data:/opt/emqx/data

  45. networks:
  46.   emqx-bridge:
  47.     driver: bridge
复制代码


  • 通过命令行切换 docker-compose.yml 文件所在目录,然后输入以下命令启动 EMQX 集群:

  1. docker-compose up -d
复制代码


  • 查看集群状态
  1. $ docker exec -it emqx1 sh -c "emqx ctl cluster status"

  2. Cluster status: #{running_nodes => ['emqx@node1.emqx.com','emqx@node2.emqx.com'],
  3.                   stopped_nodes => []}
复制代码

Debian /Ubuntu下部署

本页将指导您如何在 Debian 系统中下载安装并启动 EMQX。

支持的 Debian 版本:

  • Debian 12
  • Debian 11
  • Debian 10

支持的 Ubuntu 版本:

  • Ubuntu 22.04
  • Ubuntu 20.04
  • Ubuntu 18.04

通过 Apt 源安装

EMQX 支持通过 Apt 源安装,免除了用户需要手动处理依赖关系和更新软件包等的困扰,具有更加方便、安全和易用等优点。如希望通过 Apt 源安装 EMQX,可参考如下步骤。

通过下载包安装

EMQX 同时支持通过下载包进行安装。下文将以 Debian 11 系统为例演示如何下载最新版 EMQX。如希望在其他支持系统中进行安装,或体验其他版本,可前往 EMQX 下载页面 获取安装信息。


通过 deb 安装

请根据 CPU 架构选择对应安装方式。

下载 emqx-5.3.1-debian11-amd64.deb


  1. wget https://www.emqx.com/zh/downloads/broker/5.3.1/emqx-5.3.1-debian11-amd64.deb
复制代码

  • 安装 EMQX。
  1. sudo apt install ./emqx-5.3.1-debian11-amd64.deb
复制代码



启动 EMQX

您可通过如下三种方式启动 EMQX

  • 直接启动:


    1. $ emqx start
    2. EMQX 5.3.1 is started successfully!

    3. $ emqx ctl status
    4. Node 'emqx@127.0.0.1' 5.3.1 is started
    复制代码

  • systemctl 启动:


    1. sudo systemctl start emqx
    复制代码

  • service 启动:


    1. sudo service emqx start
    复制代码

卸载 EMQX

服务完成后,可通过如下命令卸载 EMQX:


  1. sudo apt remove --purge emqx
复制代码


通过 tar.gz 安装

请根据 CPU 架构选择对应安装方式。

  • 下载 emqx-5.3.1-debian11-amd64.tar.gz


    1. wget [url]https://www.emqx.com/zh/downloads/broker/5.3.1/emqx-5.3.1-debian11-amd64.tar.gz[/url]
    复制代码

  • 安装 EMQX。


    1. mkdir -p emqx && tar -zxvf emqx-5.3.1-debian11-amd64.tar.gz -C emqx
    复制代码


安装完成后,可通过如下命令启动 EMQX。

  1. ./emqx/bin/emqx start
复制代码

CentOS/RHEL下部署

本页将指导您如何在 CentOS/RHEL 系统中下载安装并启动 EMQX。

支持的 CentOS/RHEL 版本:

  • Amazon Linux 2023
  • Amazon Linux 2
  • Rocky Linux 9 (RHEL 9)
  • Rocky Linux 8 (RHEL 8)
  • CentOS 7 (RHEL 7)

通过 Yum 源安装


EMQX 支持通过 Yum 源安装,您可通过以下 Yum 命令从中自动下载和安装 EMQX。

  • 通过以下命令配置 EMQX Yum 源:

    1. curl -s https://assets.emqx.com/scripts/install-emqx-rpm.sh | sudo bash
    复制代码

  • 运行以下命令安装 EMQX:

    1. sudo yum install emqx -y
    复制代码

  • 运行以下命令启动 EMQX:

    1. sudo systemctl start emqx
    复制代码

通过 rpm 安装

EMQX 同时支持通过下载 rpm 安装包进行安装。本节以 CentOS 8 系统为例演示如何下载最新版 EMQX。如希望在其他支持系统中进行安装,或体验其他版本,可前往EMQX 下载页面获取详细安装信息。

请根据 CPU 架构选择对应安装方式。

  • 下载 emqx-5.3.1-el8-amd64.rpm

    1. wget https://www.emqx.com/zh/downloads/broker/5.3.1/emqx-5.3.1-el8-amd64.rpm
    复制代码

  • 安装 EMQX。

    1. sudo yum install emqx-5.3.1-el8-amd64.rpm -y
    复制代码



启动 EMQX

您可通过如下 3 种方式启动 EMQX。

  • 直接启动:

    1. $ emqx start
    2. EMQX 5.3.1 is started successfully!

    3. $ emqx ctl status
    4. Node 'emqx@127.0.0.1' 5.3.1 is started
    复制代码

  • systemctl 启动:

    1. sudo systemctl start emqx
    复制代码

  • service 启动:

    1. sudo service emqx start
    复制代码

卸载 EMQX



服务完成后,可通过如下命令卸载 EMQX:

  1. sudo yum remove emqx
复制代码

macOS下部署

本页将指导您如何通过 zip 包在 macOS 系统中下载安装并启动 EMQX。

支持的操作系统:

  • macOS 13 (只适用于 Homebrew 安装包)
  • macOS 12
  • macOS 11
使用 Homebrew 安装 EMQXHomebrew 是一个免费且开源的软件包管理系统,可简化在 macOS 上安装软件的过程。
  • 如果你的 Mac 上还没有安装 Homebrew,可以在终端中运行以下命令来进行安装:

    1. bashCopy code
    2. /bin/bash -c "$(curl -fsSL [url]https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh[/url])"
    复制代码

  • 安装 EMQX:

    1. bashCopy code
    2. brew install emqx
    复制代码

使用 Zip 软件包安装 EMQX下载 适用于你的操作系统和架构的 EMQX 软件包。这是适用于搭载 macOS 12(Monterey)和 Apple Silicon 的 Mac 电脑的 zip 软件包的链接:

    1. wget [url]https://www.emqx.com/zh/downloads/broker/5.3.1/emqx-5.3.1-macos12-arm64.zi[/url]
    复制代码

  • 安装 EMQX。

    1. mkdir -p emqx && unzip emqx-5.3.1-macos12-arm64.zip -d emqx
    复制代码

启动和停止 EMQX

EMQX 可以以守护进程模式、前台模式或交互模式启动。请注意,默认情况下只能同时运行一个 EMQX 实例。

如果你使用 Homebrew 安装了 EMQX,请按照下面的指示使用 emqx 命令。如果你使用 zip 包安装了 EMQX,请使用 bin/emqx(假设你在解压 emqx 文件的目录中)。

  1. # 以守护进程模式启动
  2. emqx start

  3. # 以前台模式启动
  4. emqx foreground

  5. # 以交互模式启动,使用 Erlang shell
  6. emqx console
复制代码


如果以前台模式或交互模式启动,启动成功后,EMQX 将输出以下消息:

  1. EMQX 5.3.1 is running now!
复制代码


你可能还会看到一些警告消息,这些消息是为生产环境的操作者准备的,如果 EMQX 在本地环境进行测试、实验或客户端开发,可以忽略这些消息:

  1. ERROR: DB Backend is RLOG, but an incompatible OTP version has been detected. Falling back to using Mnesia DB backend.
  2. WARNING: ulimit -n is 256; 1024 is the recommended minimum.
  3. WARNING: Default (insecure) Erlang cookie is in use.
  4. WARNING: Configure node.cookie in /opt/homebrew/Cellar/emqx/5.3.1/etc/emqx.conf or override from environment variable EMQX_NODE__COOKIE
  5. WARNING: NOTE: Use the same cookie for all nodes in the cluster.
复制代码

你可以使用以下命令检查 EMQX 的状态:

  1. emqx ctl status
复制代码


打开你的 Web 浏览器,在地址栏中输入 http://localhost:18083/(localhost 可替换为你的 IP 地址)访问 EMQX Dashboard,从中你可以连接到客户端或查看运行状态。


默认的用户名和密码为 admin 和 public。登录后,你将被要求更改默认密码。


要停止 EMQX:

  • 如果以守护进程模式启动,使用 emqx stop 或 bin/emqx stop。
  • 如果以前台模式启动,按下 Ctrl+C。
  • 如果以交互模式启动,连续按下两次 Ctrl+C。




windos下载部署



源码编译安装

环境依赖

EMQX 源码编译安装需要以下环境依赖:

  • Erlang/OTP OTP 24 或 25 版本
  • GCC 4.8 或更高版本
  • Git
  • make
  • openssl-devel
  • libcurl-devel

您可以使用 EMQX 提供的 Docker 编译环境EMQX Builder 从源码编译 EMQX。

您可通过如下命令创建 EMQX Builder 容器,映射 EMQX 主要端口(可选)可以在编译完成后启动预览:

  1. docker run -d --name emqx-builder \
  2.   # -p 1883:1883 \
  3.   # -p 8083:8083 \
  4.   # -p 8084:8084 \
  5.   # -p 8883:8883 \
  6.   # -p 18083:18083 \
  7.   ghcr.io/emqx/emqx-builder/5.0-17:1.13.4-24.2.1-1-ubuntu20.04 \
  8.   bash -c "tail -f /dev/null"
复制代码


编译并启动

EMQX 仓库位于https://github.com/emqx/emqx,其中 master 分支为最新的 EMQX 5.0 版本,main-* 分支则对应不同的次要版本(如 4.4.x、5.1.x)。

以下是编译并启动 EMQX 5.x 最新版本的操作步骤:

  1. # docker exec -it emqx-builder bash
  2. git clone https://github.com/emqx/emqx.git
  3. cd emqx
  4. make
  5. _build/emqx/rel/emqx/bin/emqx console
复制代码


+10
回复

使用道具 举报

沙发
 楼主| 发表于 2023-11-29 11:57:32 | 只看该作者
MQTT 服务器信息
Broker:
TCP 端口:1883
WebSocket 端口:8083
SSL/TLS 端口:8883
WebSocket Secure 端口:8084
QUIC 端口:14567
+10
回复 支持 反对

使用道具 举报

板凳
发表于 2024-4-12 14:28:19 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-11-24 15:37 , Processed in 0.198249 second(s), 47 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表