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

news2024/11/16 23:40:18

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

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

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

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

云平台简介:阿里云 ACK

ACK:容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理;其整合了阿里云虚拟化、存储、网络和安全能力,助力企业高效运行云端 Kubernetes容器化应用。详见:什么是容器服务Kubernetes版

创建 ACK 集群

创建 Kubernetes 群集

登录阿里云 容器服务-Kubernetes,选择创建集群,注意 EMQX Operator 要求 Kubernetes 版本>=1.20.0
2

根据需要选择合适的配置

3

访问 Kubernetes 群集

4

集群创建完成之后,在连接信息页面有 kubeconfig 文件信息,可以使用 kubectl 和 kubeconfig 文件访问集群。

LoadBalancer 配置

支持在 Terway 网络模式下,通过 annotation 将 Pod 直接挂载到 CLB 后端,提升网络转发性能。

service.beta.kubernetes.io/backend-type:"eni"

StorageClass 配置

使用如下命令查看当前集群可用的 storageClass:

kubectl get sc

可以看到集群默认创建了多个可用的 storageClass, 本文档部署 EMQX 时选取的第一个 storageClass: alibabacloud-cnfs-nas

使用 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.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

查看集群状态

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

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

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

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

相关文章

欧姆龙NJ/NX基于Sysmac Studio的EIP通讯 方式

目录 Omorn - NJ301-1100 AND NX102-9000 EIP - Sysmac Studio 测试案例IP 创建变量类型 通讯配置 控制器程序下载 通讯测试 Omorn - NJ301-1100 AND NX102-9000 EIP - Sysmac Studio 测试案例IP 创建变量类型 通讯配置 控制器程序下载 通讯测试 Omorn - NJ301-1100…

Go语言快速入门笔记

文章目录import匿名导包和别名导包的方式defer语句数组和动态数组固定长度数组切片&#xff08;动态数组&#xff09;切片的容量追加和截取map面向对象struct继承多态interface空接口万能类型与类型断言机制变量的内置pair结构变量结构reflect包(反射)reflect反射解析结构体标签…

【Java毕设】基于idea Java的在线考试系统(附源码+课件)

项目介绍&#xff1a; 本系统是一个基于java的在线考试系统。它的用户由学生、教师和系统管理员组成。学生登陆系统可以进行在线测试和成绩查询。当学生登陆时&#xff0c;系统会随机地为学生选取试题组成考卷。当学生提交考卷后&#xff0c;系统会自动批改客观题&#xff0c;…

html实现爱情告白(附源码)

文章目录1.设计来源1.1 主界面1.2 执子之手&#xff0c;与子偕老1.3 死生契阔&#xff0c;与子成说1.4 生当复来归&#xff0c;死当长相思1.5 自君之出矣&#xff0c;明镜暗不治1.6 思君如流水&#xff0c;何有穷已时1.7 南有乔木&#xff0c;不可休思1.8 汉有游女&#xff0c;…

快递查询工具,一键查物流,派件时效怎么分析

快递发货后&#xff0c;该如何快速查询到物流信息、比如怎么分析派件时效呢&#xff1f;今天小编给大家分享一个新的技巧&#xff0c;它支持多家快递&#xff0c;一次能查询多个单号物流&#xff0c;还能对查询到的物流进行分析、导出以及筛选&#xff0c;下面一起来试试吧。 …

3000万人气的腾格尔,会和金鸡奖提名电影《巴林塔娜》合作吗

刚刚结束的2022年11月19日&#xff0c;对于“草原歌神”腾格尔来说&#xff0c;注定是要被载入史册的一天。2022年11月19日&#xff0c;是卡特尔世界杯开幕式的前一夜&#xff0c;腾格尔老师也通过某音平台&#xff0c;开启了自己的线上演唱会。 说起明星们的演唱会&#xff0c…

redis 登录案例

