谷谷小师妹 发表于 2023-11-22 20:10:39

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

【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 镜像:docker pull emqx/emqx:5.3.1
运行以下命令启动 Docker 容器。
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 容器 ,请将以下目录挂载到容器外部,这样即使容器被删除数据也不会丢失:
/opt/emqx/data
/opt/emqx/log

关于 EMQX 目录结构的详细信息请参考 EMQX 文件和目录。启动容器并挂载目录:
docker run -d --name emqx \

-p 1883:1883 -p 8083:8083 \
-p 8084:8084 -p 8883:8883 \
-p 18083:18083 \
-v $PWD/data:/opt/emqx/data \
-v $PWD/log:/opt/emqx/log \
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 文件,内容如下:

version: '3'


services:
emqx1:
    image: emqx:5.3.1
    container_name: emqx1
    environment:
    - "EMQX_NODE_NAME=emqx@node1.emqx.io"
    - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
    - "EMQX_CLUSTER__STATIC__SEEDS="
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    networks:
      emqx-bridge:
      aliases:
      - node1.emqx.io
    ports:
      - 1883:1883
      - 8083:8083
      - 8084:8084
      - 8883:8883
      - 18083:18083
    # volumes:
    #   - $PWD/emqx1_data:/opt/emqx/data

emqx2:
    image: emqx:5.3.1
    container_name: emqx2
    environment:
    - "EMQX_NODE_NAME=emqx@node2.emqx.io"
    - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
    - "EMQX_CLUSTER__STATIC__SEEDS="
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    networks:
      emqx-bridge:
      aliases:
      - node2.emqx.io
    # volumes:
    #   - $PWD/emqx2_data:/opt/emqx/data

networks:
emqx-bridge:
    driver: bridge


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

docker-compose up -d


[*]查看集群状态
$ docker exec -it emqx1 sh -c "emqx ctl cluster status"

Cluster status: #{running_nodes => ['emqx@node1.emqx.com','emqx@node2.emqx.com'],
                  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 Apt 源:bashcurl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash
[*]运行以下命令安装 EMQX:sudo apt-get install emqx
[*]运行以下命令启动 EMQX:sudo systemctl start emqx
通过下载包安装​
EMQX 同时支持通过下载包进行安装。下文将以 Debian 11 系统为例演示如何下载最新版 EMQX。如希望在其他支持系统中进行安装,或体验其他版本,可前往 EMQX 下载页面 获取安装信息。
通过 deb 安装​
请根据 CPU 架构选择对应安装方式。下载 emqx-5.3.1-debian11-amd64.deb。
wget https://www.emqx.com/zh/downloads/broker/5.3.1/emqx-5.3.1-debian11-amd64.deb

[*]安装 EMQX。
sudo apt install ./emqx-5.3.1-debian11-amd64.deb


启动 EMQX​您可通过如下三种方式启动 EMQX
[*]直接启动:
$ emqx start
EMQX 5.3.1 is started successfully!

$ emqx ctl status
Node 'emqx@127.0.0.1' 5.3.1 is started
[*]systemctl 启动:
sudo systemctl start emqx
[*]service 启动:
sudo service emqx start
卸载 EMQX​服务完成后,可通过如下命令卸载 EMQX:
sudo apt remove --purge emqx

通过 tar.gz 安装​
请根据 CPU 架构选择对应安装方式。
[*]下载 emqx-5.3.1-debian11-amd64.tar.gz。
wget https://www.emqx.com/zh/downloads/broker/5.3.1/emqx-5.3.1-debian11-amd64.tar.gz
[*]安装 EMQX。
mkdir -p emqx && tar -zxvf emqx-5.3.1-debian11-amd64.tar.gz -C emqx

安装完成后,可通过如下命令启动 EMQX。./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 源:curl -s https://assets.emqx.com/scripts/install-emqx-rpm.sh | sudo bash
[*]运行以下命令安装 EMQX:sudo yum install emqx -y
[*]运行以下命令启动 EMQX:sudo systemctl start emqx
通过 rpm 安装
EMQX 同时支持通过下载 rpm 安装包进行安装。本节以 CentOS 8 系统为例演示如何下载最新版 EMQX。如希望在其他支持系统中进行安装,或体验其他版本,可前往EMQX 下载页面获取详细安装信息。请根据 CPU 架构选择对应安装方式。
[*]下载 emqx-5.3.1-el8-amd64.rpm。wget https://www.emqx.com/zh/downloads/broker/5.3.1/emqx-5.3.1-el8-amd64.rpm
[*]安装 EMQX。sudo yum install emqx-5.3.1-el8-amd64.rpm -y


