阿里巴巴云原生 etcd 服务集群管控优化实践

简介: 这些年,阿里云原生 etcd 服务发生了翻天覆地的变化,这篇文章主要分享一下 etcd 服务在面对业务量大规模增长下遇到的问题以及我们是如何解决的,希望对读者了解 etcd 的使用和管控运维提供经验分享。

头图.png

作者 | 陈星宇(宇慕)
来源 | 阿里巴巴云原生公众号

背景

Kubernetes 采用 etcd 存储其内部核心元数据信息。经过这些年的发展,尤其是伴随着这两年云原生的快速发展,Kubernetes被人们广泛认同并大规模被使用。伴随阿里内部容器平台 ASI 及公有云 ACK 集群数飞速增长,底层存储 etcd 集群获得井喷式地增长,etcd 集群数从原来的十几个发展到了目前达到几千个,它们分布在世界各地,为上层 Kubernetes 集群以及其他产品服务,服务用户超万个。

这些年,阿里云原生 etcd 服务发生了翻天覆地的变化,这篇文章主要分享一下 etcd 服务在面对业务量大规模增长下遇到的问题以及我们是如何解决的,希望对读者了解 etcd 的使用和管控运维提供经验分享。

具体将分三个部分进行介绍:

  • etcd 集群成本优化,利用率提升
  • etcd 管控运维效率提升
  • etcd 内核架构升级

etcd 集群运行成本优化、利用率提升

近些年,etcd 集群数井喷式增长。它的运行形态经历了从 1.0 到 2.0 到 3.0 的变化,具体如下图:

1.jpg

1.0 物理机时代

在一开始,我们管控的 etcd 集群数比较少,我们在宿主机上使用 docker 直接运行 etcd 容器。即图中的 1.0 模式。

2.0 云上时代

1.0 模式运行 etcd 非常简单,但也存在使用物理机运行软件低效等常见问题,随着阿里巴巴全面上云的步伐,etcd 也全面将运行环境切到了云上 ecs,存储也换成了云盘 ssd 或 essd。

全面上云优势明显,利用阿里云底层 Iaas 的 ecs 弹性和存储云盘,etcd 集群可快速完成垂直水平伸缩,故障迁移也比 1.0 时容易的多。以集群升配操作为例,整个升级时间从最初的半小时降低到现在的 10 分钟,可以兼顾业务使用峰值和日常普通压力,稳定承载阿里内部双十一业务高峰以及外部多个公有云客户春节大促活动。

2.jpg

3.0 大规模云上时代

随着 etcd 集群数大量增长,运行这些集群需要的 ecs 与云盘成本越来越高,etcd 已成为容器服务花费资金最多的部分之一,etcd 运行的成本成为我们必须面对并解决优化的问题。

2.0 模式下使用独占 ecs 和云盘我们发现 etcd 资源利用率比较低,存在较多的资源浪费,我们将 2.0 模式进行了进一步升级:将集群进行混部,降级运行成本。但混部之后我们遇到计算资源争抢和集群稳定性等风险,时常发生 etcd 集群切主,导致上层依赖 etcd 软件功能异常,例如 Kubernetes controller 切主影响用户服务。

针对这些问题,我们首先将不同的 etcd 集群根据不同的服务质量和 SLO 拆分成多种类型,类似 Kubernetes 中 Best effort、Burstable 和 Guaranteed 3 种类型,把不同类型的集群放在不同的资源池中运行管理。混合部署由于采用了高度打散, 随机的模式, 再加上我们的集群用户很多,对 etcd 的热点请求被分割的很散,没有聚集,稳定性问题例如集群切主次数大量降低。在保证稳定性的前提下提升了资源利用率的目的,成本下降明显。

管控运维效率提升

早期我们运维管理 etcd 集群的方式比较简单,采用 shell 脚本基本可以涵盖 etcd 集群生命周期全过程,例如集群创建、删除,迁移都利用脚本完成。以前的这种小作坊模式随着集群数的井喷式增长越来越不适用,我们遇到 etcd 集群生产速度慢,适配底层 IaaS 变化难度大等问题,运行时集群管理效率也很低。

