在华为云 OSC 上快速部署 EMQX MQTT 集群

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 本文将介绍如何使用EMQX Kubernetes Operator在华为云OSC上快速发布并提供基于大规模分布式物联网消息服务器EMQX的MQTT订阅服务,实现运维的代码化、自动化、智能化。

EMQX Kubernetes Operator 是 EMQ 发布的一个封装、部署和管理工具,也是一个特定的应用控制器,方便 DevOps 人员在 Kubernetes 上编排 EMQX MQTT 消息服务集群,管理其生命周期。

华为云原生基础设施(云容器引擎 CCE、容器镜像服务 SWR、容器洞察引擎 CIE、智能边缘平台 IEF 等)通过云原生服务中心 (Operator Service Center,OSC) 对外开放云原生能力,包括弹性伸缩、多云部署、云边协同、应用级自动化运维等,全面支持企业架构云原生化。

本文将介绍如何使用 EMQX Operator 在 OSC 上快速发布并提供基于大规模分布式物联网消息服务器 EMQX 的 MQTT 订阅服务,实现运维的代码化、自动化、智能化。

OSC 介绍

OSC 是华为云面向服务提供商和服务使用者的云原生服务生命周期治理平台,提供大量开箱即用的云原生服务,支持服务的开发、发布、订阅、部署、升级、更新等,帮助用户简化云原生服务的生命周期管理。

商品服务生命周期 图1.png

OSC 具有以下优势:

  • 开箱即用

    OSC 联合生态伙伴提供了大量开箱即用的云原生服务,包括数据库、消息、缓存等通用中间件,以及新技术领域的 AI、大数据、高性能计算、边缘等应用,用户可以根据业务需要订阅。

  • 全域部署

    随着业务的发展,企业使用云服务部署场景在横向和纵向上都在不断拓展,横向上跨云部署成为业务常态,纵向上服务全域部署能力变得越来越重要,从核心区域和热点区域一直延伸到本地机房和业务现场。通过 OSC,用户可以将服务部署到与华为云连接的基础设施,例如部署在公有云不同 region 的容器集群和边缘集群。

  • 高效开发、自动运维

    容器化只是服务云原生化的第一步,服务部署之后需要治理,不仅包括监控、日志、告警等基本运维能力,还包括弹性伸缩、数据备份恢复、故障迁移、故障恢复等高级运维能力,这些能力是服务高 SLA 的必要条件。OSC 提供开箱即用的云原生运维能力,支持服务声明式对接,无需修改业务代码。

  • 应用级视图

    传统的运维方式应用比较原始,都聚焦在资源层级,没有应用统一视图。OSC 在实例详情页面可以查看本实例状态信息、配置信息、日志、监控信息,方便用户在一个页面查看实例相关的基础信息,无需切换到不同的运维平台。

  • 兼容社区服务规范

    OSC 服务规范兼容 Helm 和 Operator Framework 社区服务规范,Helm 和 Operator framework 是Kubernetes 生态中最常用的服务管理方式,很多已有的服务都是基于这两种方式开发,为了方便这些已有服务快速发布或者快速迁移到 OSC,使用 OSC 管理,OSC 的服务规范兼容 Helm 和 Operator Framework。

OSC 与其他华为云服务的关系 图2.png

EMQX 介绍

EMQX 企业版介绍

EMQX 企业版是一款「随处运行,无限连接,任意集成」企业级 MQTT 物联网接入平台,提供一体化的分布式 MQTT 消息服务和强大的 IoT 规则引擎,为高可靠、高性能的物联网实时数据移动、处理和集成提供动力,助力企业快速构建关键业务的 IoT 平台与应用。

EMQX 企业版 图3.png

其具有如下特性:

  • 多协议支持

    通过 MQTT、CoAP、LwM2M、WebSocket 或专有协议连接任何设备。

  • 一站式接入

    将大规模分布式的 MQTT Broker 与强大的内置 IoT 规则引擎相结合。

  • 关键业务可靠性

    为关键业务的物联网应用提供可靠的高性能数据移动、处理与集成。

  • 灵活数据集成

    轻松、灵活地集成物联网数据到 Kafka、RDS,以及 SAP 等企业系统。