启动 EMQX
您可通过如下 3 种方式启动 EMQX。
[*]直接启动:$ emqx start
EMQX 5.3.1 is started successfully!

$ emqx ctl status
Node 'emqx@127.0.0.1' 5.3.1 is started
[*]systemctl 启动:sudo systemctl start emqx
[*]service 启动:sudo service emqx start
卸载 EMQX



服务完成后,可通过如下命令卸载 EMQX:
sudo yum remove emqx
macOS下部署
​本页将指导您如何通过 zip 包在 macOS 系统中下载安装并启动 EMQX。支持的操作系统:
[*]macOS 13 (只适用于 Homebrew 安装包)
[*]macOS 12
[*]macOS 11
使用 Homebrew 安装 EMQXHomebrew 是一个免费且开源的软件包管理系统,可简化在 macOS 上安装软件的过程。
[*]如果你的 Mac 上还没有安装 Homebrew,可以在终端中运行以下命令来进行安装:bashCopy code
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
[*]安装 EMQX:bashCopy code
brew install emqx
使用 Zip 软件包安装 EMQX下载 适用于你的操作系统和架构的 EMQX 软件包。这是适用于搭载 macOS 12(Monterey)和 Apple Silicon 的 Mac 电脑的 zip 软件包的链接:
[*]
wget https://www.emqx.com/zh/downloads/broker/5.3.1/emqx-5.3.1-macos12-arm64.zi
[*]安装 EMQX。mkdir -p emqx && unzip emqx-5.3.1-macos12-arm64.zip -d emqx
启动和停止 EMQX
EMQX 可以以守护进程模式、前台模式或交互模式启动。请注意,默认情况下只能同时运行一个 EMQX 实例。如果你使用 Homebrew 安装了 EMQX,请按照下面的指示使用 emqx 命令。如果你使用 zip 包安装了 EMQX,请使用 bin/emqx(假设你在解压 emqx 文件的目录中)。# 以守护进程模式启动
emqx start

# 以前台模式启动
emqx foreground

# 以交互模式启动,使用 Erlang shell
emqx console

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

你可能还会看到一些警告消息,这些消息是为生产环境的操作者准备的,如果 EMQX 在本地环境进行测试、实验或客户端开发,可以忽略这些消息:ERROR: DB Backend is RLOG, but an incompatible OTP version has been detected. Falling back to using Mnesia DB backend.
WARNING: ulimit -n is 256; 1024 is the recommended minimum.
WARNING: Default (insecure) Erlang cookie is in use.
WARNING: Configure node.cookie in /opt/homebrew/Cellar/emqx/5.3.1/etc/emqx.conf or override from environment variable EMQX_NODE__COOKIE
WARNING: NOTE: Use the same cookie for all nodes in the cluster.
你可以使用以下命令检查 EMQX 的状态: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-5.3.1-windows-amd64.zip,并解压缩。
[*]windos下载:
https://www.emqx.io/zh/downloads?os=Windows
[*]通过命令行下进入解压路径,通过以下命令启动 EMQX:


源码编译安装

环境依赖
EMQX 源码编译安装需要以下环境依赖:
[*]Erlang/OTP OTP 24 或 25 版本
[*]GCC 4.8 或更高版本
[*]Git
[*]make
[*]openssl-devel
[*]libcurl-devel
您可以使用 EMQX 提供的 Docker 编译环境EMQX Builder 从源码编译 EMQX。您可通过如下命令创建 EMQX Builder 容器,映射 EMQX 主要端口(可选)可以在编译完成后启动预览:docker run -d --name emqx-builder \
# -p 1883:1883 \
# -p 8083:8083 \
# -p 8084:8084 \
# -p 8883:8883 \
# -p 18083:18083 \
ghcr.io/emqx/emqx-builder/5.0-17:1.13.4-24.2.1-1-ubuntu20.04 \
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 最新版本的操作步骤:# docker exec -it emqx-builder bash
git clone https://github.com/emqx/emqx.git
cd emqx
make
_build/emqx/rel/emqx/bin/emqx console

谷谷小师妹 发表于 2023-11-29 11:57:32

MQTT 服务器信息
Broker:
TCP 端口:1883
WebSocket 端口:8083
SSL/TLS 端口:8883
WebSocket Secure 端口:8084
QUIC 端口:14567

鸣涧 发表于 2024-4-12 14:28:19

mqtt web测试
http://www.emqx.io/online-mqtt-client#/recent_connections/0f72b6c0-3800-417b-bb89-d8c32cd01eff
页: [1]
查看完整版本: 【MQTT】EMQX 消息服务器介绍及部署