云进入以「应用为中心」的云原生阶段,Operator 模式的出现,则为 Kubernetes 中的自动化任务创建配置与管理提供了一套行之有效的标准规范。通过将运维知识固化成高级语言 Go/Java 代码,使得运维知识可以像普通软件一样交付,并能支持高可靠、具备高级运维能力的有状态应用批量交付。

针对大规模分布式物联网 MQTT 消息服务器 EMQX 全生命期管理的自动化管理工具 EMQX Kubernetes Operator(本文中简称 EMQX Operator)应运而生。它作为 Kubernetes 上的自定义控制器运行,并与 Kubernetes API 服务器(kube-apiserver)进行通信,将高层描述转换为正常的 Kubernetes 资源,以保持所需的应用程序状态。

EMQX Operator 使 EMQX 的部署、调优和运维变成一种低成本、标准化、可重复性的能力,帮助用户高效实现集群扩容、无缝升级、故障处理和统一监控。

本文章将以 EMQX 企业版为例,详细讲解如何使用 EMQX Operator 在华为云 CCE 公有云平台上创建部署 MQTT 服务集群,并实现自动化管理与监控。

云平台简介:华为云 CCE

云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业级 Kubernetes 集群,支持运行 Docker 容器。借助云容器引擎,您可以在华为云上轻松部署、管理和扩展容器化应用程序,详见:成长地图_云容器引擎 CCE_华为云

创建 CCE 集群

购买 CCE 集群

登录华为云 CCE控制台,购买“Turbo 集群”或者“CCE 集群”,EMQX Operator 要求Kubernetes 版本>=1.20.0 ,因此我们在此选择 Kubernetes 1.21,网络与其他资源信息根据自身需求来制定。

创建节点池(直接添加节点也可以)

这里添加的节点必须可以访问外网(可以通过加 NAT 网关解决)

节点安装的操作系统建议是 Ubuntu,否则有可能会缺少必要的库(socat)

访问 Kubernetes 集群

点击 Cloud Shell

详情参考:通过 kubectl 连接集群_云容器引擎 CCE_用户指南_集群管理_旧版UI_访问集群_华为云

StorageClass 配置

查看当前的 StroageClass

kubectl get sc

这里我们用 csi-disk。

使用 EMQX Operator 部署 EMQX 集群

部署 cert-manager

参考 cert-manager 安装文档:https://cert-manager.io/docs/installation/

部署 EMQX Operator

kubectl apply -f "https://github.com/emqx/emqx-operator/releases/download/1.2.6/emqx-operator-controller.yaml"

部署 EMQX 企业版集群

这里 service type 采用 LoadBalancer

cat << "EOF" | kubectl apply -f -
apiVersion: apps.emqx.io/v1beta3
kind: EmqxEnterprise
metadata:name: emqx-eelabels:"foo": "bar"
spec:persistent:storageClassName: csi-diskresources:requests:storage: 1GiaccessModes:- ReadWriteOnceemqxTemplate:image: emqx/emqx-ee:4.4.6serviceTemplate:metadata:annotations:kubernetes.io/elb.pass-through: "true"kubernetes.io/elb.class: unionkubernetes.io/elb.autocreate:'{"type": "public","name": "emqx","bandwidth_name": "cce-emqx","bandwidth_chargemode": "bandwidth","bandwidth_size": 5,"bandwidth_sharetype": "PER","eip_type": "5_bgp"}'spec:type: LoadBalancer
EOF

Load Balancer参数说明

  • bandwidth_chargemode

    带宽付费模式。 bandwidth:按带宽计费 traffic:按流量计费 默认类型:bandwidth

  • bandwidth_size

    带宽大小,默认 1Mbit/s~2000Mbit/s,请根据 Region 带宽支持范围设置。

  • bandwidth_sharetype

    带宽共享方式。 PER:独享带宽

  • eip_type

    弹性公网IP类型 5_telcom:电信 5_union:联通 5_bgp:全动态BGP 5_sbgp:静态BGP

查看集群状态

$ kubectl get pods
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 'emqx-ee@emqx-ee-0.emqx-ee-headless.default.svc.cluster.local' 4.4.7 is started  $ kubectl exec -it emqx-ee-0 -c emqx -- emqx_ctl cluster status
Cluster status: #{running_nodes =>['emqx-ee@emqx-ee-0.emqx-ee-headless.default.svc.cluster.local','emqx-ee@emqx-ee-1.emqx-ee-headless.default.svc.cluster.local','emqx-ee@emqx-ee-2.emqx-ee-headless.default.svc.cluster.local'],stopped_nodes => []}

EMQX Operator 和 EMQX 集群安装参考: https://github.com/emqx/emqx-operator/blob/main/docs/en_US/getting-started/getting-started.md

关于 LoadBalancer 终结 TLS

由于华为 ELB 不支持 TCP 证书,所以请参考这篇文档解决 TCP 证书终结问题:https://github.com/emqx/emqx-operator/discussions/312

结语

