边开飞机边换引擎?我们造了个新功能保障业务流量无损迁移

简介: 容器化部署应用可以降低企业成本,提升研发效率,解放运维人员。据 Gartner 预计,到 2022 年,将有 75% 的企业将在生产中运行容器化应用程序。Kubernetes 是企业部署容器化应用的首选框架。由于 Kubernetes 部署及运维的复杂性,越来越多的客户选择将业务从 ECS 或者自建的 Kubernetes 迁移到阿里云托管版 Kubernetes —— ACK 中。但是,如何保证业务流量的平滑迁移成为一大挑战。

头图.png

作者 | 顾静(子白)
来源 | 阿里巴巴云原生公众号

容器化部署应用可以降低企业成本,提升研发效率,解放运维人员。据 Gartner 预计,到 2022 年,将有 75% 的企业将在生产中运行容器化应用程序。Kubernetes 是企业部署容器化应用的首选框架。由于 Kubernetes 部署及运维的复杂性,越来越多的客户选择将业务从 ECS 或者自建的 Kubernetes 迁移到阿里云托管版 Kubernetes —— ACK 中。但是,如何保证业务流量的平滑迁移成为一大挑战。

Cloud Controller Manager(CCM)是 ACK 的一个系统核心组件,负责对接 Kubernetes 与云上基础产品如 CLB、VPC、DNS 等。当 Service 的类型设置为 Type=LoadBalancer 时,CCM 会为该 Service 创建或配置阿里云负载均衡 CLB。当 Service 对应的后端 Endpoint 或者集群节点发生变化时,CCM 会自动更新 CLB 的后端虚拟服务器组。此外,CCM 还提供了许多阿里云注解,支持丰富的负载均衡能力。

近期 CCM 发布了一个新特性——支持在同一个 CLB 后端挂载集群内节点和集群外 ECS,借助这一特性可以解决业务容器化过程中流量平滑迁移的难题

场景一:应用容器化改造(流量平滑迁移)

对于一个 CLB,支持将流量转发至集群内及集群外节点

1.png

1)操作步骤

  • 登录 CLB 控制台创建 CLB,记录 CLB ID ("lb-xxxxx")
  • 创建 Service

设置 service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners 为 false,不管理监听信息。

CCM 会自动创建对应的虚拟服务器组。

cat <<EOF |kubectl apply -f -
apiVersion: v1
kind: Service
metadata:annotations:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxx"service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: "false"labels:app: nignxname: my-nginx-svcnamespace: default
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: nginxtype: LoadBalancer
EOF
  • 登录 CLB 控制台,创建监听并关联虚拟服务器组
  • 登录 CLB 控制台,手动在虚拟服务器组中添加集群外 ECS 并设置权重

2)预期结果

配置完成后,在 CLB 的虚拟服务组里既可以看到集群内的节点,也可以看到集群外的 ECS。集群内应用进行扩缩容时,集群外的 ECS 节点不受影响。

2.png

场景二:金丝雀发布

支持金丝雀发布,将流量按比例转发至集群内及集群外节点

迁移过程中,往往需要逐步将流量从存量 ECS 迁往 Kubernetes 集群中。CCM 支持通过 annotationservice.beta.kubernetes.io/alicloud-loadbalancer-weight为 Kubernetes 集群配置权重,从而实现流量的逐步迁移。

3.png

1)注意事项

  • 不能跨 CLB 复用虚拟服务器组
  • 一个虚拟服务器组只能与一个端口关联
  • 集群内节点权重由 CCM 组件设置,集群外 ECS 权重需要用户手动设置

2)操作步骤

  • 登录 CLB 控制台创建 CLB、监听及虚拟服务器组,记录 CLB ID ("lb-xxxx") 及虚拟服务器组 Id ("rsp-xxx")
  • 手动在虚拟服务器组中添加集群外 ECS 并设置权重
  • 创建 Service
