云计算
作者|姚杰(楼阁)阿里云容器平台集群管理高级技术专家
本文摘自《不一样的 双11 技术:阿里巴巴经济体云原生实践》一书。点击下载。
导读:阿里巴巴技术人员引以为豪的是2019年的阿里巴巴双11?核心系统100% %u4EE5云原生方式,完美支持?54.4w峰值流量和?成交额2684亿。海量交易背后的计算能力,来自于容器技术与神龙裸机的完美融合。
群组云机器资源表单
阿里巴巴双11采用三地五单元架构。除了两个混合单位,其他三个都是云单位。经过618和99的验证,神龙机型的性能和稳定性都有了很大的提升,可以稳定支持双11。今年双11三个交易云单元在神龙裸机已经100% %u57FA,核心交易电商神龙集群规模达到数万。
神龙建筑
阿里云ECS虚拟化技术已经经历了三代。前两代是Xen和KVM,神龙是阿里巴巴研发的第三代ECS虚拟化技术产品。它具有以下四个技术特征:
存储和网络VMM?然后呢。ECS?管理和控制,以及计算虚拟化的单独部署;
计算虚拟化已经进一步发展到接近。
金属Hypervisor
存储和网络VMM?通过芯片专用?IP?业务加速;
泳池支持弹性裸机和ECS?虚拟机生产。
简而言之,神龙将网络/存储的虚拟化开销卸载到一个名为MOC卡的FPGA硬件加速卡上,使原ECS的虚拟化开销降低了约8% %u7684。同时,通过一张大型MOC卡的制造成本优势,拉平神龙的整体成本开销。神龙物理机可以二次虚拟化的特点,为新技术的演进和发展留下了足够的空间,也使得采用多种虚拟化技术成为可能,比如Kata和鞭炮。
在阿里巴巴双11大规模搬到神龙架构之前,我们发现在云上运行的集团电商容器的性能是10%%uFF5E15%%uFF0C,这让我们非常惊讶。经过分析,我们发现主要原因是虚拟化开销被卸载到MOC?在卡上,神龙的CPU/Mem没有虚拟化开销,上云后运行在神龙上的每个容器都有专属的ENI弹性网卡,性能优势明显。同时,每个集装箱都有一个ESSD块存储云盘,单个磁盘的IOPS高达100万,比SSD云盘快50倍,性能超过非云的SATA和SSD本地磁盘。这也更加坚定了我们采用神龙大规模支持双11的决心。
神龙集装箱
All in Cloud时代,企业IT架构正在被重塑,云原生成为释放云计算价值的最短路径。2019年阿里巴巴双11的核心系统将是100% %u4EE5云原生,基于神龙服务器,轻量级云原生容器,兼容Kubernetes?一个新的ASI(阿里巴巴无服务器基础设施。)基于Web服务的调度平台。其中,Kubernetes Pod容器在运行时与神龙的裸机完美融合,Pod容器运行在神龙实例上,作为业务的交付段。
以下是Pod在龙上运行的形式:
ASI Pod运行在神龙的裸机节点上,将网络虚拟化和存储虚拟化卸载到独立硬件节点的MOC卡上,采用FPGA芯片加速技术,存储和网络性能优于普通物理计算机和ECS;MOC有独立的操作系统和内核,可以为AVS(网络处理)和TDC(存储处理)分配独立的CPU内核。
ASI Pod由主容器(业务主容器)、运维容器(星代理侧车容器)和其他辅助容器(如某个应用的本地缓存容器)组成。网络命名空间、UTS命名空间、PID命名空间通过暂停容器在Pod中共享(ASI关闭PID命名空间的共享);
Pod的主容器和运维容器共享数据卷,通过PVC声明云盘,将数据卷挂载到对应的clou上
ASI Pod通过暂停容器直接连接到MOC卡上的ENI弹性网卡;
无论里面有多少容器,ASI Pod只占用独立的资源,比如16C(CPU)/60G(内存)/60G(磁盘)。
大型龙运运维
2019年,双11云中的核心交易神龙集群规模已达数万。管理和运营如此大规模的神龙集群是非常具有挑战性的,包括云上各种业务实例规范的选择、大规模集群的弹性伸缩、节点资源的划分和控制、核心指标的统计分析、基础环境的监控、停机时间的分析、节点标签的管理、节点的重启/锁定/释放、节点的自愈、故障机的轮换、内核补丁的升级、大规模的检查。
以下是几个方面的详细内容:
示例规格
首先需要针对不同类型的服务规划不同的实例规范,包括入口层、核心业务系统、中间件、数据库、缓存服务等不同特点的基础设施和服务。有的需要高性能计算,有的需要高网络包收发能力,有的需要高性能磁盘读写能力。前期需要进行系统的整体规划,避免实例规范选择不当影响业务性能和稳定性。示例规范的核心配置参数包括vcpu、内存、弹性网卡数量、云盘数量、系统盘大小、数据盘大小、网络包收发能力(PPS)。
电子商务核心系统应用的主要型号是96C/527G,每个Kubernetes Pod容器占用一个弹性网卡和一个EBS云盘,所以弹性网卡和云盘的限制数量非常关键。这次电商上云,神龙将弹性网卡和EBS云盘的限制数量提高到?64和40,有效避免了CPU和内存资源的浪费。另外,对于不同类型的服务,核心配置会略有不同。比如入口层aserver神龙实例,需要承担大量的入口流量,对MOC的网络包收发能力要求非常高。为了避免AVS网络软交换CPU满,神龙MOC卡对网络和存储的CPU分配参数要求是不一样的。常规计算神龙实例的MOC卡网络/存储的CPU分配为4: 8,而服务器神龙实例的CPU分配需要配置为6: 6。例如,对于云上的混合模型,需要为离线任务提供独立的nvme实例。合理规划不同类型业务的型号和规格,将大大降低成本,保证性能和稳定性。
资源弹性
双11需要海量的计算资源来守住峰值流量,而这些资源是无法正常守住的,所以需要合理划分日常集群和大促集群。双11前几周,通过大规模节点的灵活扩展能力,从阿里云申请了大量神龙,部署在独立的大促集群群中,大规模扩充Kubernetes Pod交付业务的计算资源。紧接着双11,大规模集群中的Pod集装箱将批量下线,大规模集群的神龙实例将整体下线销毁。只有常态化的神龙实例才会每日举行,大规模的集群通过其弹性的容量伸缩,可以大大节约成本。此外,在神龙的交付周期方面,今年从上云后的应用到造机,已经从小时/天级别缩短到分钟级别,上千个神龙可以在5分钟内完成应用,包括计算、网络、存储资源;Kubernetes集群的创建和导入在10分钟内完成,大大提高了集群创建的效率,为以后弹性资源池的常态化奠定了基础。
核心指标
对于大型神龙集群的运维来说,衡量集群整体健康状况有三个非常核心的指标,即停机率、可调度率和在线率。
神龙上云宕机的原因通常分为硬件问题和内核问题。通过对每日中断率趋势的统计和中断根本原因的分析,可以量化集群的稳定性,避免潜在的大规模中断风险。可调度率是衡量集群健康状况的一个关键指标。由于各种软硬件原因,集群机的容器无法调度到这些异常的机器上,比如负载大于1000,磁盘有压力,docker进程不存在,kubelet进程不存在。在集群中,这些机器的状态将是未就绪。2019年,在双11,我们通过神龙停机重启和冷迁移的特性,大幅提高了故障机轮换的效率,将神龙集群的可调度率保持在98% %u4EE5,极大的促进了资源准备的便捷性。而双11神龙的宕机率维持在?0.2以下,表现相当稳定。
标签管理
随着集群规模的增大,管理难度变大。比如如何筛选出所有生产环境在‘cn-Shanghai’地区的机器,以及‘ECS’的示例规格。EBMC 6公司26英寸。我们通过定义大量的预置标签来实现批量资源管理。在Kubernetes的框架下,通过定义标签来管理机器。Label是一个键-值键对,可以使用标准的Kubernetes接口在神龙节点上进行标记。例如,机器实例规范的标签可以定义为“sigma”。Ali/机器型号'' ECS。“EBMC 6-有限公司26区”,机器所在的区域可定义为?”sigma.ali/ecs-region-id''cn-shanghai'通过完善的标签管理系统,可以从数万个神龙节点中快速筛选机器,进行灰度批量服务发布、批量重启、批量发布等常规运维操作。
停机时间分析
对于超大规模的集群来说,每天停机是一件非常常见的事情,停机时间的统计和分析对于识别是否存在系统性风险非常重要。停机时间有很多种。硬件故障会导致停机,内核bug也会导致停机。一旦发生停机,业务就会中断,一些有状态的应用就会受到影响。我们通过ssh和端口ping检查监控资源池的停机时间,统计停机时间的历史趋势,一旦出现停机时间突然增加的情况就报警;同时对机器的停机时间进行分析,比如按照机房、环境、单位、分组进行分类,看是否与具体的机房有关;对型号和CPU进行分类,看是否与具体硬件相关;同时对OS版本和内核版本进行分类,看是否都发生在一些特定的内核上。
还会综合分析停机的根本原因,看是硬件故障还是主动运维事件。内核的kdump机制会在崩溃发生时生成一个vmcore,我们还会对从vmcore中提取的信息进行分类,以查看有多少停机时间与特定的vmcore相关联。内核日志中有一些错误信息,如mce日志、软锁定错误信息等。还可以发现停机前后系统是否异常。
通过这一系列的宕机分析工作,将相应的问题提交给内核团队,内核专家会对vmcore进行分析,属于内核的缺陷会给出热修复,解决这些导致宕机的问题。
节点自我修复
大型神龙集群的运维难免会遇到软硬件故障,而云上的技术栈更厚,问题会更复杂。如果单纯靠人力处理问题不现实,那就必须依靠自动化能力来解决。1-5-10节点自愈可以提供1分钟发现异常问题,5分钟定位,10分钟修复的能力。神龙机器的主要异常包括宕机、篡改、主机负载高、磁盘空间满、打开文件太多、核心服务(Kubelet、Pouch、Star-Agent)不可用。主要修复动作包括停机重启、业务容器驱逐、软件异常重启、磁盘自动清理。其中,U4EE5上80%%的问题可以通过重启宕机机器,将业务容器驱逐到其他节点来自愈。再说了,靠听龙?重启和重新部署实例迁移是实现自动化的两个系统事件
2020年双11,阿里巴巴的经济基础设施将100% %u57FA在Kubernetes,基于runV安全容器的下一代混合架构将大规模推出,轻量级容器架构将进化到下一个阶段。
在此背景下,一方面,Kubernetes节点管理将向阿里巴巴的经济池管理发展,开放云库存管理,提高节点灵活性,根据业务特点使用高峰资源,进一步减少机器持有时间,从而大幅降低成本。
在技术目标方面,我们将采用基于?Kubernetes Machine-Operator的核心引擎提供高度灵活的节点运维调度能力,支持节点运维状态的最终维护。另一方面,基于完整的全局数据采集和分析能力,提供极致的全链路监控/分析/内核诊断能力,全面提升容器基础环境的稳定性,为轻量级容器/不可变基础架构的演进提供性能观察和诊断的极致技术保障。br /
《不一样的 双11 技术:阿里巴巴经济体云原生实践》
双11 2684亿成交额的背后,是技术问题的反复尝试和实践。
这一次,我们深入挖掘了双11中云原生技术的实用细节,筛选出22篇有代表性的文章,重新整理成书《不一样的 双11 技术:阿里巴巴经济体云原生实践》。
将带给你不一样的双11云原生技术亮点:
详细描述了超大型K8s集群在双11实践中遇到的问题和解决方案;
云原创生化最佳组合:Kubernetes容器神龙,实现核心系统100% %u4E0A云的技术细节;
双11服务网状超大规模落地解决方案。
“阿里云原生微信微信官方账号(ID:阿里云原生)专注于微服务、无服务器、容器、服务网格等技术领域,关注云原生流行技术趋势、云原生大规模落地实践,是云原生开发者最懂技术的微信官方账号。”
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。