针对这些运维管控效率低的问题,我们拥抱云原生生态,用 Kubernetes 作为运行 etcd 的底座,并基于开源的 etcd-operator,经过几年的研发,适配阿里云底层 IaaS,修改了很多开源的 bug, 将 etcd 管控运维动作标准化,功能覆盖 etcd 管控全生命周期,推出了新的 etcd 运维管控后台 alpha, 我们利用 alpha 统一了阿里巴巴内部的 etcd 集群及公有云 ACK 上的 etcd 集群管控,极大地提高了我们管控运维 etcd 集群的效率。目前我们投入 0.5 人力就可以管理近万集群,人效比显著。下图展示了他的控制界面。

3.jpg

下面我们详细介绍一下 alpha 的具体功能,首先我们看一下下面这幅图,它描绘了一个 etcd 集群从创建-》运行-》故障-》再运行-》停止-》销毁的典型生命周期大图。

4.jpg

alpha 做的事情就是覆盖图上的方方面面,具体分为以下两部分:

1. etcd 集群生命周期管理

  • etcd 集群创建,销毁,停止,升级,故障恢复等。
  • etcd 集群状态监控,包括集群健康状态、member 健康状态,访问量,存储数据量等。
  • etcd 异常诊断、预案、黑盒探测,配置巡检等。

2. etcd 数据管理

etcd 数据管理包括数据迁移、备份管理以及恢复,脏数据清理,热点数据识别等。这块是 alpha 的特色,我们发现开源或其他产品这方面做得工作很少。我们做的功能具体如下。

1)etcd 数据备份及恢复

两种方式如下:

  • 传统模式冷备:支持从 etcdserver 将 snapshot 数据备份至阿里云 OSS 或本地,故障时可以根据这个 snapshot 备份文件恢复。
  • raft learner 热备:对于新版本的使用了 raft learner 特性的 etcd 集群,我们可以使用 learner 作为热备节点,当故障发生时,我们强制将 learner 转换为正常节点,并将客户端访问切到这个新节点上,相比于传统方式故障恢复时间更快,并且 learner 可以部署在不同的地域,实现异地多活的能力。

2)脏数据清理

我们可以根据指定 etcd key 前缀删除垃圾 kv 的能力,降低 etcd server 存储压力。

3)热点数据识别

我们开发了按照 etcd key 前缀进行聚合分析热点 key 的能力,另外还可以分析不同 key 前缀的 db 存储使用量。利用这个能力,我们多次帮助客户排查分析 etcd 热点 key,解决 etcd 滥用问题,这个在大规模 etcd 集群上是一个必备的能力。

4)数据迁移能力,两种方式

  • snapshot 方式:通过 etcdsnapshot 备份,再恢复进行迁移方式。
  • raft learner 模式:我们使用 raft learner 特性可以快速从原集群分裂衍生出新的集群实现集群迁移。

5)数据水平拆分

当集群数据存储数据量超大时,我们支持使用水平拆分将不同客户数据拆分存储到不同的 etcd 集群中。我们在阿里内部 ASI 集群就用了这个功能,使其支持超万规模节点。

总结一下,我们采用 Kubernetes 作为 etcd 集群的运行底座,基于开源 operator 改良适配研发了新的 etcd 管控软件 alpha,覆盖 etcd 全生命周期管控工作,一套软件管理所有 etcd 集群,显著提升了 etcd 管控效率。

etcd 内核架构升级更新

etcd 是云原生社区中非常重要的一款软件,几年的演进发展,解决了很多 bug, 提升了内核的性能和存储容量。但开源软件就像是一个毛坯房,真正在生产环境使用问题还是有的,阿里内部有更大数据存储规模和性能方面的要求,另外 etcd 自身多租户共享使用 QoS 控制能力很弱,不适用于我们的使用场景。

我们早期使用开源的 etcd 3.2/3.3 版本, 针对一些我们的使用场景需求,后续我们加入了一些稳定性和安全增强,形成了现在我们使用阿里内部版本,如下展示了重要的几个不同:

1. 自适应历史数据清理 compact 技术

etcd 会存储用户数据的历史值,但是它不能长久的存储所有历史值,否则存储空间会不足。因此 etcd 内部会利用 Compact 机制周期性地清理历史值数据。当我们的集群超大,数据量超大时,每次清理对运行时性能影响很大,可以类比一次 full gc。本技术可以根据业务请求量调整 Compact 时机,避开业务使用高峰期, 减少干扰。

2. 基于 raft learner 的只读节点水平扩展能力

