基于Rancher的DevOps应用于智慧校园的研究

2022-01-11 09:42施晓权林平荣杨俊钦陈沛伦
现代计算机 2021年32期
关键词:遗留代码容器

施晓权,林平荣,杨俊钦,陈沛伦

(广州软件学院软件研究所,广州 510900)

0 引言

随着《教育信息化2.0 行动计划》的颁布,中国教育信息化迈进了“2.0”时代。智慧校园作为教育信息化的更高级形态,高校需要在此新时代的机遇与挑战中,依托大数据、物联网、人工智能、区块链等新兴技术,为智慧校园的建设提速。《“十三五”国家信息化规划》明确指出,高校要把握技术变革趋势,聚力建设智慧校园,推动教育智慧化转型[1]。在智慧校园建设过程中,高校在教学、管理等方面演化出繁多的信息化系统,随着建设推进,系统规模也日益庞大[2]。为了满足智慧校园的可持续活跃,需要持续的优化迭代升级与运维来保障,而教育政策的变革、智慧校园系统日益频繁变更的需求、新老技术的更新迭代,这些都需要庞大的变更和维护成本。此外,软件开发与运维已经进入容器时代,构建环境容器化早已应用于各大规模的项目中,连贯的工作流程和流水线也需要一种方便易上手的方案。基于此,构建一套既满足发展需要,又能衔接陈旧系统的开发迭代方案对于智慧校园转型是十分必要的。本文围绕高校转型智慧校园背景,提出基于Rancher 的DevOps 平台,来降低开发迭代的成本,降低持续活跃的难度系数,提高产品发布的容错性,借助用户反馈加速产品迭代,推进智慧校园建设,促进高校教育信息化踏上新阶段。

1 Rancher简介

目前容器管理的标准是Kubernetes,Kubernetes 也被大多数的云厂商作为标准的基础设施对外提供。Rancher 支持对所有的Kubernetes 集群进行集中化创建和管理,用户可以通过Rancher 提供的UI 界面进行点击操作即可管理Kubernetes 集群,不再需要执行复杂的脚本命令。这为高校信息化系统上Kubernetes 提供了可行性。而Kubernetes 可以实现容器自动化部署、自动化扩容、自动故障迁移等,在各种信息化系统数量及规模日益庞大的智慧校园场景中,如果高校如果能够基于Kubernetes构建,其中的价值不言而喻。

Rancher 是一款开源的企业级容器管理工具。Rancher 提供了在生产环境中使用的管理Docker和Kubernetes 的全栈化容器部署与管理平台,主要由基础设施编排、容器编排与调度、应用商店和企业级权限管理四部分组成。Rancher 的运行仅需主机具有CPU、内存、硬盘和网络资源即可,并且可以运行在任何Linux 主机中,因此Rancher 可以运行在各种公有云或私有云上。此外,Rancher 的各种服务是通过容器化部署的,具有灵活的容器编排与调度机制和严密的企业级权限管理机制,这些让Rancher 具备了通用、高可用和安全等特性。

Rancher 由五层架构组成。最底层是基础的虚拟化环境,可以使用VMWEAR 搭建或者由各大云厂商提供;第二层是运行在虚拟化环境的各种Linux 主机;第三层是各种基础硬件和网络服务;第四层是用户管理、由Docker Swarm、Kubernetes 等各种容器编排管理工具组成的容器编排管理服务等;第五层是运行在容器上面的各种应用。五层架构说明如图1所示。

图1 Rancher五层架构说明

2 基于Rancher的DevOps方案

Meyer[3]提出实现持续集成系统的关键因素是版本控制和持续集成服务器。Armenise[4]提出Jenkins 可以实现持续集成和自动化的构建,通过Jenkins 可以实现持续交付。张兆晨和罗铁坚[5]在他们的基础上,提出了一种基于Jenkins和Docker的CCI 持续集成系统,提出代码管理、持续集成和持续交付的一体化工作流方案。但并没有实现容器的管理和部署编排工具, 缺乏可视化的用户管理界面。在高校中,专业且职责单一的运维人员比较少,低门槛、高可用的运维平台是高校运维人员优先的选择,因此,本文提出一种基于Rancher 的DevOps 方案,不仅可以达到一体化代码管理、持续集成和持续交付,而且可以通过可视化的用户管理界面进行容器编排管理、滚动发布,并实现了自动化部署、自动化扩容、自动故障迁移等,降低了运维的门槛和成本。

基于Rancher 的DevOps 方案主要借助Gitlab、Jenkins、Maven、Nexus、Docker Registry 等工具,构建高可用的自动化DevOps平台。开发人员在编码阶段通过GitLab 版本管理工具对代码进行版本管理,初次编写完成后上传到Gitlab,通过Jenkins 自动触发构建动作,DevOps 会自动拉取代码,通过脚本使用Maven进行打包并上传到Nexus私服上,之后执行容器化部署操作,将最新的代码打包成docker 镜像,并发布到Docker Registry私服上,之后发布到Rancher 集群环境下的Kubernetes 上,通过Rancher 进行监控服务状态,同时Jenkins 会将代码发送到Sonar 进行审查,审查结果会通过Sonar 告诉开发人员,对存在隐藏Bug的地方,开发人员可以根据修改建议进行修正。开发人员对程序代码进行迭代操作时,再次自动构建时,DevOps 会自动再次执行以上操作,唯一不同的是发布到的Kubernetes 上时是通过滚动发布的形式,会自动对服务逐个进行升级,不需要停止对外服务即可依次完成更新升级。运维人员可以进行指定版本代码,打上标签标记发布到生产环境,Rancher 会根据调度规则创建指定代码的服务,运维人员也可以根据Rancher 提供的可视化监控界面,实时查看CPU 使用率、内存使用率、磁盘压力、Pod、Service 等各种的资源情况,根据实际需求情况在Rancher 对各服务进行调整。基于Rancher的DevOps方案如图2所示。