下图就是登录controller Controller public class LoginController {RequestMapping("/login")public String Login(String username, String password, HttpServletResponse response){System.out.println(username);System.out.println(password);//判断账号密码 …

微信小程序 | IM交友聊天功能大汇总

&#x1f4cc;个人主页&#xff1a;个人主页 ​&#x1f9c0; 推荐专栏&#xff1a;小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏&#xff01;从个人到商业的全套开发教程&#xff0c;实打实的干货分享&#xff0c;确定不来看看&#xff1f; …

关系数据库系统中的 NULL 值及其用途

在数据库中&#xff0c;NULL值具有非常特殊的含义。因此&#xff0c;重要的是要理解NULL值不同于零值或包含空格的字段。在今天的博客中&#xff0c;我们将探讨 NULL 值的含义以及如何在 Navicat Premium 中使用NULL。 什么是NULL&#xff1f; 应该注意的是&#xff0c;NULL值…

Linux上部署Kubectl(k8s)

Linux上部署Kubectl(k8s) 1.k8s简介 1.1 Kubernetes 概念 在 k8s 上进行部署前&#xff0c;首先需要了解一个基本概念 Deployment Deployment 译名为 部署。在k8s中&#xff0c;通过发布 Deployment&#xff0c;可以创建应用程序 (docker image) 的实例 (docker container)…

跑步需要哪些运动装备?跑步爱好者者的装备推荐

一开始我认为跑步是不需要装备的&#xff0c;毕竟是基础运动&#xff0c;但问了一下身边的运动大神才明白在长期的跑步锻炼&#xff0c;特别是长跑的过程中好的装备不但可以保护你免受伤害&#xff0c;还能帮助你更好的掌握运动状态&#xff0c;进行合理的锻炼下面我就给大家列…

[附源码]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…

vite+vue-router4.x配置动态路由

踩过的坑&#xff1a; import直接导入组件; router.addRoute 并不能一次性给你导入&#xff08;即不是vue-router3.x以下的addRoutes&#xff09;&#xff1b; addRoute后页面空白&#xff1b; 直接上才艺&#xff01; 我的设计思路是登录后获取token&#xff0c;并存入cookie…

bizlog通用操作日志组件(代码分析篇)

引言 在上篇博客中介绍了通用操作日志组件的使用方法&#xff0c;本篇博客将从源码出发&#xff0c;学习一下该组件是如何实现的。 代码结构 该组件主要是通过AOP拦截器实现的&#xff0c;整体上可分为四个模块&#xff1a;AOP模块、日志解析模块、日志保存模块、Starter模块…

企业小程序商城的推广方式有哪些_分享小程序商城的作用

其实搭建小程序商城比较容易&#xff0c;难的是后期的运营。要想办法进行引流&#xff0c;用户运营伙伴就给大家介绍一些引流推广的方法。 1、利用微信好友、微信群和朋友圈 可以让用户分享小程序给微信好友或微信群&#xff0c;这是吸引新用户的最快方法。除此之外&#xff0…

Kettle入门到实战

简介 Kettle是一个方便ETL(数据的抽取&#xff0c;装换&#xff0c;装载)开源框架。 官网 kettle下载、kettle源码下载 – Kettle中文网 百度网盘下载 链接&#xff1a;https://pan.baidu.com/s/1C-izMX_3KMkRb5hhdj66xg 提取码&#xff1a;yyds --来自百度网盘超级会员…

go radix tree

Radix Tree Search Insert Insert ‘water’ at the root Insert ‘slower’ while keeping ‘slow’ Insert ‘test’ which is a prefix of ‘tester’ Insert ‘team’ while splitting ‘test’ and creating a new edge label ‘st’ Insert ‘toast’ while splitti…

java 多线程()—— 线程同步=队列+锁

一、线程同步 队列 锁 同步就是多个线程同时访问一个资源。 那么如何实现&#xff1f; 队列锁。 想要访问同一资源的线程排成一个队列&#xff0c;按照排队的顺序访问。访问的时候加上一个锁&#xff08;参考卫生巾排队锁门&#xff09;&#xff0c;访问完释放锁。 二、 不…

gitblit 搭建本地 git 仓库

目录 一、简介 二、准备工作 1.安装Java 2.下载gitblit 3.创建资料目录 三、修改配置 1.git.repositoriesFolder 2.server.httpPort 3.server.httpBindInterface 4.installService.cmd 四、gitblit图标显示异常 结束 一、简介 Gitblit是一个用于管理&#xff0c;查…

数据结构与算法这么重要还不会?字节内部笔记来帮你轻松拿下!

对任何专业技术人员来说&#xff0c;理解数据结构都非常重要。作为软件开发者&#xff0c;我们要能够用编程语言和数据结构来解决问题。编程语言和数据结构是这些问题解决方案中不可或缺的一部分。如果选择了不恰当的数据结构&#xff0c;可能会影响所写程序的性能。因此&#…