raft learner 是 raft 协议中的一种特殊的角色,他不参与 leader 选举, 但是可以从 leader 处获得集群中最新的数据,因此他可以作为集群的只读节点进行水平扩展,提升集群处理读请求的能力。

3. 基于 raft learner 的热备节点

除了上面说的 raft learner 可以作为只读节点,我们也可以将其使能用于作为集群的热备节点,目前我们广泛使用热备节点做异地双活,保证集群高可用。

4. etcd 集群 QoS 能力

公有云上,我们有大量的用户采用共享 etcd 集群的方式使用 etcd, 在这种多租户使用场景下我们即需要保证租户公平使用 etcd 存储资源,也要保证稳定性即不会因为某一租户的滥用将集群整体搞挂,影响其他租户使用。为此我们自研了相应的QoS限流功能,可以实现不同租户运行时读写数据流量限制以及静态存储数据空间限制。

总结

阿里云采用 etcd 服务化做容器服务的核心数据存储系统已经有了将近 4 年的历史,我们积累了大量的运维管控 etcd 的经验和使用 etcd 的最佳实践,这篇文章分享了我们在降本提效,内核优化方面的一些实践。

近年来随着云原生的浪潮,etcd 也获得前所未有地急速发展,etcd 去年已从 cncf 正式毕业。阿里云为 etcd 社区贡献了重要的 feature 和 bug fix,积极参与社区,汲取社区营养,反哺贡献社区,可以预见未来 etcd 集群还会继续保持高速的增长,我们将继续在降本增效,保证稳定性和可靠性上持续投入努力。

原文链接

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

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

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

相关文章

计算机组装与维护思考问题,计算机组装与维护中的常见问题及解决方法

郜庆国摘要:在如今的社会下,各个领域的很多行业在工作的时候都需要用到计算机来帮助工作的进行,因为计算机在很多情况下都能够很好地进行计算与帮助,所以我们在进行工作时,不仅提高了工作的效率,还解决了很…

淘票票首次公开小程序开发秘籍,踩过坑才知道怎么走!

简介: 在2019年,阿里巴巴文娱的淘票票几乎涉足了当时市面上所有的小程序。在不少平台上,淘票票是阿里“第一批吃螃蟹”的技术团队。回顾过往,阿里文娱做过很多尝试,也踩过很多坑。《小程序 大世界》总结了淘票票过去 2…

stm32f407 6个串口dma_stm32之DMA

一. 对于大容量的STM32芯片有2个DMA控制器,控制器1有7个通道,控制器2有5个通道每个通道都可以配置一些外设的地址。二. 通道的配置过程:1. 首先设置CPARx寄存器和CMARx寄存器。通过DMA控制器把一个地址的值复制到另外一个地址,通过…

立足当下,塑造未来

今天,以“5G与世界同行”为主题的2021全球移动宽带论坛(Global MBB Forum)在迪拜举行。期间,华为轮值董事长胡厚崑发表了题为“立足当下,塑造未来”的主题演讲。胡厚崑指出:“5G预商用五年以来,…

jfinal html5,Jfinal框架整合webSocket技术功能实现

技术难度:简单在这里我会用最简单的方法实现JFinal框架结合webSocket最基础的功能,以至于后续业务的拓展需要小伙伴们依据实际情况去实现相应的开发!废话不多说,直接上代码!1、编写webSocket类package morality.ws;imp…

行业实战 | 5G+边缘计算+“自由视角” 让体育赛事更畅快

简介: 世界本是多维的。进入5G时代,观众对多维度视觉体验的需求日益增长,5G MEC网络与边缘计算的结合,具备大带宽、低延迟特性,使视频多维视觉呈现成为现实。在第二十三届CUBA中国大学生篮球联赛期间,中国电…

华为汪涛:走向智能世界2030,无线网络未来十年十大产业趋势

2021全球移动宽带论坛(Global MBB Forum)期间,华为常务董事、ICT基础设施业务管理委员会主任汪涛发表了题为“走向智能世界2030,无线网络未来十年十大趋势”的主题演讲。汪涛表示:“未来十年,是走向智能世界…

python怎么输入一个数字并调用_Python3 实例(一)

原标题:Python3 实例(一) Python Hello World 实例 以下实例为学习Python的第一个实例,即如何输出"Hello World!": 实例 # -*- coding: UTF-8 -*- # Filename : helloworld.py # author by : www.runoob.com…