apiVersion: v1
kind: Service
metadata:annotations:service.beta.kubernetes.io/alicloud-loadbalancer-id: "lb-xxxxx"service.beta.kubernetes.io/alicloud-loadbalancer-vgroup-ids: "80:rsp-xxx"# 集群内部权重为20%service.beta.kubernetes.io/alicloud-loadbalancer-weight: "20"name: nginx-svcnamespace: default
spec:ports:- name: httpport: 80protocol: TCPtargetPort: 80selector:app: nginxsessionAffinity: Nonetype: LoadBalancer

3)预期结果

配置完成后,在 CLB 的虚拟服务组里既可以看到集群内的节点,也可以看到集群外的 ECS,集群节点的权重按照 annotation 配置。集群内应用进行扩缩容时,集群外的 ECS 节点不受影响。

场景三:多集群业务流量多活与灾备

对于一个 CLB,支持将流量转发至多个 Kubernetes 集群内

企业用户会采取多种措施以保障应用的高可用性,如创建多个集群进行备份、容灾等。这要求业务流量可以通过一个 CLB 接入多个 Kubernetes 集群中,并且支持为 Kubernetes 集群设置不同的权重,如下图所示。

4.png

1)注意事项

  • 不能跨 CLB 复用虚拟服务器组
  • 一个虚拟服务器组只能与一个端口关联
  • 两个集群均已配置 Cluster Id,否则两个集群中的 service 需要不同名称

2)操作步骤

  • 登录 CLB 控制台创建 CLB、监听及虚拟服务器组,记录 CLB ID ("lb-xxxx")  及虚拟服务器组 Id ("rsp-xxx")
  • 集群 A 中创建 Serivce-A,权重设置为 20%
apiVersion: v1
kind: Service
metadata:annotations:service.beta.kubernetes.io/alicloud-loadbalancer-id: "lb-xxxxx"service.beta.kubernetes.io/alicloud-loadbalancer-vgroup-ids: "80:rsp-xxx"service.beta.kubernetes.io/alicloud-loadbalancer-weight: "20"name: service-Anamespace: default
spec:ports:- name: httpport: 80protocol: TCPtargetPort: 80selector:app: nginxsessionAffinity: Nonetype: LoadBalancer

3)预期结果

配置完成后,在 clb 的虚拟服务组里既可以看到集群 A 内的节点,也可以看到集群 B 的节点。集群节点的权重按照 annotation 自动设置。集群内应用进行扩缩容时,CLB 后端虚拟服务器组会自动更新。

总结

出于降本增效的考虑,越来越多的企业采用容器化方式部署应用。在业务迁移过程中,如何保障业务流量不受损成为一大难题。对于电商类应用而言,业务流量下跌往往会导致交易量下跌,造成重大损失。游戏类应用对业务流量也十分敏感,短暂的流量中断都会明显地影响游戏用户体验;交通类应用的流量下跌会影响交通流量管制、交通故障排险效率。保障业务流量不受损是保障用户业务正常运转的底线。

CCM 发布的支持在同一个 CLB 后端挂载集群内节点和集群外 ECS 的功能,可以一举解决迁移过程中流量中断的难题。同时,还支持将业务流量转发至多个 Kubernetes 集群内,支撑备份、容灾等需求,保障业务高可用。

原文链接

本文为阿里云原创内容,未经允许不得转载。

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

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

相关文章

专访百度集团副总裁袁佛玉:科技创新对普惠金融正在充分发挥“乘数效应”

图为百度集团副总裁袁佛玉在发表演讲 “随着我国数字经济的腾飞&#xff0c;科技创新正在充分发挥对于普惠金融的“乘数效应”&#xff0c;加速普惠金融拓展的深度和广度。”百度集团副总裁袁佛玉在10月22日举办的2021金融街论坛“‘一带一路’金融减贫论坛”上表示。 袁佛玉…

Spring Cloud Stream 体系及原理介绍

