在腾讯云 TKE 上部署 EMQX MQTT 服务器集群

news2025/1/12 22:00:19

云进入以「应用为中心」的云原生阶段,Operator 模式的出现,为 Kubernetes 中的自动化任务创建配置与管理提供了一套行之有效的标准规范。针对大规模分布式物联网 MQTT 消息服务器 EMQX 全生命期管理的自动化管理工具 EMQX Kubernetes Operator(本文中简称 EMQX Operator)应运而生。它作为 Kubernetes 上的自定义控制器运行,并与 Kubernetes API 服务器(kube-apiserver)进行通信,将高层描述转换为正常的 Kubernetes 资源,以保持所需的应用程序状态。

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

1

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

云平台简介:腾讯云 TKE

TKE:腾讯云容器服务(Tencent Kubernetes Engine,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务。腾讯云容器服务完全兼容原生 kubernetes API ,扩展了腾讯云的云硬盘、负载均衡等 kubernetes 插件,为容器化的应用提供高效部署、资源调度、服务发现和动态伸缩等一系列完整功能,解决用户开发、测试及运维过程的环境一致性问题,提高了大规模容器集群管理的便捷性,帮助用户降低成本,提高效率。

创建 TKE 集群

创建 Kubernetes 群集

登录腾讯云, 选择云产品 -> 容器服务,点击创建, 选择标准集群,EMQX Operator 要求 Kubernetes 版本>=1.20.0,因此我们在此选择 Kubernetes 选择 1.22.5 ,网络与其他资源信息根据自身需求来制定。

访问 Kubernetes 集群

2

集群创建完成之后,在基本信息页面开启外网访问或者内网访问,即会生成 kubeconfig 文件,可以使用kubectl 和 kubeconfig 文件访问集群。

LoadBalancer 配置

非直连模式下 CLB 和 Service 存在两层 CLB,性能有一定损失,开启 CLB 直连 pod 可以提升请求转发性能,需要在 Service 的 annotations 里面添加以下注解: 直连模式配置说明

service.cloud.tencent.com/direct-access: "true"

备注: 开启直连模式需要在 kube-system/tke-service-controller-config ConfigMap 中新增 GlobalRouteDirectAccess: “true” 以开启 GlobalRoute 直连能力。

创建 StorageClass

点击集群名称进入集群详情页面,点击存储 -> StorageClass 创建需要的StorageClass, 具体步骤参考:创建StorageClass

使用 EMQX Operator 部署 EMQX 集群

部署 cert-manager

参考 cert-manager安装文档: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:
    "apps.emqx.io/instance": "emqx-ee"
  annotations:
    service.cloud.tencent.com/direct-access: "true" ##开启 CLB 直连 Pod
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: emqx-test
EOF

查看集群状态

$ 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.6 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 集群安装参考

使用 LB 终结 TCP mTLS 方案

目前腾讯云 CLB 支持 终结 TCP TLS ,如需要使用 LB 终结 TCP mTLS 请参考这篇文档:LB 终结 TCP mTLS 方案

备注: 此文档详细解释了使用 EMQX Operator 在腾讯云 TKE 上部署 EMQX 集群的步骤,另外还支持配置 LB 直连 Pod,进一步提升转发性能。

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

原文链接:https://www.emqx.com/zh/blog/deploying-mqtt-cluster-on-tencent-tke

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

11.数组的分类和定义

1.数组的概念 数组是若干个相同类型 的变量在内存中有序存储的集合。 int a[10];//定义了一个整型的数组a&#xff0c;a是数组的名字&#xff0c;数组中有10个元素&#xff0c;每个元素的类型都是int类型&#xff0c;而且在内存中连续存储。 这十个元素分别是a[0] , a[1] , … …

[附源码]java毕业设计鲜花销售管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

同花顺_代码解析_技术指标_Z_2

本文通过对同花顺中现成代码进行解析&#xff0c;用以了解同花顺相关策略设计的思想 目录 ZNZ_CYC ZNZ_CYD ZNZ_CYDD ZNZ_CYDK ZNZ_CYE1 ZNZ_CYF1 ZNZ_CYMR ZNZ_CYOBV ZNZ_CYQKL ZNZ_CYQKR ZNZ_CYR ZNZ_CYS ZNZ_DKBL ZNZ_CYC 指南针成本均线 技术分析非常重视成…

【PinkCAx】可视化工具开发记录与总结

-----------PinkCAx----------- 仅以此篇&#xff0c;记录我的一次可视化软件开发尝试点滴。 简介 PinkCAx是一款采用Python语言编写的&#xff0c;基于QT5VTK架构的三维可视化工具。 该工具目前的功能如下&#xff1a; 基本操作 网格文件的打开与保存&#xff08;支持STL、P…

Packet Tracer - 确定 DR 和 BDR

地址分配表 设备 接口 IP 地址 子网掩码 RA G0/0 192.168.1.1 255.255.255.0 Lo0 192.168.31.11 255.255.255.255 RB G0/0 192.168.1.2 255.255.255.0 Lo0 192.168.31.22 255.255.255.255 RC G0/0 192.168.1.3 255.255.255.0 Lo0 192.168.31.33 255.25…

sqli-labs/Less-38

这一关有变成了get请求的题目了 我们先判断一下是否属于数字型注入 输入如下 id1 and 12 回显如下 属于字符型 然后判断一下是单引还是双引 输入1 报错了 从报错信息可知 这是一个单引号注入型 我们去佐证一下呗 输入1-- 回显如下 可以 确实是单引号注入型 然后我选择使用…

SeriLog日志框架的应用

C#中当前流行的日志框架有NLog、Log4Net、及SeriLog&#xff0c;在这里我们简单介绍SeriLog日志框架的应用 1、日志基础 &#xff08;1&#xff09;、日志等级 &#xff08;2&#xff09;、日志接收器 序号 接收器 说明 1 Console 输出到控制台 2 Debug 输出到VS的Debug窗口 3…

TCP沾包问题

TCP流式协议&#xff1a;所谓流式协议&#xff0c;即协议的内容是像流水一样的字节流&#xff0c;内容与内容之间没有明确的分界标志&#xff0c;需要我们人为地去给这些协议划分边界。 我们说 TCP 是流式协议究竟意味着什么&#xff1f; - 云社区 - 腾讯云 (tencent.com) 网…

DJ12-1 8086系列指令系统-1

指令&#xff1a;能够被计算机识别并执行的二进制代码。 指令系统&#xff1a;所有指令的集合。 指令按功能分类&#xff1a;数据传送类、算术运算类、逻辑运算和移位、串操作、控制转移类、处理器控制。 一、8086 指令格式 1. 指令的一般格式 在《计组》里面&#xff0c;我…

计算机网络——第六章笔记(2)

TCP 连接的建立 三次握手建立连接&#xff1a; 1、一方&#xff08;server&#xff09;被动地等待一个进来的连接请求 2、另一方&#xff08;the client&#xff09;通过发送连接请求&#xff0c;设置一些参数 3、服务器方回发确认应答 4、应答到达请求方&#xff0c;请求方最…

[Spring Cloud] Hystrix三大特性--降级,熔断,隔离

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…

高级测试工程师必备技术:用Git版本控制自动化测试代码

初识Git版本控制 自动化测试代码反复执行&#xff0c;如果借用持续集成工具会提高测试效率&#xff0c;那么需要我们把自动化测试代码发布到正式环境中&#xff0c;这时候用Git版本控制工具高效、稳定、便捷。 分布式版本控制 Git可以把代码仓库完整地镜像下来&#xff0c;有…

Mybatis整合MP

Mybatis整合MP 案例准备&#xff1a; 创建测试表&#xff1a; -- 创建测试表 CREATE TABLE tb_user (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键ID,user_name varchar(20) NOT NULL COMMENT 用户名,password varchar(20) NOT NULL COMMENT 密码,name varchar(30) …

kafka性能指南

kafka性能指南 1.绪论 首先是epoll模型&#xff0c;epoll使其在框架上得以使用mmp和回写高性能。 epoll模型具体可以看linuxIO那一个笔记&#xff0c;这里简单讲一下 首先是epoll模型&#xff0c;模型要求有一组fd由单独线程监控&#xff0c;然后app去干别的事&#xff0c;当…

Arduino开发实例-MAX30100 脉搏血氧仪传感器驱动

MAX30100 脉搏血氧仪传感器驱动 1、MAX30100介绍 MAX30100 脉搏血氧仪和心率传感器是一款基于 I2C 的低功耗即插即用生物识别传感器。 MAX30100 是一款集成脉搏血氧饱和度和心率监测传感器解决方案。 它结合了两个 LED、一个光电探测器、优化的光学器件和低噪声模拟信号处理,…

【蓝桥杯Web】第十四届蓝桥杯(Web 应用开发)模拟赛 2 期 | 精品题解

&#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; &#x1f5a5;️ 蓝桥杯专栏&#xff1a;蓝桥杯题解/感悟 &#x1f5a5;️ TS知识总结&#xff1a;十万字TS知识点总结 &#x1f449; 你的一键三连是我更新的最大动力❤️&#xff01; &…

降本增效利器?Share Creators智能数字资产管理系统真香!

降本增效似乎是一个持续又永久的话题。尤其在今年&#xff0c; 显得格外的重要~ 疫情不知不觉已经伴随了我们三年&#xff0c;在各行各业都受到了疫情所带来巨大冲击的背景下&#xff0c;降本增效对很多企业来说不再是锦上添花&#xff0c;而可能是一条唯一的出路。 随着市场…

荧光素PEG活性酯,FITC-PEG-NHS,FITC-PEG-SCM,荧光素聚乙二醇琥珀酰亚胺乙酸酯

中文名称&#xff1a;荧光素聚乙二醇琥珀酰亚胺乙酸酯 英文名称&#xff1a;FITC-PEG-NHS,FITC-PEG-SCM 分子量&#xff1a; 1K,2K,3.4K,5K,10K(黄色、橙黄色或者橘黄色固体或者粉末) 端基取代率&#xff1a;≥90% 原料分散系数PDI&#xff1a;≤1.05 纯度&#xff1a;98%…

Vue简单示例——weex跨平台解决方案

简单介绍&#xff1a; Weex的出现主要解决了Web开发的应用频繁发布版本和多端研发两个问题&#xff0c;同时解决了前端语言性能差异和显示效果受限的问题。 什么是weex&#xff1a; Weex是使用流行的Web开发体验来开发高性能原生应用框架。使开发者可以用JS语言和前端开发经…

若依框架解读(微服务版)—— 3.验证码与登录

验证码 查看验证码的请求&#xff1a; 之前已经讲过http://localhost/dev-api/code会在前端重写为http://localhost:8080/code。 请求第一步会进入网关模块 网关相关知识&#xff1a;Gateway基于的WebFlux框架&#xff0c;与我们平时用的WebMVC是不太一样的。网关由Route&#…