云计算
作者 | 姚捷(喽哥)阿里云容器平台集群管理高级技术专家
本文节选自《不一样的 双11 技术:阿里巴巴经济体云原生实践》一书,点击即可完成下载。
导读:值得阿里巴巴技术人骄傲的是 2019 年阿里巴巴 双11?核心系统 100% %u4ee5云原生的方式上云,完美支撑了?54.4w 峰值流量以及?2684 亿的成交量。背后承载海量交易的计算力就是来源于容器技术与神龙裸金属的完美融合。
集团上云机器资源形态
阿里巴巴 双11 采用三地五单元架构,除 2 个混部单元外,其他 3 个均是云单元。神龙机型经过 618、99 大促的验证,性能和稳定性已大幅提升,可以稳定支撑 双11。今年 双11 的 3 个交易云单元,已经 100% %u57fa于神龙裸金属,核心交易电商神龙集群规模已达到数万台。
神龙架构
阿里云 ecs 虚拟化技术历经三代,前二代是 xen 与 kvm,神龙是阿里巴巴自研的第三代 ecs 虚拟化技术产品,它具备以下四大技术特征:
存储和网络 vmm?以及?ecs?管控,和计算虚拟化分离部署;
计算虚拟化进一步演化至 near
metal hypervisor;
存储和网络 vmm?通过芯片专用?ip?业务加速;
并池支持弹性裸金属和 ecs?虚拟机生产。
简而言之,神龙将网络/存储的虚拟化开销 offload 到一张叫 moc 卡的 fpga 硬件加速卡上,降低了原 ecs 约 8% %u7684计算虚拟化的开销,同时通过大规模 moc 卡的制造成本优势,摊平了神龙整体的成本开销。神龙类物理机特性,可进行二次虚拟化,使得对于新技术的演进发展留足了空间,对于采用一些多样的虚拟化的技术,像 kata、firecracker 等成为了可能。
在阿里巴巴 双11 大规模迁移到神龙架构前,通过在 618/99 大促的验证,我们发现集团电商的容器运行在云上神龙反而比非云物理机的性能要好 10%%uff5e15%%uff0c这令我们非常诧异。经过分析,我们发现主要是因为虚拟化开销已经 offload 到 moc?卡上,神龙的 cpu/mem 是无虚拟化开销的,而上云后运行在神龙上的每个容器都独享 eni 弹性网卡,性能优势明显。同时每个容器独享一块 essd 块存储云盘,单盘 iops 高达 100 万,比 ssd 云盘快 50 倍,性能超过了非云的 sata 和 ssd 本地盘。这也让我们坚定了大规模采用神龙来支撑 双11 的决心。
神龙 容器 kubernetes
在 all in cloud 的时代企业 it 架构正在被重塑,而云原生已经成为释放云计算价值的最短路径。2019 年阿里巴巴 双11 核心系统 100% %u4ee5云原生的方式上云,基于神龙服务器、轻量级云原生容器以及兼容 kubernetes?的调度的新的 asi(alibaba serverless infra.)调度平台。其中 kubernetes pod 容器运行时与神龙裸金属完美融合,pod 容器作为业务的交付切面,运行在神龙实例上。
下面是 pod 运行在神龙上的形态:
asi pod 运行在神龙裸金属节点上,将网络虚拟化和存储虚拟化 offload 到独立硬件节点 moc 卡上,并采用 fpga 芯片加速技术,存储与网络性能均超过普通物理机和 ecs;moc 有独立的操作系统与内核,可为 avs(网络处理)与 tdc(存储处理)分配独立的 cpu 核;
asi pod 由 main 容器(业务主容器),运维容器(star-agent side-car 容器)和其它辅助容器(例如某应用的 local 缓存容器)构成。pod 内通过 pause 容器共享网络命名空间,uts 命名空间和 pid 命名空间(asi 关闭了 pid 命名空间的共享);
pod 的 main 容器和运维容器共享数据卷,并通过 pvc 声明云盘,将数据卷挂载到对应的云盘挂载点上。在 asi 的存储架构下,每一个 pod 都有一块独立的云盘空间,可支持读写隔离和限制磁盘大小;
asi pod 通过 pause 容器直通 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,而 aserver 神龙实例需要配置为 6:6;例如对于云上混部机型,需要为离线任务提供独立的 nvme 本盘实例。为不同类型业务合理规划机型和规格,会极大程度的降低成本,保证性能和稳定性。
资源弹性
双11 需要海量的计算资源来扛住洪峰流量,但这部分资源不可能常态化持有,所以需要合理划分日常集群与大促集群,并在 双11 前几周,通过大规模节点弹性扩容能力,从阿里云弹性申请大批量神龙,部署在独立的大促集群分组里,并大规模扩容 kubernetes pod 交付业务计算资源。在 双11 过后,立即将大促集群中的 pod 容器批量缩容下线,大促集群神龙实例整体销毁下线,日常只持有常态化神龙实例,通过大规模集群弹性扩缩容能力,可大幅节约大促成本。另外从神龙交付周期而言,今年上云后从申请到创建机器,从小时/天级别缩短到了分钟级,上千台神龙可在 5 分钟内完成申请,包括计算、网络、存储资源;在 10 分钟内完成创建并导入 kubernetes 集群,集群创建效率大幅度提高,为未来常态化弹性资源池奠定基础。
核心指标
对于大规模神龙集群运维,有三个非常核心的指标可以来衡量集群整体健康度,分别是宕机率、可调度率、在线率。
云上神龙宕机原因通常分为硬件问题和内核问题。通过对日宕机率趋势统计和宕机根因分析,可量化集群的稳定性,避免出现潜在的大规模宕机风险出现。可调度率是衡量集群健康度的关键指标,集群机器会因为各种软硬件原因出现容器无法调度到这些异常机器上,例如 load 大于 1000、磁盘出现压力、docker 进程不存在,kubelet 进程不存在等,在 kubernetes?集群中,这批机器的状态会是 notready。2019 年 双11,我们通过神龙宕机重启与冷迁移特性,极大提升了故障机轮转效率,使神龙集群的可调度率始终维持在 98% %u4ee5上,大促资源备容从容。而 双11 神龙的宕机率维持在?0.2‰ 以下,表现相当稳定。
标签管理
随着集群规模的增加,管理难度也随之变大。例如如何能筛选出 "cn-shanghai"region 下生产环境,且实例规格为 "ecs.ebmc6-inc.26xlarge" 的所有机器。我们通过定义大量的预置标签来实现批量资源管理。在 kubernetes 架构下,通过定义 label 来管理机器。label 是一个 key-value 健值对,可在神龙节点上使用标准 kubernetes 的接口打 label。例如机器实例规格的 label 可定义 "sigma.ali/machine-model":"ecs.ebmc6-inc.26xlarge", 机器所在的 region 可定义为?"sigma.ali/ecs-region-id":"cn-shanghai"。通过完善的标签管理系统,可从几万台神龙节点中快速筛选机器,执行诸如灰度分批次服务发布、批量重启、批量释放等常规运维操作。
宕机分析
对于超大规模集群,日常宕机是非常普遍的事情,对宕机的统计与分析非常关键,可以甄别出是否存在系统性风险。宕机的情况分为很多种,硬件故障会导致宕机,内核的 bug 等也会导致宕机,一旦宕机以后,业务就会中断,有些有状态应用就会受到影响。我们
阿里云服务器怎么重做系统教程买了云服务器和rds2天了租云服务器配置推荐退回提交的备案-备案平台和双十一云服务器价格相关的内容收不到别人发来的邮件看下图错误提示江苏云服务器怎么选云空间云主机好的域名一般都是怎么起的?新手要了解哪些?