简介&#xff1a; Spring Cloud Stream在 Spring Cloud 体系内用于构建高度可扩展的基于事件驱动的微服务&#xff0c;其目的是为了简化消息在 Spring Cloud 应用程序中的开发。 作者 | 洛夜 来源 | 阿里巴巴云原生公众号 Spring Cloud Stream在 Spring Cloud 体系内用于构建高…

工商银行分布式服务C10K场景的解决方案

简介&#xff1a; 未来&#xff0c;中国工商银行将持续致力于 Dubbo 的金融级规模化应用。 作者&#xff1a;颜高飞&#xff0c;微服务领域架构师&#xff0c;主要从事服务发现、高性能网络通信等研发工作&#xff0c;擅长 ZooKeeper、Dubbo、RPC 协议等技术方向。 Dubbo是一款…

使用html() undefined_SweetAlert2使用教程

SweetAlert2是一款功能强大的纯Js模态消息对话框插件。SweetAlert2用于替代浏览器默认的弹出对话框&#xff0c;它提供各种参数和方法&#xff0c;支持嵌入图片&#xff0c;背景&#xff0c;HTML标签等&#xff0c;并提供5种内置的情景类&#xff0c;功能非常强大。SweetAlert2…

埃森哲携手阿里云,采用K8s容器云服务为客户提供无限弹性

简介&#xff1a; 埃森哲作为全球领先的专业服务公司&#xff0c;在数字化、云计算等领域拥有全球领先的能力&#xff0c;我们在多年的实际客户项目中&#xff0c;找到并沉淀出了适合企业数字化转型的方法论&#xff0c;积累了丰富的落地经验。 作者&#xff1a;姚迪、周警伟 …

4阶范德蒙德行列式例题_线性代数入门——“爪型行列式”的计算及其应用

系列简介&#xff1a;这个系列文章讲解线性代数的基础内容&#xff0c;注重学习方法的培养。线性代数课程的一个重要特点(也是难点)是概念众多&#xff0c;而且各概念间有着千丝万缕的联系&#xff0c;对于初学者不易理解的问题我们会不惜笔墨加以解释。在内容上&#xff0c;以…

如何使用Arthas提高日常开发效率?

简介&#xff1a; 1. Arthas有什么功能&#xff0c;怎么用&#xff0c;请看&#xff1a;Arthas使用手册 2. Arthas命令比较复杂&#xff0c;一个帮助生成命令的IDEA插件&#xff1a;arthas idea plugin 使用文档 3. 基于Arthas实现的简单好用的热部署插件&#xff1a;ArthasHot…

stringutils 用哪个包 apache spring_spring整合mq、jsonp跨越、httpclient工具的使用

训练大纲(第087天)大家如果想快速有效的学习&#xff0c;思想核心是“以建立知识体系为核心”&#xff0c;具体方法是“守破离”。确保老师课堂上做的操作&#xff0c;反复练习直到熟练。第173次(ActiveMQ)学习主题&#xff1a;ActiveMQ学习目标&#xff1a;1 掌握什么是spring…

几种Java常用序列化框架的选型与对比

简介&#xff1a; 序列化与反序列化是我们日常数据持久化和网络传输中经常使用的技术&#xff0c;但是目前各种序列化框架让人眼花缭乱&#xff0c;不清楚什么场景到底采用哪种序列化框架。本文会将业界开源的序列化框架进行对比测试&#xff0c;分别从通用性、易用性、可扩展性…

12v小型电机型号大全_电动机型号参数大全,再也不怕看不懂电机型号了

电动机型号是便于使用、设计、制造等部门进行业务联系和简化技术文件中产品名称、规格、型式等叙述而引用的一种代号。下面为大家介绍电动机型号含义等信息。1电动机型号组成及含义由电机类型代号、电机特点代号、设计序号和励磁方式代号等四个小节顺序组成。1、类型代号是表征…

基于DataWorks搭建新零售数据中台

