说明
测试环境我们可能使用压缩包
或docker
方式以单节点的形式启动服务,但在生产环境需要一个更加简单和稳定的方式去部署我们的EMQX
企业版服务。
部署架构
EMQX 集群可作为物联网接入服务(IoT Hub)部署,目前 EMQ 在青云、阿里云、AWS 等云服务提供商上均提供开箱即用的免费软件镜像,对于特殊硬件平台和系统版本如树莓派、Linux ARM,可使用源码编译安装。
典型部署架构:
LB (负载均衡)
LB (负载均衡器) 负责分发设备的 MQTT 连接与消息到 EMQX 集群,LB 提高 EMQX 集群可用性、实现负载平衡以及动态扩容。
部署架构推荐在 LB 终结 SSL 连接。设备与 LB 之间 TLS 安全连接,LB 与 EMQX 之间普通 TCP 连接。这种部署模式下 EMQX 单集群可轻松支持 100 万设备。
这里我们使用私有部署 LB 服务器:nginx
。
EMQX 集群
EMQX 默认开启的 MQTT 服务 TCP 端口:
端口 | 说明 |
---|---|
1883 | MQTT 协议端口 |
8883 | MQTT/SSL 端口 |
8083 | MQTT/WebSocket 端口 |
8084 | MQTT/WebSocket/SSL 端口 |
8081 | 管理 API 端口 |
18083 | Dashboard 端口 |
防火墙根据使用的 MQTT 接入方式,开启上述端口的访问权限。
EMQX 节点集群使用的 TCP 端口:
端口 | 说明 |
---|---|
4369 | 集群节点发现端口 (EPMD 模式) |
4370 | 集群节点发现端口 |
5370 | 集群节点 PRC 通道 |
集群节点间如有防护墙,需开启上述 TCP 端口互访权限。
部署 EMQX 集群
## 创建 emqx 的账号和权限
kubectl apply -f yamls-ee/emqx-rbac.yaml
## 创建 emqx 环境变量配置文件
kubectl apply -f yamls-ee/emqx-config.yaml
## 创建 emqx 和 nginx 所用到的配置和证书文件
kubectl apply -f yamls-ee/emqx-conf.yaml
## 创建 emqx 服务配置文件
kubectl apply -f yamls-ee/emqx-service.yaml
## 创建 emqx 集群
kubectl apply -f yamls/emqx-statefulset.yaml
部署 nginx 服务
## 部署 nginx 服务
kubectl apply -f yamls/emqx-nginx.yaml
访问服务
这里你可以使用NodePort
服务暴露方式,也可以服务应用路由
,方式有很多,这里提供一个参考。
参考文档
k8s部署企业版emqx集群.md