作者|凌敏
过去一年,国产操作系统在技术、社区和商业化方面均取得了快速发展:技术方面,更多企业及研究机构投入到自研系统项目中,原创组件和技术如雪后莴笋般涌现;社区方面,背部社区蓬勃发展linux服务器迁移,新的社区不断出现;商业化方面,OSV都有较为显著的业绩下降。国产操作系统的发展正加速驶向快车道,与此同时linux服务器迁移,不少企业也开始向国产操作系统迁移。
这么,怎么能够更好地迁移到国产操作系统?操作系统迁移会对软件栈带来什么影响?企业开发、运维人员怎样拥抱变化?近期,InfoQ《极客有约》邀请到了政采云公司运维支撑负责人朱海峰老师,为你们分享政采云公司的国产操作系统迁移实战经验。
以下为采访实录,完整视频参看:
姜雨生:欢迎朱海峰老师作客InfoQ《极客有约》,首先,请您简单介绍一下政采云这家公司。
朱海峰:政采云有限公司是一家提供购银企采购云服务生态的公司。旗下有两个核心产品,分别是政采云平台和乐采云平台。
政采云平台是专门面向政府采购的平台,是迎合政府采购数字化变革要求和电商化采购趋势,在监管部门指导下搭建的集网上交易、网上监管和网上服务于一体,覆盖政府采购各领域、全流程、多用户的一站式云服务平台。
乐采云平台是一个银企采购开放平台,二者面向不同的用户群体。乐采云平台是为适应数字化采购的新形势,由政采云有限公司为主建设、独立营运,并将在政府采购领域多年积累的技术能力、运营经验和资源优势等引入到企业采购等非政府采购领域,是为广大企业、村社组织等单位用户搭建的一体化、数智化采购云服务平台。
目前,政采云平台已成为政府采购领域中服务范围最广、用户量最多、交易最活跃的全省性区域一体化云平台。
姜雨生:在谈到云时,我们更多地关注云PaaS方面的能力,尤其是在机器上的搭建。俺们的产品是SaaS软件产品,还是同时包含了管理机器和集群能力的VM等云平台方面的产品呢?
朱海峰:政采云平台是一个以SaaS产品为主的平台,主要是提供SaaS服务。据悉,平台还在建立生态应用的功能,支持采购服务相关的第三方ISV进行进驻等方面提供应用管理的功能。
姜雨生:在过去几年中,我们将企业的操作系统迁移到国产操作系统上,并做了一系列与操作系统迁移相关的工作。请您简单介绍一下所做的工作以及整个迁移过程。
朱海峰:在2020年12月,CentOS社区宣布在2021年和2024年6月末停止为CentOS服务器操作系统8和7提供服务,这一风波被视为一个明显的触发风波。国家的“十四五”数字经济发展规划指出数字基础设施建设,其中非常指出了云估算、5G和物联网等基础领域的发展。这种规划推进了估算产业的转型。
在这些背景下,政采云技术团队意识到CentOS停服可能对我们形成影响,但是国家也在指出数字基础设施建设。为此redflag linux,我们发起了对国产操作系统的督查工作,该督查工作大概从2021年开始进行。
在CentOS宣布停服后,一些国产系统如龙蜥和欧拉也提供了取代方案。我们主要使用阿里云作为云资源,并注意到了龙蜥开源社区的活跃度,因而选择了龙蜥操作系统。
政采云平台是一个提供SaaS服务的云平台。我们支持不同用户以住户的方式进驻云服务,同时也支持政府行业、金融行业和企业等不同领域的本地化布署需求。云上我们主要采用龙蜥操作系统,由于我们观察到龙蜥社区十分活跃,而且它兼容我们之前使用的CentOS生态系统。本地化布署上,我们适配了麒麟、统信和红旗等操作系统,依照顾客采购的操作系统发行版进行适配。我们的业务包括各地政府采购网搭建,以及电子卖场、项目采购等交易平台的建设,这种业务系统都进行了国产化适配的工作。
姜雨生:我们迁移到龙蜥操作系统,整个迁移过程大约是哪些样的?大约多久完成了迁移工作?
朱海峰:在迁移龙蜥操作系统之前,我们主要使用的是CentOS7.4版本。当时龙蜥社区是一个十分活跃的开源社区,它完全兼容CentOS生态,并在性能、安全方面也有所改进,因而我们选择了龙蜥操作系统。
在选择操作系统以后,我们主要有两个步骤。首先是迁移评估,须要评估新系统是否兼容现有软件。接出来是迁移施行。
在评估阶段,我们对操作系统层面和业务应用层面进行了整体评估。在操作系统层面,主要关注内核软件包、系统配置、软件服务等方面的兼容性;而在业务层面,我们主要是Java应用,须要检测是否存在依赖系统层面不兼容的配置和软件,例如字体,或则基础软件服务等。龙蜥在操作系统层面提供了一些挺好的工具,可以在升级之前比较系统软件包的差别。在评估阶段,我们做了一些基准测试,如c盘、网络和中间件方面的测试,我们发觉龙蜥操作系统与当前的CentOS性能数据保持一致。对于应用层面,我们还进行了关键业务的性能测试和功能测试,以确保功能一切正常。
综上所述,迁移评估的结果是,龙蜥操作系统在软件版本上与CentOS生态完全兼容,性能数据基本一致,但是对业务层面的影响较小。
在施行阶段,有两种方法可选:一种是原地升级,在原有机器上进行版本更新;另一种是新节点的滚动替换。对于原地升级,龙蜥提供了相应的工具,可以直接从CentOS切换到龙蜥操作系统。因为政采云平台是基于Kubernetes布署的,我们大部份业务采用了替换节点的形式进行迁移,因Kubernetes对于节点的增减是很便捷的,只有一小部份业务进行了原地升级。
整个版本升级评估大概两周的时间完成,后续的施行过程中滚动升级,随着旧节点下线和新节点降低,整个施行过程会相对拉长,这块对业务的影响较小。
姜雨生:政采云平台原应用系统所需软件包和龙蜥操作系统中软件包的兼容性和依赖包存在差别,最后我们是怎样解决这一问题的?在迁移的过程中还遇见了什么技术挑战?
朱海峰:在实际操作中存在一些差别,由于我们当时使用的是CentOS7,而龙蜥操作系统只支持CentOS8,所以这两个大版本之间有一些功能变更,例如安装包的工具不同。我们通过比较软件包找到了这种差别,并判定不同的系统依赖是否满足我们的需求。实际上,大部份系统层的依赖都是往前兼容的,所以升级对我们的影响并不大,须要做的改动也较小。
另外,在软件安装方面,我们制订了标准规范,使用自建的安装包源,并采用自定义安装包的方式进行安装,尽量避开对系统安装的依赖。对于大部份服务,如NGINX、Elasticsearch、RocketMQ和Zookeeper等,我们通过容器化实现了基础容器镜像,镜像中包含了服务运行环境,这样可以实现在一次建立中多操作系统的布署。
姜雨生:有听众提问,想了解下政采云技术团队在迁移过程中的监控系统以及与稳定性、性能和安全性相关的施行过程。
朱海峰:在迁移过程中,我们对基础设施、中间件和应用层进行了性能测试,特别关注性能数据。同时我们也注重系统调优方面和安全层面的工作。我们按照之前的版本使用了一些固定的参数进行系统调优,而在迁移到新的操作系统时,我们会关注那些参数的适配性,并进行相应的调整。在监控和系统安全方面,我们在云上使用了一些安全产品,比如主机防护会进行巡检并提醒可能存在的差别以及潜在风险。我们还有专门的安全部门负责这种事情。据悉,我们配置了稳定性相关的监控指标,通过监控面板和告警以保证变更不会对业务稳定性形成影响。
姜雨生:政采云公司也有针对金融支撑服务和政务行业的项目,是否也进行了操作系统迁移?不同行业的国产化有什么优缺?您能分别介绍下当时的迁移情况吗?
朱海峰:金融支撑服务和政府行业的项目对国产化操作系统有特定要求。在金融和政务领域,麒麟和统信等国产操作系统被广泛使用,而龙蜥操作系统或欧拉操作系统的使用较少。因为金融支撑服务的采购量相对较小,选择性也较为有限。她们可能只需考虑一款操作系统的迁移,例如银河麒麟或红旗操作系统,金融支撑服务对网路安全的要求更高一些,在进行操作系统迁移解决方案时,我们须要规划离线迁移方案,金融支撑服务对硬件和中间件的国产化要求不这么强烈,政务行业的情况有些不同,它们在操作系统选择方面可能有更多的选项,例如统信、银河麒麟等操作系统。但对硬件和中间件的国产化要求更为强烈,通常政务行业的国产化迁移会包括操作系统,CPU构架,甚至中间件的迁移。
姜雨生:为了帮助企业更平滑地完成操作系统迁移,不少操作系统厂商还会提供对应的迁移工具,我们在迁移的过程中采用了什么不错的迁移工具?有什么迁移经验可以分享下吗?
朱海峰:在龙蜥操作系统迁移过程中,我们进行了督查,并使用了一个叫作centos2anolis的工具。该工具直接支持原地升级,实际上它是通过操作系统本身的软件升级方法实现的。它预先进行了一些软件包的检测,十分便捷且便于使用,可以直接支持操作系统原地升级。
在本地化方面,我们使用了一个名为sealor的阿里开源kubernetes集群管理工具,它将Kubernetes以镜像的方法进行布署。我们也可以借助该工具进行节点的动态下线/上线,很便捷的实现节点滚动升级。
在此方面,我有几点经验分享:首先,在进行小型升级时,建议进行镜像备份或数据备份,由于升级过程中可能会碰到一些问题,须要有手段将系统恢复到升级之前的状态。其次,对于依赖的系统包问题,建议采用前馈的方法来解决,例如,可以通过容器化或自定义安装包的形式对服务运行时环境进行封装,对操作系统的依赖前馈掉。最后,在迁移过程中建议通过一些脚本例如ansible进行手动化,可以重复执行并手动化执行整个升级或迁移过程,因而最大限度地减少人力成本。
姜雨生:在操作系统迁移过程中,包括日常开发工作,主要涉及到时间成本和人力成本。当我们为顾客进行这些迁移工作时,一般的时间和人力成本是如何的?对于私有化布署的顾客来说,我们在迁移过程中不仅提供相关的人力支持,顾客可能还须要提供一些相关的业务人员支持。这么这方面的时间和人力成本大约是多少呢?
朱海峰:在前期进行评估阶段时,须要业务人员的参与。但是,一旦方案成熟并开始施行阶段,就不须要业务人员参与了。我们可以通过手动化脚本来完成运维人员的工作,她们只需进行施行观察,并在须要时进行紧急操作。按照简略恐怕的时间占比,业务人员的投入可能在前期较多,而后续则不须要投入。运维人员则须要全程投入,后期的投入可能会更多一些。因而,评估和施行的时间比列是1:1的关系。
姜雨生:从运维的视角来看,操作系统的迁移会带来什么变化?开发者怎么能够更好地拥抱变化?
朱海峰:操作系统的迁移对系统运维方面可能会涉及一些变化。诸如,安装软件包、网络排查和性能排查工具等日常工作可能会有一些变化,尤其是包的安装方面可能会有较大的变更。据悉,使用不同的操作系统发行版时,解决方案的制订须要考虑不同操作系统的兼容性,对运维工作本身会有一定影响。
对于开发人员而言,她们应尽量减低对系统变化的感知度。一种方法是通过容器化,将应用程序的运行环境与宿主机操作系统前馈。另外,通过工程化理念将运维能力具象为产品功能,使开发人员无需关心底层技术的变化。这样一来,开发人员对操作系统的变更的感知度就可以最小化。
姜雨生:对于这些有操作系统迁移诉求,但还没进行迁移的企业,您会给她们提供什么建议?
朱海峰:对于一些顾客而言,她们并未迁移到国产操作系统。诱因之一是国产操作系统的成熟度尚不够,另外在进行本地化布署时依赖于顾客的基础设施,例如顾客并未订购国产操作系统,因而没有进行迁移,这取决于顾客自身的技术规划。我们不主动建议顾客进行国产化迁移,但我们具备国产化迁移的能力,会向顾客提供这方面的解决方案的支持。
姜雨生:对于这些未迁移的顾客来说,假如面临版本停止服务的情况,这么未来会不会对她们引起严重影响呢?
朱海峰:不仅国产操作系统,她们可能也在使用一些其他的操作系统,比如OracleLinux或其他开源的操作系统。对于使用CentOS操作系统,但是该停服对顾客可能导致影响的,我们会提醒她们关注到这方面的问题,提前规划相关的迁移方案。但是,顾客可能会坚持使用某类操作系统,并不乐意改变使用习惯,这会是一个挑战。并且随着国产操作系统的成熟和观念的变化,我相信会有一些转变发生。
姜雨生:您之前提到了多款操作系统,在使用它们的过程中,针对它们的操作系统本身和生态建设,您有什么建议吗?
朱海峰:个别操作系统难以自行升级内核,但是它们的软件生态系统不够丰富。因为个别操作系统的兼容性问题,必须按照官方的介绍来进行版本升级或内核升级,假如它们没有提供支持,我们将难以进行相应的升级。
目前好多社区都采用商业版和社区版相结合的发展模式。但是,一些操作系统的社区版并不活跃,这造成企业使用该操作系统的成本较高,须要订购商业版能够获得支持。假如使用社区版,可能会在面临一些问题的时侯欠缺有效的支持。据悉,目前的操作系统如欧拉和龙蜥等linux服务器代维,与云服务提供商有一定的关联。例如,欧拉是华为云天然支持的操作系统,而龙蜥操作系统则是阿里云直接提供的。一个优秀的国产操作系统应当与主流云服务提供商都有合作,无论是在那个云上,都可以便捷的使用她们的操作系统。
姜雨生:国产化适配是一个系统性工程,实现国产化操作系统替换只是第一步,未来我们都会有什么规划?会探求什么新技术方向来解决我们和顾客面临的主要产品问题?
朱海峰:我们在规划国产化适配时,并不仅仅考虑操作系统,还包括硬件方面,如CPU构架的变更,目前国外一些公司,如华为,正在推广ARM构架的鲲鹏服务器;还包括了国产化的数据库、中间件取代方案。在整个平台中,国产化取代方案也有相应的规划,例如,我们要支持ARM构架的CPU,数据库的国产化支持,如达梦数据库等。
在操作系统层面,运维会尽量减低对业务的影响,但在CPU构架,数据库层面的变化,业务的感知度会非常大,尤其是数据库方面,对业务的侵入性比较大,须要业务方面提供相应的支持,改建适配成本会比较高。
作为运维支撑部门,我目前的主要关注点是政府采购平台的阵雨布署、运维和维护,技术侧主要关注多集群管理,集群弹性能力和云原生网段等。
姜雨生:从您的部门角度来看,运维部会探求什么方面的新技术呢?
朱海峰:首先,我们须要基于现有技术来思索我们的技术发展方向。其次,我们须要明晰这种技术实际上解决了什么业务问题。在运维和技术保障方面,我们早已着手处理一些重要项目,比如可观测性平台。关于这种项目,您可以在InfoQ平台上找到相关文章,这种内容十分值得一读(延展阅读:《云原生时代,怎样建设稳定性可观测体系?》)。
姜雨生:有听众提问,可以简单介绍下怎么构建可观测体系吗?
朱海峰:我们曾经主要是基于日志、指标、链路等指标来建立整个监控体系,这三类数据是分别处理的。我们的运维开发部门基于OpenTelemetry开发了的整体可观测性系统。该系统就能搜集上述数据并构建关联。当收到指标警告时,该指标可以关联链路和日志数据,因而是告警接受者全面的了解问题。
据悉,我们的工程师还在使用eBPF技术进行更精细的数据搜集,尽量减低对业务层的依赖。在这方面,社区里比较热门的项目是DeepFlow,我们团队也在与DeepFlow协同合作,搜集不同类型的数据,通过数据估算关联,最终产生稳定性盘面。据悉,我们希望才能把监控数据基于算法与模型进行估算,提供智能化的监控解决方案。
嘉宾介绍
特邀主持:
姜雨生,谷歌软件工程师,负责谷歌资讯业务与GPT集成,曾负责谷歌广告团队基础设施搭建与维护工作。
嘉宾:
朱海峰,政采云有限公司运维支撑负责人,关注混和云构架下的云原生技术场景,例如多集群管理、弹性能力、云原生网段等。
你也「在看」吗?