EMQx消息中间件特性部署

1.简介

emqx专门支持的mqtt协议的中间件

EMQ (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。Erlang/OTP 是出色的软实时(Soft-Realtime)、低延时(Low-Latency)、分布式(Distributed) 的语言平台。MQTT 是轻量的(Lightweight)、发布订阅模式(PubSub) 的物联网消息协议。

EMQ 项目设计目标是承载移动终端或物联网终端海量 MQTT 连接,并实现在海量物联网设备间快速低延时消息路由:

稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。
分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。
消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
完整物联网协议支持,MQTT、MQTT-SN、CoAP、WebSocket 或私有协议支持。

2.docker单机部署(设置用户认证)

下载:docker pull emqx/emqx:v3.2.7

1)docker run --name emqx -p 18083:18083 -p 1883:1883 -d emqx/emqx:v3.2.7
2)docker exec -it emqx /bin/sh
3)vi etc/emqx.conf 
   配置启用匿名认证: allow_anonymous = falase
4)vi etc/plugins/emqx_auth_username.conf 
   配置认证用户信息
   auth.user.1.username = liuqiang
   auth.user.1.password = 123456
5)./bin/emqx_ctl plugins load emqx_auth_username
6)ctrl+p+q 退出容器
7)docker restart emqx

3.docker集群部署

(一)了解概念:

EMQX_CLUSTER__DISCOVERY:static 集群发现模式,静态发现,启动后不用输加入集群命令
EMQX_CLUSTER__STATIC__SEEDS: 集群列表,配合上面static发现策略使用
EMQX_NAME:节点名
集群通信端口段 6369/7369
监控界面:18083
如果集群节点间存在防火墙,防火墙需要开启 4369 端口和一个 TCP 端口段。4369 由 epmd 端口映射服务使用,TCP 端口段用于节点间建立连接与通信。(6369/7369)

(二)开始部署:

1)准备三台linux虚拟机,假设ip分别:192.168.224.130,192.168.224.131,192.168.224.132
2)分别在三台linux虚拟机上下载emqx镜像 docker pull emqx/emqx:v3.2.7
3)在192.168.224.130虚拟机上部署
docker run -itd --name emqtt-node01 -p 18083:18083 -p 1883:1883 -p 4369:4369 -p 6369:6369 \
       -e /data:/home/emqx \
       -e EMQX_NAME="node01"  \
       -e EMQX_HOST=192.168.224.130 \
       -e EMQX_LISTENER__TCP_EXTERNAL=1883 \
       -e EMQX_JOIN_CLUSTER="[email protected]" \
       -e EMQX_CLUSTER__DISCOVERY="static" \
       -e PLATFORM_ETC_DIR=/home/emqx/etc \
       -e PLATFORM_LOG_DIR=/home/emqx/log \
       -e PLATFORM_DATA_DIR=/home/emqx/data \
       -e HOME=/home/emqx \
       -e EMQX_CLUSTER__STATIC__SEEDS="[email protected],[email protected],[email protected]" \
       emqx/emqx:v3.2.7
4)在192.168.224.131虚拟机上部署
docker run -itd --name emqtt-node02 -p 18083:18083 -p 1883:1883 -p 4369:4369 -p 6369:6369 \
     -e /data:/home/emqx \
     -e EMQX_NAME="node02" \
     -e EMQX_HOST=192.168.224.131\
     -e EMQX_LISTENER__TCP_EXTERNAL=1883 \
     -e EMQX_JOIN_CLUSTER="[email protected]" \
     -e EMQX_CLUSTER__DISCOVERY="static" \
     -e EMQX_CLUSTER__STATIC__SEEDS="[email protected],[email protected],[email protected]" \
     emqx/emqx:v3.2.7
5)在192.168.224.132虚拟机上部署
docker run -itd --name emqtt-node03 -p 18083:18083 -p 1883:1883 -p 4369:4369 -p 6369:6369 \
     -e /data:/home/emqx \
     -e EMQX_NAME="node03" \
     -e EMQX_HOST=192.168.224.132 \
     -e EMQX_LISTENER__TCP_EXTERNAL=1883 \
     -e EMQX_JOIN_CLUSTER="[email protected]" \
     -e EMQX_CLUSTER__DISCOVERY="static" \
     -e EMQX_CLUSTER__STATIC__SEEDS="[email protected],[email protected],[email protected]" \
     emqx/emqx:v3.2.7

你可能感兴趣的:(架构设计)