至此,我们完成了在华为云 CCE 上部署 EMQX 集群的全部流程。EMQX Operator 可以帮助用户在 Kubernetes 环境上快速创建和管理 EMQX 集群,不仅极大简化部署和管理流程,也降低了管理和配置的专业技能要求,是用户快速体验云原生的最佳选择。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/category/emqx

在华为云 CCE 上部署 EMQX MQTT 服务器集群相关推荐

  1. 在阿里云 ACK 上部署 EMQX MQTT 服务器集群

    云进入以「应用为中心」的云原生阶段,Operator 模式的出现,则为 Kubernetes 中的自动化任务创建配置与管理提供了一套行之有效的标准规范.通过将运维知识固化成高级语言 Go/Java 代 ...

  2. 在华为云ECS上部署openGauss

    在华为云ECS上部署openGauss 这次手动安装了一遍openGauss,讲道理,挺累的... 一.操作环境 服务器端:openEuler 20.03 64bit with ARM 本地客户端:m ...

  3. 在阿里云上部署生产级别Kubernetes集群

    阿里云是国内非常受欢迎的基础云平台,随着Kubernetes的普及,越来越多的企业开始筹划在阿里云上部署自己的Kubernetes集群. 本文将结合实战中总结的经验,分析和归纳一套在阿里云上部署生产级 ...

  4. 华为云 UCS GitOps:轻松交付多集群云原生应用

    摘要:使用华为云 UCS GitOps 配置管理来交付您的多云应用. 本文分享自华为云社区<华为云 UCS GitOps:轻松交付多集群云原生应用>,作者:华为云云原生团队. 随着业务的全 ...

  5. Openstack云平台脚本部署之Ceph存储集群配置(十四)

    目录 一.简介 二.部署脚本 三.参考文档 四.源码 五.系列文章 一.简介 Openstack的后端存储对接Ceph分布式统一存储,将Glance镜像.Nova虚拟机及快照.Cinder-Volum ...

  6. go语言MQTT服务器(五)MQTT服务器集群

    go语言MQTT服务器(五)MQTT服务器集群 GOMQ服务器,写的不好,别见外 上面版本不考虑使用了 [这是最新版本] 一.节点间数据交互端口配置 二.配置两个节点,上面的节点间数据交互端口图也要修 ...

  7. Elasticsearch-03 CentOS7 / Windows上部署Elasticsearch5.6.16集群模式

    文章目录 概述 CentOS上部署ES集群 集群组成 关键配置信息 Master节点搭建 Slave1节点搭建 Slave2节点搭建 Windows 部署 ES集群 elasticsearch.yml ...

  8. 微软超融合私有云测试11-SCVMM2016部署之添加Hyper-V集群

    SCVMM支持管理多种Hypervisor,在先前版本中,支持Hyper-V,VMware vSphere,Citrix XenServer,在2016版本中取消了对Citrix XenServer的 ...

  9. 关于华为云平台上服务器虚拟机(银河麒麟服务器操作系统V10SP1)多网卡网络通信问题

    文章目录 一.问题背景 二.解决方法 1. 服务器虚拟机的网卡配置 2. 添加路由表和策略路由 3. 测试路由策略生效 4. 添加定时任务 5. 重启crond服务 一.问题背景 在某项目的华为云平台 ...

最新文章

  1. VC 中字符串比较和查找
  2. 工业级路由器和家用路由器的区别_工业路由器和普通家用路由器有什么区别啊?工业路由器好不好用啊?...
  3. asp.net日历控件My97DatePicker下载地址
  4. XPath CheatSheet
  5. 介绍几个flash游戏框架
  6. Github下载代码和运行
  7. 索尼便携式无线服务器,WF-SP900体验报告:2018索尼真无线产品中的顶端存在
  8. php 下载技巧,PHP 使用技巧集
  9. 【有限元分析】圣维南原理
  10. html提示更新浏览器的代码,IE9及以下浏览器升级提示
  11. 辅助进度控制的计算机软件是指,辅助进度控制的计算机软件是指以( )为核心的项目管理软件包。...
  12. php什么是耦合关系,什么是耦合
  13. java 先入先出_一道java的基础题:一个线程安全的后进先出队列
  14. android 读取单反相机,手机怎么直接读取相机照片更方便?
  15. [极客大挑战 2019]Http 1(修改HTTP请求包)
  16. gbd的简单使用(一)
  17. 处理文档用计算机配置文件,2017年自学考试计算机应用基础试题
  18. org.apache.flume.conf.ConfigurationException: Channel c1 not in active set.
  19. [转]Java可以拿來开发游戏吗?
  20. 回车与换行符的区别及python中使用

热门文章

  1. ai 如何导出html格式,Adobe Illustrator导出SVG的设置方法
  2. python文件夹在哪_Python文件夹与文件的相关操作(推荐)
  3. Linux 安装仿宋字体
  4. onenote的笔记本在windows10保存的路径
  5. Unity3d 在 twitter 转载(周报) 2018.11.10
  6. IOC AOP OOP拙见
  7. 微信小程序尺子样式滚动选择器组件
  8. 我的编程之路之初出茅庐(二)
  9. 前端检测图片加载失败,替换图片
  10. 使用Docker国内镜像源