文章作者&#xff1a;许日&#xff08;欢伯&#xff09;&#xff0c;在2016年盒马早期的时候&#xff0c;转到盒马事业部作为在线数据平台的研发负责人&#xff0c;现任阿里云计算平台DataWorks建模引擎团队负责人。 文章简介&#xff1a;本篇文章向大家分享新零售企业如何基于…

身份云平台 Authing 完成 2300 万美元 A 轮融资

10 月 24 日&#xff0c;身份云平台 Authing 宣布完成 2300 万美元 A 轮融资。本轮融资由老虎环球基金领投&#xff0c;鼎晖VGC&#xff08;创新与成长基金&#xff09;、声网 Agora、老股东 GGV纪源资本和奇绩创坛跟投&#xff0c;跃为资本担任独家财务顾问。Authing 表示&…

大数据计算存储资源池_管家实践:轻松玩转大数据计算服务

以下是直播内容精华整理&#xff0c;主要包括以下四个方面&#xff1a;1.背景速览&#xff1b;2.功能介绍&#xff1b;3.案例讲解&#xff1b;4.新功能预告。一、背景速览MaxCompute(原ODPS)是一项大数据计算服务&#xff0c;它能提供快速、完全托管的PB级数据仓库解决方案&…

客如云数据中台建设

简介&#xff1a; 本次分享介绍客如云如何利用阿里云大数据产品来建设数据中台。 客如云是2012年成立的一家公司&#xff0c;覆盖餐饮、零售、美业&#xff0c;还有其他的业态以及服务的一家综合性的SaaS公司。到2020年为止&#xff0c;客如云已经服务了60万商家&#xff0c;帮…

微博机器学习平台云上最佳实践

简介&#xff1a; 本文讲述了微博机器学习平台和深度学习平台的业务功能和云上实践&#xff0c;剖析了阿里云大数据在微博这两大学习平台的架构建设上所起到的作用。 作者&#xff1a;新浪微博数据计算平台系统架构师 曹富强 本文讲述了微博机器学习平台和深度学习平台的业务功…

搞懂异地多活,看这篇就够了

来源&#xff1a;水滴与银弹作者&#xff1a;Kaito阅读本文大约需要 20 分钟。你好&#xff0c;我是 Kaito。在软件开发领域&#xff0c;「异地多活」是分布式系统架构设计的一座高峰&#xff0c;很多人经常听过它&#xff0c;但很少人理解其中的原理。异地多活到底是什么&…

搭建一个微服务商城到底可以有多快?

简介&#xff1a; 极速部署一个微服务电商商城&#xff0c;体验 Serverless 带给您的应用全托管体验。 作者&#xff1a;云原生技术运营 - 望宸 技术实践的门槛不仅在于应用上线后各类问题的排查难度&#xff0c;也在于搭建一个 Demo 应用时的复杂度。 今天我们尝试 3 种方法来…

分享2种规划思维和4个规划方法

简介&#xff1a; 为结果买单&#xff0c;为过程鼓掌。 作者&#xff1a;不拔 每年各个部门都要进行规划&#xff0c;规划能让目标更聚焦&#xff0c;让我们清晰地知道今后我们要做什么、如何去做。并非每个人都会参与规划中去&#xff0c;但需要掌握规划的方法&#xff0c;否…

apache 统计404日志_Apache监控与调优(四)Apachetop监控

除了使用status监控外&#xff0c;还可以使用第三方软件来监控。现在使用的最多的第三方监控软件是apachetop。虽然我们使用status也可以监控到很多信息&#xff0c;但是对于一些统计信息来说&#xff0c;例如统计哪些URL的访问量最大&#xff0c;不同状态码下分别有多少个HTTP…

揭秘 | 2021年移动云API大赛决赛大奖花落谁家?

10月21日&#xff0c;2021年移动云API应用创新开发大赛决赛暨移动云开发者论坛&#xff0c;在苏州圆满举办。现场&#xff0c;移动云开发者社区重磅发布首批MVP名单&#xff0c;同时公布2021年API创新开发大赛决赛获奖名单。中国移动、英特尔、CSDN、PingCAP、各参赛团队等技术…