飞天5K实战经验:大规模分布式系统运维实践

2013年,云梯1实现空间优化与跨机房集群扩展,云梯2单集群规模从1500台升级到5000台,同时跨集群扩展的5K项目顺利取得阶段性成果,阿里成为第一个独立研发拥有这类大规模通用计算平台的公司。当时,云梯1、云梯2,再加上已上线的生产集群,阿里整体集群规模已超过万台。迄今为止,全球范围内,只有少数几家公司拥有如此规模的自主知识产权的集群。我们非常幸运,能够运维和管理如此大规模的生产集群。但短时间大规模快速膨胀的现状,确实也为运维工作带来了巨大的挑战。面对这些挑战,我们不仅迅速实现了自动化运维,还进行了数据化管理的转型。

服务器数量激增,要求提升全局掌控能力

传统的运维人员通常只面对几十或者上百台的服务器,规模不会太大,而且相对应用来说,每台机器都是一个独立节点。但在大规模分布式集群中,工作任务明显不同:首先,运维人员面临的服务器动辄就是三五千台甚至上万台,量级大幅提升;其次,分布式操作系统提供存储、CPU调度能力、内存使用、网络等功能,是基本资源的包装整合,从逻辑上看,相当于一台计算机;第三,基于分布式系统开发的应用相当于一个分布式数据仓库,用户可以在上面做ETL处理、SQL查询、数据导入导出等基本操作,以及实现一些MATLAB、统计软件等功能。因此,与传统运维相比,大数据运维人员要有更强大的整体把控能力,包括对机房网络、带宽、硬件、服务器的性能进行优化,熟悉飞天和Hadoop的上层应用,实现数据分析等,做到对各个方面的情况了如指掌。

以飞天5K项目为例,由于单集群的服务器规模是5000台,基本已独占1个机房,所以需要对整体机房的状况(包括网络、空调、维修和现场应急状态响应等),服务器,操作系统和上层应用进行全面的掌握。为了实现这个目标,我们先是做了多次演练来验证集群的稳定性,包括部分网络设备关机,整机架服务器断电,Master服务器随机挑选一台断电等。准备充分后,又做了一次“史无前例”的Failover测试――整体机房断电。演习当天,飞天及MaxCompute的恢复过程大概历时3个小时,整个演习过程中无数据丢失。经过这次压力测试,我们全面了解了系统的稳定性情况,锻炼了运维团队在最短时间内恢复整个集群的协作能力,积累了更好的保障用户稳定运行的宝贵经验。

实现系统的自我保护和自动化修复

在做5K项目测试时,一个测试作业由于用户使用不当导致盘古存储服务器文件数突增3000万个,造成存储Master服务器繁忙,整体系统处理能力大幅降低,对系统造成了不小的冲击。虽然我们发现这一问题后立刻做了相应的限制处理,但此类问题还是引发了我们的思考。一般来说,出现如此问题时,开发人员和设计人员会将原因归结为用户不会使用或使用不当。言下之意就是,产品层面很难避免,也无法彻底解决。但站在运维角度来看,应该有更好的解决方案,一方面不能因为用户的一个作业失常而停止服务;另一方面,也不能总是依靠“人肉“救火。系统应该具备自我保护能力,这也是产品要努力的方向之一。

此外,大规模分布式系统选用的都是低成本服务器,设备损坏很常见。要实现对整个系统(包括飞天、MaxCompute、Linux、硬件和网络等)的运维,就需要做好“软硬件故障成为常态”的准备,一旦发生异常情况,能立即实现自动闭环处理,无需人工干预。为此,阿里的运维和开发团队合作研发了一套异常故障自动化处理系统――华佗。目前华佗系统已具备自动处理基本硬件和服务异常等常见问题的闭环处理能力,并且还在持续完善当中(具体可参阅《走近华佗,解析自动化故障处理系统背后的秘密》一文)。

大规模与精细化的平衡

当运维的服务器达到数千台甚至上万台时会遇到诸多挑战,如硬件配置的差异化、用户数和任务数的急剧膨胀、大压力下的边界效应、小概率事件被触发等。在这个前提下,我们依然成功满足了诸如快速部署、自动化运维、监控报警、Log分析和精细化计量等运维要求,主要从以下三点着手。

提升系统化的基础环境管理能力