未来教育计算机书,未来教育.全国计算机等级考试

1册图书1张光盘,轻松应对2018年一级计算机基础及MS Office应用考试 n 1.历年真题精选,全方位把握真考动向,具有练习价值 n (1)新大纲、新题型、新题库,全方位解读无纸化考试,帮助考生轻松过关。 n (2)精选2017年~2016年…

python制作简单网页_python 跑服务器,访问自己制作的简单页面

1 python 跑服务器,访问自己制作的简单页面2 # winb出现一个网址http:/0.0.1:5000/复制到浏览器查看 # http://127.0.0.1:5000/home做这个首先要安装好python的flask,前面有详细的安装步骤 具体代码如下# coding:utf-8 # Flask构造函数,从fla…

华为云专属月·行业深耕专项行动正式开启

10月15日,以“云上共创 互联网新价值”为主题的“华为云专属月行业深耕”线上发布会圆满举办。会上,华为云宣布“华为云专属月行业深耕专项行动”正式启动,本次专属月期间,华为云将面向包括电商、游戏、移动出行三大行业在内的互联…

计算机电子工程专业就业前景,就业前景好的4大类专业,电气电子类上榜,有你喜欢的吗?...

原标题:就业前景好的4大类专业,电气电子类上榜,有你喜欢的吗?行业的发展和社会的发展是紧密相连的,所以为了推动社会各个行业的发展,在大学中就会设立很多类型的专业。下面来介绍一下就业前景好的4大类专业…

Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外

简介: 3 月 20 日,Nacos 2.0 正式发布。Nacos 是阿里巴巴在 2018 年开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,也可以理解为微服务的注册中心 配置中心。 来源 | 阿里巴巴云原生公众号 3 月 20 日&#xff0c…

以系统化视角反观产品运营,解读提升用户转化的“四部曲”

简介: 正常的活动运营通常会围绕公司经营目标,针对不同性质、不同类型的活动开展工作。这样的活动一般会分四个阶段:活动准备、活动策划、活动执行与活动复盘阶段。 作者:友盟数据大使 Suffering 如今,移动互联网的红…

移动云亮相 2021 IDC 年度盛典 共话变革与赋能

“过去一年,是考验各行业在面临多重挑战时保持数字弹性能力的一年。未来十年,是数字化转型成为企业主旋律、加速推进的十年。”10月15日,由IDC中国主办的“2021第六届IDC中国数字化转型年度盛典”在上海圆满落幕。盛典以“数字焕颜 科技有型”…

春色满园关不住,带你体验阿里云 Knative

简介: Knative 是基于 Kubernetes 的开源 Serverless 应用编排框架。阿里云 Knative 在社区Knative基础之上,与阿里云产品进行了深度的融合,给你带来最纯粹的容器化 Serverless 体验。 Knative 是基于 Kubernetes 的开源 Serverless 应用编排…

python选择排序算法图解_python基本算法之实现归并排序(Merge sort)

0、前言 评判一个算法的好坏的标准: 时间复杂度 空间复杂度 1、归并排序算法是什么? 冒泡排序(Bubble Sort)是一种建立在归并操作上面的一种有效的排序算法,由John von neumann于1945年发明。采用分治法(Divide and Conquer&#…

从前端智能化看“低代码/无代码”

简介: 什么是低代码/无代码开发?业界对于低代码/无代码开发是否存在其他不同的理解?低代码开发和无代码开发之间的区别是什么? 作者 | 甄子 来源 | 阿里技术公众号 一 概念 1 什么是低代码/无代码开发?业界对于低代码…

初二物理模型有哪些_暑假新初二、新初三的数学该怎么学,教辅怎么买,题该怎么刷?看这里~...

这个暑假对于新初二和新初三的孩子都非常关键,因为下一学期的数学难度都要上升一个台阶,自古相传一句老话“初二两极分化,初三天上地下”,其实引起这么大化学反应的原因就是在于数学和科学这两门理科在八上和九上有了一个质变。我…

低代码会让程序员更加内卷吗?

作者| Mr.K 编辑| Emma来源| 技术领导力(ID:jishulingdaoli)今天的主题呢主要是来源于最近的一个很火的话题——『低代码』。低代码会不会让程序员更加内卷?要回答这个问题,需要先弄清楚:低代码适合做什么,不适合做什…