阿里云贾正华分享:Alibaba Cloud Linux为倚天实例打造最佳OS体验[阿里云]
为了更好的方便各位开发者和用户了解并应用ECS倚天实例,由阿里云弹性计算联合基础软件团队 & 平头哥 & 安谋科技(arm)等十余位专家、架构师、开发工程师等,共同发起的【倚天实例迁移课程】正式上线,本次系列课程共计10节,共分为基础篇;架构迁移篇;性能优化篇三个篇章,从不同角度为用户带来更加丰富和专业的讲解。2023年8月31日,系列课程第四节《Alibaba Cloud Linux:为倚天实例打造最佳OS体验》正式上线,由阿里云操作系统产品专家贾正华主讲,本期节目在阿里云官网、阿里云钉钉视频号、InfoQ官网、阿里云开发者微信视频号、阿里云创新中心直播平台&微信视频号同步播出,同时可以点击【https://developer.aliyun.com/topic/ecs-yitian】进入【倚天实例迁移课程官网】了解更多内容。以下内容根据贾正华的演讲整理而成,供阅览:
阿里云自2009年起就已经开始进行自研操作系统的研发,那时主要服务于阿里巴巴集团内部业务,随着云的发展,越来越多的用户上云,同时也对云上的操作系统提出了各种各样的诉求。像硬件适配的诉求、软件优化诉求、应用开发诉求,而这些诉求其实在集团上云时都遇到过,所以觉得需要在集团积累关于操作系统技术相关的内容,都开源开放到云上,给云上的用户使用。2017年发布了云上的第一个操作系统版本 Alibaba Cloud Linux 17.1,在那个时候云也同时进入了一个真正的高速发展阶段。不管是在硬件支持,还是软件应用的更新、功能的创造,用户对操作系统的诉求都呈现出了爆发式的发展,所以我们在后续的时间里也对操作系统进行了高速的迭代更新。在2019年发布了搭载4.19内核的第二代阿里云操作系统,在2021年发布了搭载5.10内核的第三代阿里云服务器操作系统,同时同年也发布了第一个ARM操作系统,为后续阿里云倚天ECS操作做好了操作系统软件的铺垫。其实回顾历史都是实际的业务诉求促进了我们操作系统的发展,同时操作系统发展也帮助提升了云上用户的软件的体验。经过多年的发展,也得益于广大用户对 Alibaba Cloud Linux 的认可,截止到2023年 Alibaba Cloud Linux 已经成为阿里云上用户规模部署最大的操作系统。在阿里云全域,包括国内、海外已经有数百位实例的部署,同时可以看到上图的曲线,目前仍然在保持高速的发展。操作系统在整个软件上看非常庞大,今天从宏观层面做一个简单的介绍。操作系统底整体宏观架构都是差不多底下是阿里云基础设施,主要包括我们今天重点介绍的倚天硬件,操作系统本身也不仅仅支持ARM架构,所以还有常见的X86架构的硬件。操作系统之上就是用户,主要是包括常规的外部用户、阿里云集团的用户,还有一个很重要的用户是阿里云的云产品。中间部分是操作系统,我们知道 Alibaba Cloud Linux 技术是基于龙蜥操作系统作为base的增强开发,所以在这里简单介绍一下龙蜥社区和龙蜥操作系统。龙蜥社区是阿里云联合国内外多家厂商发起的操作系统社区,主要的发行版是龙蜥操作系统,社区主要围绕的是芯片、内核、编译器、安全、虚拟化等操作系统的核心领域进行的技术创新。同时还为各类的技术构建了非常完善的生态,例如最近的CentOS停服的问题,龙蜥社区也发布了对应的CentOS迁移的工具来帮助大家迁移到龙蜥操作系统。像针对国产化硬件的生态,也已经建设了非常完善的操作系统的软件生态适配,同时社区还孵化了很多迁移、容器、高性能存储等方面的SIG,还有很多社区的项目类似面向GDK JAVA、BaBaSL等具体的技术的SIG。Alibaba Cloud Linux就是在龙蜥系统提供的坚实的基础上为阿里云云场景建设的操作系统,在社区提供的基础的硬件支持、软件生态、安全能力的支持上面,阿里云会对操作系统的内核,软硬协同能力结合阿里云自身的特点进行优化。例如按照倚天的硬件特点进行CPU、内存、网络等方面的优化,包括内核及参数的调优等,在后续的内容会进行详细的介绍。另外结合阿里云的飞天管控,各类的云产品像容器服务、安全服务也会进行一体化的方案输出,如结合阿里云的飞天管控能力,构建了急速启动的方案,可以极大程度减少用户实例启动的时间,提升用户在云上的弹性效率。结合阿里云容器服务ACK构建的云原生优化的OS方案,帮助用户在云原生场景下做更多的优化,有更好的云原生的体验。同时在阿里云上还能自动接入阿里云的服务体系、运维体系,享受阿里云专业的操作系统支持和运维服务。
用户准备使用倚天实例第一关心的事情一定是倚天的ARM架构和其他的架构不一样,我在上面能不能部署自己想要的应用,答案是肯定肯定的。Ali linux已经在阿里云上为用户做好了完善的ARM生态的支持。例如在倚天裸金属或者倚天ECS实例上部署的应用,可以简单的通过阿里云购买页或者Open API的方式使用Ali linux创建倚天实例。同时已经完成了应用软件的生态集成,包括数据库软件MySQL、redis;大数据软件Spark、Flink等;webserver软件httpd等;甚至当下很火的AI的应用TensorFlow等都已经默认在我们的repo上集成,只需要在实例当中简单使用Yum命令就可以安装你想要的应用。另一方面就是云原生用户的场景,如果想要在ACK或者自己的K8S环节上使用,已经在阿里云上的服务ACR的制品中心提供了一系列的基础镜像和应用镜像。这样既可以给用户提供阿里云一方维护的镜像软件,同时也可以避免用户经常在使用DockerHub过程中遇到的各种各样的问题,如网络连接问题、无人支持的问题。这些都是应用生态的建设。有了一个完善的生态支持后用户就可以部署自己的应用,用户在下一步一定会关心应用部署在倚天上的吞吐延时是否能满足诉求。基于这一点阿里云基础软件团队为用户在主流场景下提供了大量的优化,如内核优化、编译优化、运行时的优化,在倚天强劲硬件能力的基础上进一步提升应用的性能,如数据库MySQL 之类的场景,通过内核pgo、代码大页、编译器FDO、LTO、中断聚合、调度优化等多种手段在开源基础上进一步提升性能,实测数据显示对mysqltps有40%、对redisops有30%的性能提升。在常见的websever场景下,也可以通过pgo、xps,再结合应用配置优化等手段来提升nginx、httpd等应用的性能,实测数据显示也可以获得百分之二三十的性能提升。在大数据这种计算密集型的场景,倚天ECS硬件本身已经可以发挥出比较好的性能收益,不过也可以结合64K内核页、编译优化、JDK优化来在原来的基础上再次提升百分之十多的性能。前面都是针对一些E2E应用场景的性能提升,我们操作系统也从一些微观层面的microbenchmark的角度对各项测试做了验证,如应用编译器的快速序列化、配置优化、参数优化、策略优化等手段对SPECjbb、golang、unixbench进行了不同程度的优化。通过这一系列的优化手段,可以让用户在享受倚天性价比优势的同时进一步利用软件带来收益。因为部分性能优化手段是通用的,所以我们已经在系统开机时就已经默认使能,而有一些优化方式是针对特定场景才会有效果,在其他场景可能出现相反的优化效果,为了防止这类情况的出现,我们特意将我们的优化能力做成系统的默认服务,可以自动化的进行性能调优,这就是我们的性能调优服务—-轻豚。轻豚服务在系统开机是默认启动,用户无需特殊使能,仅需简单配置,他就可以自动化感知应用的情况来进行自动化的调优。目前的调优方式主要有两种,一种是通用场景下,他会自动化的进行通用配置优化,这些优化项都是基于阿里云整个倚天项目的参与方共同的积累;第二种是应用场景,这类场景相对比较复杂,因为用户的应用可能时时刻变化的,所以我们设计了两套方案:一种是由轻豚自动感知应用自动根据专家知识库或者算法来进行优化,而另一种是根据用户的手工配置来进行优化,两种方案各有千秋,方便用户在不同场景下的使用。当前我们的轻豚性能优化服务已经覆盖webserver、数据库、大数据场景,未来我们还将扩展到AI、云原生等领域,对更多用户场景进行覆盖。目前我们轻豚静态调优版本已经可以在阿里云上选择ECS booster来使用,而作为操作系统的性能优化服务预计会在10月份与大家见面,希望到时给大家带来不一样的惊喜。用Ali linux来部署应用稳定吗?这块用数据来说明,基于阿里云上大量操作系统实际数据显示,Ali linux相比centos宕机率有50%的降低,这样优秀的稳定性主要来源于几个方面:首先Ali linux和其他linux操作系统一样,都是选择一系列开源软件来建设的,ali linux操作系统是基于龙蜥社区及其多个活跃稳定的上游社区为base建设的,这里选择活跃开源社区很好的保证了开源软件的基础质量,同时我们在选择软件构建操作系统的时候也会充分考虑行业标杆redhat,我们会站在巨人的肩膀上取他的长处,参考他的软件维护方式。这两块主要是保障了我们操作系统基础软件的基础质量,但是真正重要的下面两点:第一是大家目前在阿里云上选择使用的Ali linux与阿里集团(包括淘宝、天猫、蚂蚁等)、阿里云的各个云产品包括数据库、容器服务、大数据等使用的操作系统一模一样,我们的操作系统都是在阿里集团海量应用、还有双十一等大促的极端环境打磨,是经过千锤百炼的,有任何问题都已经在实践中发现过而修复了,第二就是基于云上的商业化服务标准,阿里云操作系统团队以专业的操作系统服务来快速响应、修复各类问题,以保障操作系统的稳定性。正是这四层基础构建了ali linux优秀的稳定性,保障的上面用户应用的稳定性。虽然Ali linux已经提供了很好的稳定性的基础,但是因为应用场景的不同、资源规划的不同,用户肯定还是会多多少少遇到不一样的系统异常的问题,而操作系统的运维本身是一个非常复杂的技术,为了方便用户在云上各种场景的运维的便利性,将阿里巴巴集团多年打磨的操作系统运维能力同时也来放到Ali Linux上面。在Ali linux当中提供了一套集监控、诊断为一体的智能化操作系统运维工具集SysAK。我们在SysAK中提供了两套运维能力。其一是监控模式,可以对于系统的资源、系统瓶颈指标、干扰指标以及容器资源的指标进行全方位的监控。用户对于计算资源、内存资源可以有直观的监控,例如运行在大数据场景下经常遇到的CPU瓶颈,SysAK监控可以很容易的看到CPU瓶颈出现。还有系统的干扰,例如很多软件数据包来的时候,可能会有大量中断的产生,也可能会产生大量内存的申请,这些都可以通过系统干扰指标看到。另外一个是大家用的很多的容器场景,容器的资源和虚拟器的资源在使用上还是有很大不一样的,例如容器的资源隔离能力是不够彻底的,这时用户对于容器资源的指标也需要有一个更加清晰的数据监控的体系。不过光知道指标出现异常还不够,还需要知道是什么样的原因引起了指标异常。这个时候SysAK提供的另一诊断模式就可以派上用场了,诊断模式主要用于分析不同场景出现异常的原因,例如在通用场景下SysAK提供了一键的健康诊断能力,可以帮助用户在无从下手的时候进行系统的自动化分析。这块沉淀主要来源于在集团的大量运维案例,将这些在实际运维中遇到的问题沉淀下来形成这套健康诊断系统。如果用户已经有了一定的系统问题认知,例如已经看到了现在系统在持续发生内存减少,可能出现了系统内存泄漏,这时专家诊断的功能就已经可以派上用场。例如刚提到在内存泄漏时,SysAK有专门的内存子系统内存泄漏的诊断能力;当出现软件丢包是,SysAK有软件丢包分析;当出现io异常可以使用SysAK的IO分析来定位具体是什么样的IO产生这种的阻碍。这些能力都可以让用户快速定位到发生异常的实际原因是什么。同时,因为SysAK仍然有比较高的使用门槛,我们与轻豚性能服务一样,将SysAK的监控、诊断能力抽象成系统运维服务SysOM,内置到我们的Ali Linux中,开机默认启动,用户无需特殊开启,仅需简单的配置,他就可以自动化感知系统运行。在Ali linux启动的时候SysOM服务将会默认启动,因为一些特殊的监控诊断功能可能会有性能或者资源的感染无法做到常驻系统,默认场景下会使能对系统无影响、无感知的能力,对操作系统内核、系统服务、主流应用自动化的监控和诊断,当用户需要时即可通过简单的命令或者日志查看;针对无法做到常驻系统的能力,也提供了API接口,这些接口可以与用户自己的运维系统对接,在业务感知到异常时立刻调用使能,使用完之后关闭即可,这样既不妨碍系统的常规运行,也可以在需要的时候动态抓取异常现场。另外,针对常驻或者有触发条件的监控、诊断SysOM也提供了告警功能,可以自动化的及时同时到用户,防止因为没有关注到而被忽略的系统异常。目前SysOM已经覆盖了主流应用场景,如webserver、数据库、大数据等场景,同时对系统的服务、内核的调用都可以做到自动化运维。该功能目前和轻豚服务一样,也会预计在10月份上线,欢迎大家使用。有了好的生态、性能、稳定性,用户一定会关心这个系统可以用多久?不要和CentOS一样用着用着就没有。下面展示了一份阿里云官网承诺的生命周期,Alibaba Cloud Linux将会持续保持10年的生命周期维护,当前的版本主要是2和3,2因为在阿里集团内部服务很久,同时在云上也很多年了,目前规划的是会到2024年EOL。当前的主力版本是ali linux3,将会为用户持续提供服务到2031年,同时针对现在正在使用ali linux2的用户也提供的升级迁移方案让用户平滑的迁移到3上。这里也简单说明一下操作系统生命周期中的不同阶段的一些维护方式的差异,目前整个生命周期主要分为开发支持阶段和维护支持阶段,在开发支持阶段我们将会持续进行大量的新功能的支持,新硬件的适配,合入大量的特性和代码,合入的代码量是非常大的,版本发布的频率也会比较高,然后在维护支持阶段将会尽可能的减少代码合入带来的影响,主要进行安全漏洞、bugfix,针对重要的功能性需求将会严格审视后决策是否合入,这样尽可能的保障用户在系统的后生命周期阶段减少版本更新带来的影响,当然不管是开发支持阶段还是维护支持阶段针对安全漏洞和bugfix的处理都是持续、高效的。不过针对新的功能需求当然是更加建议用户采用更新的版本来使用。在十年的操作系统生命周期中,用户可以在阿里云上免费的获取、使用、修改ali linux;在这十年中,阿里云操作系统团队将会持续提供软件更新、功能更新、问题修复、安全漏洞修复等;同时在阿里云上使用Ali linux,将会默认接入阿里云的服务体系,用户可以通过工单等多种渠道联系,给团队反馈问题,提需求,交流技术。PPT的最后也有团队的联系方式分享,欢迎大家联系。前面详细讲解了ali linux操作系统在倚天实例上为用户提供的各项保障,这里再做一下简单的总结。Ali linux操作系统首先从基础软件生态上保障用户可以轻松的在倚天实例全场景上部署应用包括ECS、裸金属、云原生等,为用户使用倚天ECS建设了完善的倚天ARM生态。然后通过多样的操作系统优化手段、性能优化服务进一步释放软件性能,让用户在享受倚天实例硬件能力的同时,充分发挥软件价值,享受软硬协同带来的极致性能体验;同时Ali linux操作系统通过坚实的选型基础、海量应用场景的极致打磨、操作系统团队的专业维护,为用户在倚天ECS上构建了一个稳定可靠的软件基础;同时结合多年实践打磨沉淀下来的运维工具和专业的操作系统服务支持,让用户可以用的放心,用的省心。最后,阿里云官方持续承诺的十年生命周期维护,也让最近饱受CentOS停服困扰的用户,可以放心大胆的选择使用。这一系列的技术,为倚天实例上使用Alilinux的用户提供了一个最佳的操作系统体验保障。三、用户案例前面对Ali linux操作系统技术做了详细的介绍,那么到底在用户侧的表现如何呢?我这里列出了一些实际用户场景的例子。前面在说明稳定性的时候有提到阿里集团、云产品是最早使用ali linux的,可以给用户做到很好的背书作用,同时也可以很好的打磨场景,所以这里也从他们介绍起。首先集团业务,Ali linux在倚天场景下已经成功支撑阿里电商618、99大促、双十一等多个大促活动,里面涉及电商、数据库、存储多个业务场景,其中电商核心交易系统相比竞对产品有20%~30%的成本优势,同时也能保持一样优异的稳定性。然后就是阿里云的云产品,包括阿里云数据库、视频云、容器服务等多款云产品都已经基于Alilinux完成了倚天的上线,即开即用,屏蔽生态差异,同时在数据库RDS产品上可以看到相比X86有25%的性价比提升,相比友商同类产品的性能有50%提升。最后是云上客户,多个客户在使用ali linux上倚天实例的过程中,在倚天ECS本身提升性价的同时进一步通过软件提升性能带来更好的性价比提升。四、产品规划最后针对未来的规划,也做个介绍,这张图里面展示了Alibaba Cloud Linux及其上游AnolisOS的生命周期视图,Anolis因为社区的规划将会在Anolis25之后的LTS使用3+2的5年生命周期发展模式进行演进;不过ali linux将持续保持10年的生命周期服务模式,只是从之前的5+5模式将会演进到4+3+3模式,这样的改变主要来源是因为云上客户使用操作系统的习惯和用户的诉求。前面4年,将会采用高频的更新来进行新功能的支持,进入第一个3年开始,用户其实的业务系统其实已经运行稳定,其实不是很想要再发生系统的变化了,所以我们将会放缓更新频率并且审视所有合入的功能类需求,尽量减少版本合入带来对客户的影响。进入最后一个三年,用户的应用其实已经运行很久,更加不愿意升级系统了,所以此时将会采用按需的方式进行版本发布,当然在整个10年生命周期中不管处于哪个阶段,都会持续修复安全漏洞和bugfix,保障用户的安全和稳定性。倚天社区作为一站式的开发者的支撑平台,提供了丰富的业务使用经验,包含软件应用、工具、活动信息等等,欢迎大家登录去社区了解更多咨询,同时可以扫码免费领用倚天ARM云服务器,开启属于你的云上实践之旅。以上就是本次课程的全部内容,想要回看【倚天实例迁移课程】的全部内容,欢迎点击下方链接进入活动官网查看。课程传送门:https://developer.aliyun.com/topic/ecs-yitian