这个问题看起来很简单,就是要保证线上几万台机器的环境一致或是能实现我们想要的配置。但如果不提供底层的应用(如BIOS、FW等),仅是操作系统层面(如网卡驱动版本、系统参数的配置、基础软件的版本等),众多品类就很难统一,尤其是当硬件基础发生变化的时候。举个简单的例子,假如一台机器的某块硬盘坏掉了,系统应用需要能够自动将损坏的硬盘下线。后台的监控程序会进行轮询,直到发现这块坏盘,并将这块盘从系统里下线,进行修复处理后,再尝试能否加回集群。如果不能,就说明这个盘可能彻底坏了无法修复,系统就会自动提交报修工单,整个过程无需人为干预。现场工作人员接到报修工单后,可以从容安排时间,统一更换坏盘。新的硬盘装好后,系统会自动识别并添加到服务中。如果故障的是系统盘,只要完成更换,系统就会自动触发安装和部署。同时要保证所有的驱动版本、FW、系统参数和软件版本等做到同步一致地去Push。可见,在这个故障的整个处理过程中,只有更换硬盘这个动作需要人工介入。如果有服务器重装的需求,我们会每周或每月定期整理,启动自动化的部署触发,对整台机器进行初始化处理,让系统处于应用部署状态,机器就会找到自己的兄弟节点去做一次克隆,恢复成跟线上的“兄弟姐妹”一模一样的状态,然后再上线。这个过程也是全自动完成的,唯一的人工介入就是点击触发命令。

大规模集群快速自动化部署

大家知道在运维工作中有很大一部分是部署升级。而对于大规模集群来说部署升级这部分工作尤其重要。在飞天5K项目中,集群机器数量短期内由1000多台直接扩展到5000台。这时,发现老的部署方式基本无法自动完成5000台服务器部署。同时按老的方式做一次冷升级需要4~5个小时,这是应用无法接受的。于是,我们在分布式部署工具大禹上也做了许多工作,提高了飞天部署效率,支持运维人员定制自己的部署流程,管理集群的基本信息,同时还提供了丰富的工具集,包括文件分发工具、远程执行工具、集群信息管理工具和集群缩容扩容等。我们重新定义了应用binaryconf的目录结构,同时分离配置和binary部署,为配置中心统筹所有配置留出接口;分离应用binary和数据结构,在确保版本快速切换同时,保证了应用数据连贯性提供快速回滚的方案;轻量化对数据库的依赖,角色资源信息采用读取本地缓存方式;模块化部署,同时支持交互式与非交互式部署。而且最主要的是,在部署时,我们对应用binany分包传输方式做了调整,新开发了一套多点分布并发传输工具,由以前单点传输速度越快越好,转变为多点精确控制流量下按预期传输。最终在整个5K项目结项时,整个集群冷部署升级时能够将服务停止时间控制在20~30分钟。

自研的简单日志服务SLS

我们现在面对的大规模分布式系统比以往任何系统都要复杂,系统本身有非常多的组件,每个组件又有各自的Log数据,而很多Log之间又相互关联,量大且目标多。在飞天5000台服务器的环境下,大约有5000多个并发作业需要实时计算并发度、运行状态、使用Quota等指标。从输入的源数据来看,整个集群需要实时分析的性能数据产出速度大约为65MB / s,日志数据的量更会提升一个数量级。需要同时汇聚的种类和维度很多,大到机器,小到作业和文件都需要有不同的视角能切入探索,定位细节根源。而且这些Log都是分布在每台Slave机器上的,需要统一地汇总收集进行分析。为此,我们使用了阿里云自研的简单日志服务(SLS)来满足这些复杂的需求。SLS的主要功能有以下几点。

  • 实时收集AuditLog,监控所有操作的QPS和执行结果。
  • 监控每种操作的等待延时与执行延时。
  • 监控每个文件、请求和Session客户端执行生命周期。
  • 通过FileID、文件名和操作类型进行实时分析,对整个文件的操作生命周期监控。

虽然syslog也做了一系列分析,但由于它散布在各个机器上,查找和定位非常不方便,而通过SLS可以像单机一样查找集群中的问题:

  • 整个集群是否有特定错误;
  • 每天针对segfault、oom和cgroup进行离线统计,根据具体segfault事件定位具体的内容和机器,如图1所示。