图2 基于Rancher的DevOps方案

3 遗留系统过度到DevOps方案

在智慧校园的建设中,新的信息化系统采用新技术开发,可以直接使用DevOps方案,但更多的需要考虑旧系统的改造,让其平稳过度到智慧校园中。教育信息化的发展过程存在阶段性的差异,在教育信息化推荐的过程中,技术也在不断的迭代更新,国内高校在教育信息化初期发展过程中普遍对信息化认知不足,缺少顶层设计与规划,导致信息化建设各项标准未能完全统一,各业务模块之间存在壁垒,出现了各种“烟囱式”信息化系统[6]。为了迎合政策变化、需求变更,不断在现有系统堆砌业务,加上开发和运维人员流动、文档缺失等因素,越来越多的系统逐渐演化成遗留系统(legacy system)[7]。应用系统分散,业务不协调,日积月累,导致大部分高校普遍存在“信息孤岛”现象,严重阻碍了智慧校园发展的融合[8]。

遗留系统对高校的发展决策具有重大意义,管理层可以利用数据分析、数据挖掘等新技术从遗留系统中挖掘出潜在的数据价值,为今后的发展决策提供宝贵的数据资料。随着技术的发展,老技术不再适合现有的业务场景,也将逐步淘汰,相对应的专业人才也逐步减少,这给遗留系统的维护、迭代带来了一定的挑战。在微服务、DevOps 技术还没有出现之前,对遗留系统的迁移是举步维艰,牵一发而动全身,不可能做到既能保持现有业务稳健运行,又能逐步对遗留系统进行改造,而且对遗留系统的改造还需要耗费巨大的人力物力。DevOps 的出现,让遗留系统的改造具备了可行性。遗留系统过度到DevOps可以分为两步走。第一步是数据迁移,遗留系统过度到智慧校园,必然是由新系统接替,但其积累的大量弥足珍贵的数据如何平稳迁移到新系统是必须优先考虑的,结合系统迁移的需求,可以采用纵向划分的办法,根据功能模块对数据进行划分,设计新的数据库,再通过ETL 工具将数据迁移到新的数据库,逐步的对数据进行迁移。在新系统没有完全改造完成、停止旧系统使用前,新老数据库同时使用,定时同步,确保数据的一致性。第二步是系统改造,大部分的遗留系统都是初期的信息系统演变而来,大多数是整体部署的项目,一个项目就一个工程,没有按功能模块划分,所有的功能实现都放在里面,高度耦合,只能统一部署。对遗留系统的改造,可以根据现有的业务场景进行功能划分,并选择第一步划分好所需要的数据库,采用模块化、按需逐步的开发方式,使用DevOps做到快速开发,缩短改造的工期和所需的人力物力。

通过以上的改造,无论是新老系统,都可以在DevOps 上进行迭代开,做到系统之间的解耦,逐步使用新系统替换遗留系统,通过Rancher 还可以做到系统的滚动升级,不需要停机也可以做到系统升级。后续如果需要对系统服务再次升级改造时,只需要选择对应的服务进行升级即可,这样就可以做到业务和技术同时不断迭代更新,不会再产生新的遗留系统。

4 DevOps平台搭建

通过Vmwear 平台,虚拟出一台4 核8 G 的Centos7 主节点和两台4 核8G 的Centos7 从节点,构建了基于Rancher 的DevOps 平台。将基于Racher的DevOps应用到智慧校园下的统一身份认证平台和智慧校园建设中的智慧迎新项目(由迎新遗留系统迭代演变而来),验证平台的可行性。具体环境配置如表1所示。

表1 环境配置

通过Jenkins 安装好Git、SonarQube Scanner、Shell 等相关的插件,构建一个Maven 的项目,配置从Gitlab 拉取代码并设置钩子,当开发人员提交代码时会触发钩操作,在Jenkins定义构建shell脚本,通过自定义脚本,对代码进行编译、打包,再通过Docker-compose 根据预先编写好的Dockerfile 构建程序的Docker 镜像,完成后通过Post Steps 发送通知给Rancher,并将代码发送到SonarQube 对项目代码进行审查,SonarQube 会自动发送检测报告邮件给提交者。Rancher 接收到Jenkins 的通知后,根据预先设定好的命令对容器进行更新启动。虽然实验过程遇到不少挫折,如安装Rancher 集群时需要预先开放好端口或者关闭防火墙,否则集群会搭建失败,Jenkins 搭建需要通过命令预先修改为国内源,否则会在初始化阶段失败,导致搭建失败,最终将两套代码部署到平台上,部分构建过程日志如图3 所示,验证了基于Rancher的DevOps的可行性。

图3 构建日志

5 总结

基于Rancher 的DevOps 平台在高校智慧校园建设过程中,为遗留系统的改造提供了可行性,节约改造成本,避免新遗留系统的产生,也让新系统的开发可以高效交付,快速迭代。通过平台实现容器化部署、自动化运维,统一部署环境,做到一次构建到处运行,降低部署成本和人工参与的频率,避免陷入琐碎且易犯错的盲区。通过平台的实践使用,为高校在智慧校园建设中搭建DevOPS和遗留系统的改造提供借鉴。

猜你喜欢
遗留代码容器
遗留群柱中关键柱判别方法与软件
许林涛作品
难以置信的事情
神秘的代码
液体对容器底及容器对桌面的压力和压强
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
静寂的故宫博物馆
取米
近期连续上涨7天以上的股