EMQX Operator 介绍

Kubernetes Operator 是一种封装、部署和管理 Kubernetes 应用的方法。它使部署和运行应用所依赖的基础服务变得更简单。

EMQX Operator 图4.png

EMQX Operator 实现了对 EMQX 生命周期的管理,其具有如下特性:

  • 动态更新 EMQX 集群

    EMQX 集群运行时,更改集群实例配置,无需手动重启实例,服务无中断完成配置更新

  • 弹性高可用

    可以在不中断业务的情况下扩展 EMQX 集群

  • 热更新

    EMQX Operator 可以在不中断服务的情况下,帮助您快速、安全地升级 EMQX 集群

  • 运维简单

    EMQX Operator 可以对接 Prometheus,同时也支持把监控指标导出到 Prometheus 中

在 OSC 上部署 EMQX 服务

部署环境说明:

  • CCE 节点的操作系统为 Ubuntu
  • CCE 节点的规格 ≥ 2C8G
  • CCE 节点可以访问外网
:这里的价格只是为了演示,不是真实的价格

订阅 cert-manager

查找服务

登录 OSC 控制台,在服务目录中输入cert-manager,找到 cert-manager 证书管理。

查找服务 图5.png

订阅和购买

进入 cert-manager 证书管理,点击“订阅”。

订阅和购买 图6.png

点击“立即购买”。

立即购买 图7.png

完成支付。

完成支付 图8.png

最终在“已购买的服务”里面会显示刚刚的购买的 cert-manager。

已购买的服务 图9.png

部署 cert-manager

创建实例

在“我的服务”点击创建实例

点击创建实例 图10.png

填写基本信息

选择容器集群和选择要部署的命名空间,如果显示不存在则点击“创建容器集群”或者“创建命名空间”,然后选择下一步。

注:确保容器集群的节点可以访问外网

填写基本信息 图11.png

填写实例参数

选中”installCRDs“,然后选择下一步。

填写实例参数 图12.png

确认信息并提交

确认信息并提交 图13.png

稍等片刻,可以看到 cert-manager 服务实例创建成功。

服务实例创建成功 图14.png

订阅 EMQX Operator

查找服务

在“服务目录”中输入 emqx,找到 EMQX 消息中间件 Operator。

查找服务 图15.png

订阅和购买

进入 EMQX 消息中间件 Operator,点击“订阅”。

订阅和购买 图16.png

点击“立即购买”。

立即购买 图17.png

完成支付。

完成支付 图18.png

最终在“已购买的服务”里面会显示刚刚的购买的 EMQX 消息中间件 Operator。

已购买的服务 图19.png

部署 EMQX Operator

创建实例

在“我的服务”中点击“创建实例”。
创建实例 图20.png

填写基本信息

选择容器集群和选择要部署的命名空间,如果不存在则点击“创建容器集群”或者“创建命名空间”,然后选择下一步。

注:确保容器集群的节点可以访问外网

填写基本信息 图21.png

填写实例参数

选中”installCRDs“,然后选择下一步

填写实例参数 图22.png

确认信息并提交

确认信息并提交 图23.png

稍等片刻,EMQX 消息中间件 Operator 实例就可以成功创建。

Operator 实例创建成功 图24.png

查看实例信息

点击 emqx operator 服务。

点击 emqx operator 服务 图25.png

可以看到服务的基本信息。

服务的基本信息 图26.png

部署 EMQX 企业版实例

连接”云容器引擎”

登陆云容器引擎 CCE,在”集群管理“下点击进入集群。

点击进入集群 图27.png

在集群信息中,点击“CloudShell”图标,连接集群

连接集群 图28.png

部署 EMQX 企业版实例

实例的 yaml 文件如下:

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.5
    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": 200,
                "bandwidth_sharetype": "PER",
                "eip_type": "5_bgp"
              }'
      spec:
        type: LoadBalancer