通过SLS的各项指标和Log分析,对集群的整体性能、QPS和流量等是否符合预期、作业 / 文件 / Slave上的存储单元的生命周期是怎样的,这些宏观状态和微观细节都有完整的把握, 进而帮助我们全面掌握分布式系统的情况。这项简单日志服务SLS不久前已通过阿里云对外公测,每个用户可以免费创建1个项目,并能使用不超过10M / s的写入流量。

不断完善的AliMonitor监控系统

面对上万台机器,好几十个模块,几十万个监控项,想要了解哪些机器监控项缺少、哪些机器监控项异常、今天有哪些监控项报警、报警了多少次、团队中每个人每天收到多少报警、哪些是可以系统自动处理不报警的等,都需要从监控数据入手,真正对整个平台的监控有直观而全面的了解,并在数据的指导下持续完善监控系统。

大规模的互联网公司都极其详细地定制化监控需求,阿里也不例外,我们基于多年的运维经验自主开发了一套监控系统AliMonitor,并且根据业务需求不断进行优化和完善。Alimonitor是一套统一的分布式监控平台,支持系统监控、网络监控、客户端监控、容量监控、趋势监控等,能自动添加基本监控,对服务器、虚拟机、应用VIP、网络设备、Java应用等能提供准实时预警、报警,从数据采集到发出报警仅需要5秒钟,让运维人员第一时间掌握服务的健康状况。同时,它还具备多种故障预测及发现方式、丰富的数据图表展示、容量规划和报警,以及视图的定制等功能。

开发和运维需要更加紧密合作

和传统的业务系统相比,分布式系统规模大和复杂性高,需要开发和运维更加紧密地合作。从运维人员的角度来看,运维就是对线上生产系统负责,是线上系统的Owner,要全面且深入地了解产品。从开发人员的角度来说,如果对运维工作一无所知,那么也很难开发出可靠的产品。因此,如果开发人员和运维人员之间存在壁垒,显然会大大影响产品的稳定性。需要注意的是,这不是要模糊开发人员和运维人员的职责,双方仍然要保持明确的分工,但在技术技能上,双方应该更加靠近。例如,在飞天5K项目中,运维人员和开发人员紧密合作,用最短的时间开发完成了自有的大规模部署系统(大禹)和异常故障自动化处理系统(华佗)。而且在共同工作中,双方都收获甚丰。

结语

对于阿里这种规模的互联网公司而言,随着体量越来越大,用户数量和基础设施投入都在快速膨胀,数据也在呈几何倍数增长。因此,在运维工作上已很难找到其他企业的成功经验来借鉴,但又不能凭空揣测解决方案,因为一旦判断失误,就会给公司造成巨大的损失。在这种情况下,我们深刻感受到只有一条通路:通过对真实数据进行分析和预测,将判断失误的概率降到最低。我们相信,只要数据真实并且挖掘得足够深入,一定能找到最优的解决方案。例如,在日常运维中,我们已可以收集到不同通道的数据,如服务器温度、负载、磁盘、应用状况等,而且数据种类和数量都在不断增加。如果能够找到其中的联系并快速分析,将会给我们的工作带来更大变化。而基于技术分析优化运维水平,将是一个值得持续探究的课题,也是我们团队一个比较大的挑战。

阿里云数加大数据计算服务MaxCompute产品地址:https://www.aliyun.com/product/odps

阅读原文直接点击

时间: 2024-08-07 08:40:09

飞天5K实战经验:大规模分布式系统运维实践的相关文章

阿里巴巴大规模神龙裸金属 Kubernetes 集群运维实践

作者 | 姚捷(喽哥)阿里云容器平台集群管理高级技术专家 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击即可完成下载. 导读:值得阿里巴巴技术人骄傲的是 2019 年阿里巴巴 双11?核心系统 100% 以云原生的方式上云,完美支撑了?54.4w 峰值流量以及?2684 亿的成交量.背后承载海量交易的计算力就是来源于容器技术与神龙裸金属的完美融合. 集团上云机器资源形态 阿里巴巴 双11 采用三地五单元架构,除 2 个混部单元外,其他 3 个均是云单元.神龙机型经过

MySQL数据库性能优化及自动化运维实践教程!DBA日常工作

