

在阿里云 ACK 上部署 EMQX MQTT 服务器集群
source link: https://blog.51cto.com/u_15204296/5873711
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在阿里云 ACK 上部署 EMQX MQTT 服务器集群
精选 原创云进入以「应用为中心」的云原生阶段,Operator 模式的出现,则为 Kubernetes 中的自动化任务创建配置与管理提供了一套行之有效的标准规范。通过将运维知识固化成高级语言 Go/Java 代码,使得运维知识可以像普通软件一样交付,并能支持高可靠、具备高级运维能力的有状态应用批量交付。
针对大规模分布式物联网 MQTT 消息服务器 EMQX 全生命期管理的自动化管理工具 EMQX Kubernetes Operator(本文中简称 EMQX Operator)应运而生。它作为 Kubernetes 上的自定义控制器运行,并与 Kubernetes API 服务器(kube-apiserver)进行通信,将高层描述转换为正常的 Kubernetes 资源,以保持所需的应用程序状态。
EMQX Operator 使 EMQX 的部署、调优和运维变成一种低成本、标准化、可重复性的能力,帮助用户高效实现集群扩容、无缝升级、故障处理和统一监控。

本文章将以 EMQX 企业版为例,详细讲解如何使用 EMQX Operator 在阿里云 ACK 公有云平台上创建部署 MQTT 服务集群,并实现自动化管理与监控。
云平台简介:阿里云 ACK
ACK:容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理;其整合了阿里云虚拟化、存储、网络和安全能力,助力企业高效运行云端 Kubernetes容器化应用。详见: 什么是容器服务Kubernetes版
创建 ACK 集群
创建 Kubernetes 群集
登录阿里云 容器服务-Kubernetes,选择创建集群,注意 EMQX Operator 要求 Kubernetes 版本>=1.20.0

根据需要选择合适的配置

访问 Kubernetes 群集

集群创建完成之后,在连接信息页面有 kubeconfig 文件信息,可以使用 kubectl 和 kubeconfig 文件访问集群。
LoadBalancer 配置
支持在 Terway 网络模式下,通过 annotation 将 Pod 直接挂载到 CLB 后端,提升网络转发性能。
StorageClass 配置
使用如下命令查看当前集群可用的 storageClass:
可以看到集群默认创建了多个可用的 storageClass, 本文档部署 EMQX 时选取的第一个 storageClass: alibabacloud-cnfs-nas
使用 EMQX Operator 部署 EMQX 集群
部署 cert-manager
参考 cert-manager 安装文档: Installation
部署 EMQX Operator
部署 EMQX 企业版集群
这里 service type 采用 LoadBalancer
apiVersion: apps.emqx.io/v1beta3
kind: EmqxEnterprise
metadata:
name: emqx-ee
labels:
"apps.emqx.io/instance": "emqx-ee"
annotations:
service.beta.kubernetes.io/backend-type:"eni"
spec:
emqxTemplate:
image: emqx/emqx-ee:4.4.6
serviceTemplate:
metadata:
name: emqx-ee
namespace: default
labels:
"apps.emqx.io/instance": "emqx-ee"
spec:
type: LoadBalancer
selector:
"apps.emqx.io/instance": "emqx-ee"
persistent:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: alibabacloud-cnfs-nas
EOF
查看集群状态
NAME READY STATUS RESTARTS AGE
emqx-ee-0 2/2 Running 0 22m
emqx-ee-1 2/2 Running 0 22m
emqx-ee-2 2/2 Running 0 22m
$ kubectl exec -it emqx-ee-0 -c emqx -- emqx_ctl status
Node '[email protected]' 4.4.6 is started
$ kubectl exec -it emqx-ee-0 -c emqx -- emqx_ctl cluster status
Cluster status: #{running_nodes =>
['[email protected]',
'[email protected]',
'[email protected]'],
stopped_nodes => []}
EMQX Operator 和 EMQX 集群 安装参考
LoadBalancer 终结 TLS
由于阿里云 CLB 不支持 TCP 证书(NLB发布后,我们会更该该项内容),所以请参考这篇文档解决 TCP 证书终结问题: LB 终结 mTLS 方案
备注: 此文档详细解释了使用 EMQX Operator 在阿里云 ACK 上部署 EMQX 集群的步骤,另外还支持配置 LB 直连 Pod,进一步提升转发性能。
版权声明: 本文为 EMQ 原创,转载请注明出处。
原文链接: https://www.emqx.com/zh/blog/deploying-mqtt-cluster-on-alicloud-ack
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK