在 Rocky Linux 8|AlmaLinux 8 | 上安装 EMQX MQTT 代理
MQTT 代理是一种使用发布-订阅模式的轻量级消息交换协议。也就是说,MQTT消息代理接收客户端发布的消息,根据主题进行过滤,分发给订阅者。 EMQX 是一个用 Erlang 编写的开源、弹性 MQTT 消息代理。
EMQX 适合海量客户端,具有快速、低延迟的消息路由。由于以下原因,它是高度优选的:
- 分布式集群:快速低延时的消息路由,单集群支持上万条路由。
- 稳定承载大规模 MQTT 客户端连接,单服务器节点支持 200 万个连接。
- 全面的物联网协议支持,包括 MQTT、MQTT-SN、CoAP、LwM2M 和其他基于 TCP/UDP 的专有协议。
- 高度可扩展:支持自定义插件,例如身份验证等功能。
EMQX 的功能包括:
- HTTP消息发布接口支持
- MQTT/WebSocket/SSL 支持
- TCP/SSL 连接支持
- 客户端在线状态查询及订阅支持
- 支持手动、mcast、dns、etcd、k8s等集群发现方式
- Redis、MySQL、PostgreSQL、MongoDB、HTTP 身份验证集成
- 支持多种身份验证方法,例如 LDAP、密码等
- 完整的 MQTT V3.1/V3.1.1 和 V5.0 协议规范支持
- MQTT 代理桥接支持
- CoAP协议支持
- MQTT-SN协议支持
- 按分区配置节点
- 连接和消息速率限制
- 自动网络分区修复
- 多服务器节点集群(Cluster)
- 基于客户端 ID、IP 地址、用户名的访问控制 (ACL)
本指南深入介绍了如何在 Rocky Linux 8|AlmaLinux 8|CentOS Stream 8 上安装 EMQX MQTT Broker。本指南涵盖的安装方法包括:
- 使用脚本自动化方式
- 从 YUM 存储库安装
- 在 Docker 容器中运行
入门。
在我们深入研究这个问题之前,强烈建议您将系统软件包更新到最新的稳定版本。
sudo yum update -y
您还需要使用以下命令安装一些其他软件包:
sudo yum install curl vim
在 Rocky Linux 8|AlmaLinux 8|CentOS Stream 8 上安装 EMQX MQTT 代理
本指南深入演示了每种概述的安装方法。
方法一-一键安装shell脚本
有一种在 Linux 系统上自动安装 EMQX 的方法。这使得在 Rocky Linux 8|AlmaLinux 8|CentOS Stream 8 上安装 EMQX MQTT Broker 变得非常容易。
使用以下命令下载并运行脚本:
curl https://repos.emqx.io/install_emqx.sh | sudo bash
示例输出:
Adding repo from: https://repos.emqx.io/emqx-ce/redhat/centos/8/emqx-ce.repo
emqx-stable 1.0 MB/s | 819 kB 00:00
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
emqx x86_64 4.3.5-1.el8 emqx-ce-stable 22 M
Transaction Summary
================================================================================
....
Running transaction
Preparing : 1/1
Running scriptlet: emqx-4.3.5-1.el8.x86_64 1/1
Installing : emqx-4.3.5-1.el8.x86_64 1/1
Running scriptlet: emqx-4.3.5-1.el8.x86_64 1/1
Created symlink /etc/systemd/system/multi-user.target.wants/emqx.service → /usr/lib/systemd/system/emqx.service.
Verifying : emqx-4.3.5-1.el8.x86_64 1/1
Installed products updated.
Installed:
emqx-4.3.5-1.el8.x86_64
Complete!
EMQ X install success
启动并启用该服务。
sudo systemctl start emqx && sudo systemctl enable emqx
检查服务的状态。
$ systemctl status emqx
● emqx.service - emqx daemon
Loaded: loaded (/usr/lib/systemd/system/emqx.service; enabled; vendor preset>
Active: active (running) since Sun 2022-03-06 04:20:10 EST; 4s ago
Main PID: 3044 (run_erl)
Tasks: 36 (limit: 23544)
Memory: 116.1M
CGroup: /system.slice/emqx.service
├─3044 /usr/lib/emqx/erts-11.1.8/bin/run_erl -daemon //var/lib/emqx/>
├─3073 emqx -P 2097152 -Q 1048576 -e 256000 -spp true -A 4 -IOt 4 -S>
├─3352 erl_child_setup 1048576
├─3402 sh -s disksup
├─3403 /usr/lib/emqx/lib/os_mon-2.6.1/priv/bin/memsup
├─3404 /usr/lib/emqx/lib/os_mon-2.6.1/priv/bin/cpu_sup
├─3437 inet_gethost 4
└─3438 inet_gethost 4
方法 2 – 从 YUM 存储库安装 EMQX
EMQX 包也可以从 YUM 包管理器安装。首先安装依赖项。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装后,设置 EMQX 存储库
sudo yum-config-manager --add-repo https://repos.emqx.io/emqx-ce/redhat/centos/8/emqx-ce.repo
现在从存储库安装最新版本的 EMQX。
sudo yum install emqx
示例输出:
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
emqx x86_64 4.3.5-1.el8 emqx-ce-stable 22 M
Transaction Summary
================================================================================
Install 1 Package
Total download size: 22 M
Installed size: 39 M
Is this ok [y/N]: y
您也可以安装特定版本的 EMQX。首先列出可用的版本。
$ yum list emqx --showduplicates | sort -r
Installed Packages
emqx.x86_64 4.3.5-1.el8 emqx-ce-stable
emqx.x86_64 4.3.5-1.el8 @emqx-ce-stable
emqx.x86_64 4.3.4-1.el8 emqx-ce-stable
....
继续并安装所需的版本,例如 4.3.4
sudo yum install emqx-<version>
安装后,启动并启用该服务。
sudo systemctl start emqx && sudo systemctl enable emqx
检查服务的状态。
$ systemctl status emqx
● emqx.service - emqx daemon
Loaded: loaded (/usr/lib/systemd/system/emqx.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2022-03-06 04:24:27 EST; 7s ago
Main PID: 32792 (run_erl)
Tasks: 32 (limit: 36433)
Memory: 110.8M
CGroup: /system.slice/emqx.service
├─32792 /usr/lib/emqx/erts-11.1.8/bin/run_erl -daemon //var/lib/emqx/emqx_erl_pipes/[email / /var/log/emqx exec "/usr/bin>
├─32814 emqx -P 2097152 -Q 1048576 -e 256000 -spp true -A 4 -IOt 4 -SDio 8 -- -root /usr/lib/emqx -progname usr/bin/emqx -- -hom>
├─33067 erl_child_setup 1048576
├─33106 sh -s disksup
├─33107 /usr/lib/emqx/lib/os_mon-2.6.1/priv/bin/memsup
├─33108 /usr/lib/emqx/lib/os_mon-2.6.1/priv/bin/cpu_sup
├─33137 inet_gethost 4
└─33138 inet_gethost 4
方法 3 – 在 Docker 容器中运行 EMQX
在 docker 容器中运行 EMQX 是最简单的方法。对于那些想要避免安装依赖项的麻烦的人来说,这是要走的路。
在继续之前,请确保您的系统上已安装 Docker。这可以借助以下指南来完成:
- 如何在 Linux 系统上安装 Docker CE
安装 Docker 后,将您的系统用户添加到 docker 组。
sudo usermod -aG docker $USER
newgrp docker
启动并启用 docker。
sudo systemctl start docker && sudo systemctl enable docker
现在拉取 EMQX 镜像。有两种方法可以拉取 EMQX 镜像。
- 来自 Docker Hub。
docker pull emqx/emqx
查看拉取的docker镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
emqx/emqx latest 445050b808a9 41 hours ago 193MB
- 从 emqx.io 或 Github 手动加载
wget -O emqx-docker.zip https://www.emqx.com/en/downloads/broker/v<VERSION-URL>.zip
unzip emqx-docker.zip
docker load < emqx-docker-vVERSION-*
使用该镜像,您可以在 Docker 容器中运行 EMQX。首先,创建持久数据路径。
sudo mkdir -p /emqx-data/emqx.lic
将 SELinux 设置为宽容模式。
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
使用以下命令在 docker 容器中运行 EMQX:
docker run -d \
--name emqx \
-p 1883:1883 \
-p 8081:8081 \
-p 8083:8083 \
-p 8883:8883 \
-p 8084:8084 \
-p 18083:18083 \
-v /emqx-data/emqx.lic:/opt/emqx/etc/emqx.lic \
emqx/emqx
请记住标记正确的图像名称。这里我使用了 emqx/emqx:v4.0.0 docker 镜像
检查容器的状态。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b8ed3f30ee24 emqx/emqx:v4.0.0 "/usr/bin/docker-ent…" 7 seconds ago Up 5 seconds 4369/tcp, 5369/tcp, 6369/tcp, 0.0.0.0:1883->1883/tcp, :::1883->1883/tcp, 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp, 0.0.0.0:8083-8084->8083-8084/tcp, :::8083-8084->8083-8084/tcp, 8080/tcp, 0.0.0.0:8883->8883/tcp, :::8883->8883/tcp, 0.0.0.0:18083->18083/tcp, :::18083->18083/tcp, 11883/tcp emqx
使用以下命令管理容器:
##Stop EMQX
docker stop emqx
##Start EMQX
docker start emqx
或者使用 Docker-compose,您还可以设置一个简单的静态 EMQX 集群。创建docker-compose.yml文件
vim docker-compose.yml
将以下行添加到文件中:
version: '3'
services:
emqx1:
image: emqx/emqx
environment:
- "EMQX_NAME=emqx"
- "EMQX_HOST=node1.emqx.io"
- "EMQX_CLUSTER__DISCOVERY=static"
- "[email , [email "
- "EMQX_ZONE__EXTERNAL__RETRY_INTERVAL=2s"
- "EMQX_MQTT__MAX_TOPIC_ALIAS=10"
volumes:
- /emqx-data/emqx.lic:/opt/emqx/etc/emqx.lic
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 , [email "
- "EMQX_ZONE__EXTERNAL__RETRY_INTERVAL=2s"
- "EMQX_MQTT__MAX_TOPIC_ALIAS=10"
volumes:
- /emqx-data/emqx.lic:/opt/emqx/etc/emqx.lic
healthcheck:
test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
interval: 5s
timeout: 25s
retries: 5
networks:
emqx-bridge:
aliases:
- node2.emqx.io
client:
image: python:3.7.2-alpine3.9
depends_on:
- emqx1
- emqx2
tty: true
networks:
emqx-bridge:
networks:
emqx-bridge:
driver: bridge
使用以下命令启动集群:
docker-compose -p emqx up -d
访问 EMQX 仪表板
EMQX 仪表板是一个通过浏览器访问的 Web 应用程序。仪表板默认启用并在端口 18083 上运行。
允许端口通过防火墙。
sudo firewall-cmd --add-port=18083/tcp --permanent
sudo firewall-cmd --add-port=8083/tcp --permanent
sudo firewall-cmd --add-port=1883/tcp --permanent
sudo firewall-cmd --add-port=8081/tcp --permanent
sudo firewall-cmd --add-port=8883/tcp --permanent
sudo firewall-cmd --add-port=8084/tcp --permanent
sudo firewall-cmd --reload
使用 URL http://IP_Address:18083 访问仪表板
默认登录凭据是;用户名 - admin 和密码 - public。可以在文件 /etc/plugins/emqx_dashboard.conf 中进行编辑。成功登录后,您将获得 EMQX 仪表板。
在这里,您可以在上午选项卡下监控服务器和客户端。在这里,您可以获得概述、客户数据等
配置客户端后,您可以发送和接收消息。在本指南中,我们将服务器设置为客户端。导航至工具>Web 套接字选项卡。创建与客户端的新连接。提供如下凭据并连接到客户端。
连接后,订阅主题并向客户端发送消息。
尝试向配置的客户端发送消息。发送和接收的消息将如下所示。
现在您可以在客户选项卡下查看客户信息。
此时,您可以查看节点的主题
您还可以查看主题订阅。
瞧!
这标志着关于如何在 Rocky Linux 8|AlmaLinux 8|CentOS Stream 8 上安装 EMQX MQTT 代理的精彩指南的结束。我希望这对您来说很重要。
查看更多:
- 在 CentOS 8 上安装 Taiga 项目管理工具
- 学习 Rabbitmq/Activemq/Zeromq 的书籍
- 在 Rocky Linux 8|AlmaLinux 8 上配置 Vsftpd FTP 服务器