MySQL数据库性能优化及自动化运维实践教程!本文作者将站在更加全面的角度分享他在这一年多 DBA 工作中的经验,希望可以给大家带来启发和帮助. DBA 的日常工作 我觉得 DBA 真的很忙,我们来看看 DBA 的具体工作:备份和恢复.监控状态.集群搭建与扩容.数据迁移和高可用. 上面这些是我们 DBA 的功能,了解这些功能以后要对体系结构有更加深入的了解,你不知道怎么处理这些故障和投诉的事情. 所以我们要去了解缓存/线程.SQL 优化.存储引擎.SQL 审计以及锁与实务:体系结构更深一点,就去

电商行业运维实践

电商行业运维实践 ------------------------------------------------------------------ 今天先到这儿,希望对您技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章: 国际化环境下系统架构演化微服务架构设计视频直播平台的系统架构演化微服务与Docker介绍Docker与CI持续集成/CD互联网电商购物车架构演变案例互联网业务场景下消息队列架构互联网高效研发团队管理演

关于Prometheus运维实践项目

关于Promethues运维实践项目 1. 什么是Prometheus运维实践项目 ? 是什么 ? Prometheus,普罗米修斯,是古希腊神话中为人间带来火种的神. ? Prometheus运维实践项目,是作为IT运维从业者的我,根据自己的知识背景.工作经历.思维层次,现有条件,想要创建推进完成的一个运维学习和实践平台. ? 通过这个项目的推进和平台的构建,我本人能够探索巩固完善自己的运维知识体系,提高运维认知和实践能力,其他偶然访问到我博客或者项目的运维初学者或同行,也能够明确行路方向和实

魅族容器云平台自动化运维实践

魅族容器云平台主要是基于 k8s 的技术.将从以下六个方面介绍魅族容器云的实践过程,分别是基本介绍.k8s 集群.容器网络.外部访问4/7层负载均衡.监控/告警/日志.业务发布/镜像/多机房. 1.基本介绍 魅族云平台的定位是私有云平台,主要是用于支撑在线业务,用以替换传统的虚拟化方式.目前现状是2017年完成全国三个数据中心的建设,年内完成90%业务的迁移. 我们是以小团队紧跟 k8s 社区步伐,快速迭代.低成本试错的方式来构建我们的平台的.同时,针对一些我们遇到的问题,做一些局部创新,在保证

基于.net的微服务架构下的开发测试环境运维实践

眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全不像大家说的那样简单,大家是报喜不报忧,实在是水太深,谁做谁知道.今天就与大家分享一下在微服务架构+DevOps下,开发测试环境的一些运维痛点问题和解决方法. 架构的复杂度直接决定了运维的工作量,架构不是越复杂越好,而是适合最好.下面简单说说几种架构的优缺点.基于.net在搭建应用时,最常用的方法就

基于 ANSIBLE 自动化运维实践

摘要:运维这个话题很痛苦,你做任何的产品都离不开运维.不管你用什么语言.什么平台.什么技术,真正能够决定你产品成熟度的很有可能就是你运维的能力.取自 云巴 CEO 张虎在 ECUG 大会上的分享. 云时代的运维 以前的运维那么痛苦,大家却并未做多大的努力去改变这个现状,为什么?因为原来你要自己去建机房.自己去采购.去调研机房.采购服务器.采购带宽,中间出了任何问题很大可能都是机房的问题. 在云时代,尤其是在AWS出现之后,很多美国团队的运维方式发生了极大的变化. 为什么云时代的运维跟原来的运维不

Linux 运维实践案例-2015年12月20日-12月31日

一.创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至单独数据/data目录: 1.首先在系统之中添加一块硬盘,然后通过fdisk -l 命令显示当前磁盘信息 [[email protected] /]# fdisk -l                  #列出当前系统中的磁盘信息 Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Se

VMware workstation运维实践系列博客导航

第一章:VMware workstation虚拟化1.1 VMware workstation计算网络存储介绍1.2 VMware workstation其他功能特性介绍1.3 VMware workstation创建各类客户机第二章:总控制台虚拟机console部署2.1 最小化安装console2.2 安全登陆虚拟机console2.3 console安装VMware tools2.4 console部署本地YUM源2.5 console安装必要工具和基础环境2.6 console工具目录部