EOF

检查 EMQX 企业版状态

kubectl get pods
kubectl exec -it emqx-ee-0 -c emqx -- emqx_ctl status
kubectl exec -it emqx-ee-0 -c emqx -- emqx_ctl cluster status

检查 EMQX 企业版状态 图29.png

连接 EMQX 企业版

连接 EMQX 企业版 图30.png

用户名:admin 密码:public Dashboard: ${EXTERNAL-IP}:18083

连接 EMQX 企业版 图31.png

总结

OSC 兼容 Helm、Operator Framework 等第三方生态作为服务包,可以降低已有业务搬迁的门槛,实现从服务开发、基本服务实例部署到后续实例生命周期维护和运维操作的完整覆盖。通过 OSC 平台,服务提供商可以方便快捷地发布服务,服务使用者则只需要订阅和部署,实现开箱即用。

而 EMQX Operator 提供了对 EMQX 的全生命周期管理,除了对持久化数据进行备份和恢复的基础能力,害提供了对 EMQX Plugin 的独立部署、管理、配置持久化能力。用户可以动态更新 Licence 和 SSL 等,实现包括高可用、扩容、异常处理的自动化运维。

OSC 与 EMQX Operator 的结合,为用户提供了一种更加便捷的选择,极大降低了 EMQX 企业版的部署和运维成本。

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

原文链接:https://www.emqx.com/zh/blog/deploying-mqtt-cluster-on-huawei-cloud-osc

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
2月前
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
111 1
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
3月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
消息中间件
实践部署《云消息队列RabbitMQ实践》测评
《云消息队列RabbitMQ实践》解决方案原理清晰,尤其在异步通信和解耦方面解释详尽。对初学者而言,部分术语如消息持久化、确认机制及集群性能优化可更细致。部署过程文档详实,涵盖主要环节,但插件配置等细节存在环境问题,需查阅社区资料解决。该方案展示了RabbitMQ的高吞吐量、灵活路由和可靠消息传递能力,但在高可用性和消息丢失处理上可提供更深入配置建议。适用于高并发和解耦场景,如订单处理、日志收集,有助于提升系统可扩展性。总体部署体验良好,实用性较强。
54 0
|
4月前
|
消息中间件 存储 负载均衡
|
4月前
|
消息中间件 存储 负载均衡
"RabbitMQ集群大揭秘!让你的消息传递系统秒变超级英雄,轻松应对亿级并发挑战!"
【8月更文挑战第24天】RabbitMQ是一款基于AMQP的开源消息中间件,以其高可靠性、扩展性和易用性闻名。面对高并发和大数据挑战时,可通过构建集群提升性能。本文深入探讨RabbitMQ集群配置、工作原理,并提供示例代码。集群由多个通过网络连接的节点组成,共享消息队列,确保高可用性和负载均衡。搭建集群需准备多台服务器,安装Erlang和RabbitMQ,并确保节点间通信顺畅。核心步骤包括配置.erlang.cookie文件、使用rabbitmqctl命令加入集群。消息发布至任一节点时,通过集群机制同步至其他节点;消费者可从任一节点获取消息。
51 2
|
4月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
92 0
|
4月前
|
消息中间件 存储 Kubernetes
k8s快速部署rocketMq及rocketMq-console-ng
k8s快速部署rocketMq及rocketMq-console-ng
|
5月前
|
消息中间件 Prometheus 监控
消息队列 MQ使用问题之如何将旧集群的store目录迁移到新集群
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 RocketMQ
MetaQ/RocketMQ 原理问题之当消费集群规模较大时,处理分配不到队列的Consumer的问题如何解决
MetaQ/RocketMQ 原理问题之当消费集群规模较大时,处理分配不到队列的Consumer的问题如何解决
|
4月前
|
消息中间件 API 数据安全/隐私保护
就软件研发问题之RocketMQ ACL 2.0加强集群组件间访问控制的问题如何解决
就软件研发问题之RocketMQ ACL 2.0加强集群组件间访问控制的问题如何解决

热门文章

最新文章