• 在华为云 CCE 上部署 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 在华为云 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-ee
      labels:
        "foo": "bar"
    spec:
      persistent:
        storageClassName: csi-disk
        resources:
          requests:
            storage: 1Gi
        accessModes:
        - ReadWriteOnce
      emqxTemplate:
        image: emqx/emqx-ee:4.4.6
        serviceTemplate:
          metadata:
            annotations:
              kubernetes.io/elb.pass-through: "true"
              kubernetes.io/elb.class: union
              kubernetes.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

  • 相关阅读:
    数据结构学习笔记(二)----线性表(上)
    Eclipse配置tomcat
    Docker快速入门【极速浏览版】
    工业智能网关BL110应用之四十七: 数据上传云平台 MQTT Client One的配置
    Final Cut Pro X 10.6.10 跨行小白都能看懂的安装教程
    25.2 MySQL 运算符
    微服务项目实战-黑马头条(三):APP端文章详情
    含文档+PPT+源码等]精品基于java开发的航空订票系统SSM[包运行成功]Java毕业设计SSM项目源码
    Linux安装及使用
    项目成本管理
  • 原文地址:https://blog.csdn.net/emqx_broker/article/details/127109907