随业务负载弹性扩展
根据连接数和消息流量的变化调整 EMQX 节点副本数,并借助 Kubernetes 资源配置为业务负载规划容量。
EMQX ON KUBERNETES
使用 EMQX Operator 在 Kubernetes 上部署、管理和扩展 EMQX 集群。
概览
通过 EMQX Operator 扩展 MQTT 工作负载,简化集群运维。
根据连接数和消息流量的变化调整 EMQX 节点副本数,并借助 Kubernetes 资源配置为业务负载规划容量。
将多个 EMQX 节点分散运行在不同的工作节点或故障域中。除了 Kubernetes 的 Pod 自动恢复,还需配合合适的存储和客户端重连设置。
用 YAML 声明 EMQX 集群,由 Operator 自动将相关资源调整到期望状态。部署和配置变更均可沿用现有的 Kubernetes 工作流。
架构
设备通过 Kubernetes Service 连接至 EMQX,由 Operator 管理集群。
Kubernetes
EMQX Cluster
EMQX Pod
EMQX Pod
EMQX Pod
监控
Grafana
Prometheus
存储与配置
Persistent Volumes
ConfigMaps
EMQX Operator生命周期管理
核心能力
借助 EMQX Operator 自动完成 EMQX 的部署、扩缩容和维护。
在自定义资源中设置 EMQX 节点副本数。如需自动扩缩容,请确认当前 Operator 版本和部署模式是否支持 HPA。
扩缩容 API 参考在自定义资源中定义 EMQX 镜像、节点副本数和服务配置,然后将其应用到现有的 Kubernetes 集群。
通过 Operator 协调 EMQX 版本升级。提前规划节点可用性,为 MQTT 客户端重连留出余地,并在上线生产环境前完成升级测试。
升级策略指南使用 Prometheus 采集 EMQX 指标,通过 Grafana 仪表盘掌握集群健康状况。如需更多指标,可配置 EMQX Exporter。
监控指南通过自定义资源管理 EMQX 支持的配置项,包括监听器和认证。请使用与当前 Operator 版本对应的 API 应用配置变更。
配置指南EMQX Operator 既可用于托管 Kubernetes 服务,也可用于自建集群。网络、存储和访问控制可按各环境的需要进行调整。
客户案例
BAIC MOTOR 在 Kubernetes 上运行 EMQX 承载车联网消息,支撑数十万并发 MQTT 连接。
“EMQX Kubernetes Operator 彻底改变了我们的 MQTT 服务。现在我们能以低延迟、高可靠性处理数十万并发 MQTT 连接。Kubernetes 的弹性伸缩和自动化运维还帮助我们快速拓展物联网业务至新市场。”
工作原理
准备好兼容的 Kubernetes 集群和 EMQX Operator 版本,然后依次完成安装、配置和连接。
开始之前
按照文档提供的安装清单,在 Kubernetes 集群中安装 EMQX Operator,并等待控制器就绪。
用 YAML 创建 EMQX 自定义资源,指定 EMQX 镜像、节点副本数以及当前 Operator 版本支持的配置项。
使用 kubectl 应用清单,等待集群状态变为 Ready。配置 MQTT 监听器的访问方式,然后测试客户端连接。
部署
参照 EMQX Operator 部署指南,在 Amazon EKS、Azure AKS 和 Google Kubernetes Engine 上完成部署。
应用场景
依托您的 Kubernetes 基础设施,为车辆、工厂和物联网平台运行 MQTT 服务。
资源
FAQ
EMQX Operator 是用于部署和管理 EMQX 集群的 Kubernetes 控制器。您只需在 EMQX 自定义资源中描述期望的集群状态,Operator 就会自动调整相应的 Kubernetes 资源,使其与之保持一致。
EMQX Operator 基于 Apache 2.0 许可证开源。EMQX 服务器的许可另行规定,请根据您部署的 EMQX 具体版本查阅相应的许可条款。
部署多个 EMQX 节点,并将其分布在不同的 Kubernetes 工作节点或故障域中。Operator 负责维持期望的集群状态,Kubernetes 负责重启故障的 Pod。实际的恢复效果还取决于副本数、存储配置和客户端重连行为,建议在故障场景下进行验证。
在 EMQX 自定义资源中修改支持的配置项并应用变更,Operator 会将集群调整为新的期望配置。上线前,请查阅与您所用 Operator 和 EMQX 版本对应的配置指南。
可以。配置 Prometheus 采集 EMQX 指标,再通过 Grafana 进行可视化。监控指南还介绍了如何使用 EMQX Exporter 获取 Prometheus API 未提供的指标。