论文部分内容阅读
[摘 要]本文结合容器标准化交付与统一化环境的特点,围绕单位内部分现有业务系统进行容器化改造,致力于形成将研发的软件功能作为一种服务提供给用户,形成開发运维一体化的统一平台。
[关键词]基础设施;云整合;容器化改造;管理云
中图分类号:TP368.5 文献标识码:A 文章编号:1009-914X(2018)11-0242-01
引言
十九大工作会议上重点提到加快云计算技术发展,为当下各单位科技系统建设与升级提供了方向。通过改变现有业务系统与基础设施架构,建立单位内部自有PAAS平台,以实现业务系统结构转型,建设提供统一业务能力接入的业务开放平台,从而可根据业务能力需要测算基础服务能力,向下通过IaaS提供的API调用硬件资源,向上提供业务调度中心服务,实时监控平台的各种资源,并将这些资源通过API开放给业务端用户。根据上级领导所规划战略方向,笔者所在云科技小组尝试对基于Docker技术的云服务架构的可行性探索。
1 基础设施云整合
1.1 内部硬件设施情况
云科技小组首先开展了分布式存储技术研究和探索,为实现灵活配置、动态伸缩、安全可控的存储架构提供技术储备,为后续数据中心建立打下基础。分析目前单位内部硬件设施情况,普遍存在硬件资源利用率难以提高问题,虚拟化红利被日益庞大数据量及应用系统集群日益消耗,同时Hypervisor性能损失及资源占用也无回避。同时,在安全性方面,只有部分重要业务系统可实现数据与系统冗余热备,剩余只能被绑定于某个服务器甚至虚拟机上。
1.2 分布式存储引入
随着互联网和云计算发展,业界开始采用分布式技术打造新一代存储系统,提高基础架构的敏捷性。横向比较HDFS、Open Stack Swift、Ceph和Gluster等热门开源技术方案的功能特性、数据管理、访问速度以及备份安全性后,采取使用分布式存储架构Ceph作为测试切入点。
1.3 Ceph存储架构
Ceph分布式存储整合利用分散计算能力及存储资源,将每个服务器变为一个资源管理节点,形成资源池,在存储集群基础上构建分布式的存储系统,对上层程序提供统一访问接口,同时对应用I/O及限额等灵活控制。
2 现有业务系统容器化改造
2.1 Docker概念引入
与现有虚拟机不同,Docker更像一个应用,首先宿主机环境即可满足需求,避免占用额外CPU及内存,资源使用更加高效。其次,对容器操作不会影响操作系统,部署停用更可以瞬间完成。2016年初Docker1.10版本引入命名空间(namespace)进行资源隔离,提高了安全性,由于所在单位信息安全要求较高,上述特性都是目前应用系统运维所亟需的,故开始探索现有业务系统容器化可行性。
2.2 容器化过程
2.2.1 系统容器化
需根据对于业务系统特点,选择Apache、Tomcat或Nginx等方式,当然上述web服务器都是Docker镜像且可直接拉取的。
2.2.2 数据库容器化
数据库如db2,mysql,mongodb等镜像也易于获得,但是由于容器的无状态的特点,故多数情况下数据库容器需映射本地目录以实现数据持久化。
2.3 实践情况
避开重要业务系统,目前迁移至Docker运行应用系统有“科技管理系统”及“云资料搜索平台”、工资信息管理系统等,目前上述系统仍平稳运行,后续将审慎观察分析并进一步探索。
3 开发一体化平台
现有应用系统容器化尝试同时,云科技小组也考虑到从根源上实现Docker化转型,解决方式就是改进目前各机构开发方式,以容器为代码开发的交付标准件。
3.1 Docker在开发中应用
考虑到Docker容器运行于宿主机操作系统之上,而非各单位现有虚拟机依赖于Hypevisor虚拟化,无需额外负载操作系统,基于容器技术所形成的集成式运维平台提供了较好的解决方案。
容器技术具有的“应用标准化”、“持续交付”等特点,可以帮助单位内部在业务应用开发、封装、测试、发布等逐渐形成标准,完善对应流程,应用管理效率得到质的飞跃。其拓展的“资源标准化”功能,直接带来的效益是基础设施资源的优化,以及资源利用率的提高,资源模型得以简化,在构建数据中心时,同时可以兼顾数据中心架构转向以应用为中心。
3.2 目前应用开发局限性
①问题定义及规划及需求分析耗时过长,往往需要花费大量精力和业务部门沟通,确定完整的方案项目才能进入开发阶段,但随着项目推进,新的需求不断出现,同时旧的架构设计也会受到质疑,传统开发模式下,系统修改甚至回退,需求方和开发方都将陷入进退维谷境地。
②传统项目采用里程碑方式,严格定义各开发阶段输入和输出。如果达不到要求输出,下一阶段工作就难以展开。
③被Bug和故障抽着被迫火急火燎地旋转的“故障驱动”开发模式,使得程序员及需求方苦不堪言。
④软件生命周期前期造成的Bug的影响比后期大的多,规划阶段潜在问题,在项目后期甚至代码交付后暴露出,修改及重新部署将耗费大量精力。
⑤往往一家或几家机构闷头做开发,穿插偶尔组织集中式开发,代码人员中界限不清,交流不畅。
3.3 敏捷开发
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目成果都经过测试,具备集成和可运行特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目(此处也涉及了微服务的概念),并分别完成,在此过程中软件一直处于可使用状态。敏捷开发引入,使得项目需求设计阶段不再臃肿,很多需求可在开发过程中提出,避免了里程碑方式使得项目阶段化,同时分布式的开发方式加强了团队间交流与沟通。基于容器技术的分布式敏捷开发项目开发流程划分为三个阶段:
①项目准备阶段。首先是项目创建(包括人员及角色,资源申请等),此后是提交系统管理员审核,通过后正式项目自动生成。
②项目实施阶段。包含代码分布式提交,Codereview等,由于基于容器技术,阶段性生成的是测试用镜像。
③项目运维评估阶段。将镜像部署到测试环境,测试人员系统评估,同时项目代码质量审核也同步进行,满足条件后可部署到生产环境中。
4 统一的应用管理云
4.1 开源管理平台Rancher
前面文章中介绍了小组针对Devops分布开发模式的尝试,初步实现了基于容器的从项目管理阶段到应用交付阶段的一体化。但应用云要想真正落地并大规模部署,首要前提是保证行内相关业务稳定性,鉴此,涉及容器运维、主机调度及高可用性都是必须面对的挑战。
考虑到接下来的工作亟需一定经验积累,应用云小组针对目前最为热门的开源容器管理平台之一Rancher展开系统性的测试、评估。随着Docker的不断发展,容器的规模化以及主机的集群化趋势日趋明显,Rancher、Kubernetes、Swarm等工具应运而生。Rancher是构建于docker技术上集群管理平台,提供主机集中化管理,容器服务的跨主机运维。
4.2 企业级解决方案DaocloudEnterprise
为改变传统运维模式,DaocloudEnterprise提供基于Docker容器的统一化管理。DaoCloud公有云服务目前包括了集成流水线DaoShip、开放式容器镜像仓库DaoHub、容器云平台DaoCloud,以及用于私有云和混合云场景的企业级产品及行业解决方案。
作者简介
赵晓(1994-)男,汉族,安徽省滁州市定远县人,本科,助理工程师,从事智能化信息处理工作。
[关键词]基础设施;云整合;容器化改造;管理云
中图分类号:TP368.5 文献标识码:A 文章编号:1009-914X(2018)11-0242-01
引言
十九大工作会议上重点提到加快云计算技术发展,为当下各单位科技系统建设与升级提供了方向。通过改变现有业务系统与基础设施架构,建立单位内部自有PAAS平台,以实现业务系统结构转型,建设提供统一业务能力接入的业务开放平台,从而可根据业务能力需要测算基础服务能力,向下通过IaaS提供的API调用硬件资源,向上提供业务调度中心服务,实时监控平台的各种资源,并将这些资源通过API开放给业务端用户。根据上级领导所规划战略方向,笔者所在云科技小组尝试对基于Docker技术的云服务架构的可行性探索。
1 基础设施云整合
1.1 内部硬件设施情况
云科技小组首先开展了分布式存储技术研究和探索,为实现灵活配置、动态伸缩、安全可控的存储架构提供技术储备,为后续数据中心建立打下基础。分析目前单位内部硬件设施情况,普遍存在硬件资源利用率难以提高问题,虚拟化红利被日益庞大数据量及应用系统集群日益消耗,同时Hypervisor性能损失及资源占用也无回避。同时,在安全性方面,只有部分重要业务系统可实现数据与系统冗余热备,剩余只能被绑定于某个服务器甚至虚拟机上。
1.2 分布式存储引入
随着互联网和云计算发展,业界开始采用分布式技术打造新一代存储系统,提高基础架构的敏捷性。横向比较HDFS、Open Stack Swift、Ceph和Gluster等热门开源技术方案的功能特性、数据管理、访问速度以及备份安全性后,采取使用分布式存储架构Ceph作为测试切入点。
1.3 Ceph存储架构
Ceph分布式存储整合利用分散计算能力及存储资源,将每个服务器变为一个资源管理节点,形成资源池,在存储集群基础上构建分布式的存储系统,对上层程序提供统一访问接口,同时对应用I/O及限额等灵活控制。
2 现有业务系统容器化改造
2.1 Docker概念引入
与现有虚拟机不同,Docker更像一个应用,首先宿主机环境即可满足需求,避免占用额外CPU及内存,资源使用更加高效。其次,对容器操作不会影响操作系统,部署停用更可以瞬间完成。2016年初Docker1.10版本引入命名空间(namespace)进行资源隔离,提高了安全性,由于所在单位信息安全要求较高,上述特性都是目前应用系统运维所亟需的,故开始探索现有业务系统容器化可行性。
2.2 容器化过程
2.2.1 系统容器化
需根据对于业务系统特点,选择Apache、Tomcat或Nginx等方式,当然上述web服务器都是Docker镜像且可直接拉取的。
2.2.2 数据库容器化
数据库如db2,mysql,mongodb等镜像也易于获得,但是由于容器的无状态的特点,故多数情况下数据库容器需映射本地目录以实现数据持久化。
2.3 实践情况
避开重要业务系统,目前迁移至Docker运行应用系统有“科技管理系统”及“云资料搜索平台”、工资信息管理系统等,目前上述系统仍平稳运行,后续将审慎观察分析并进一步探索。
3 开发一体化平台
现有应用系统容器化尝试同时,云科技小组也考虑到从根源上实现Docker化转型,解决方式就是改进目前各机构开发方式,以容器为代码开发的交付标准件。
3.1 Docker在开发中应用
考虑到Docker容器运行于宿主机操作系统之上,而非各单位现有虚拟机依赖于Hypevisor虚拟化,无需额外负载操作系统,基于容器技术所形成的集成式运维平台提供了较好的解决方案。
容器技术具有的“应用标准化”、“持续交付”等特点,可以帮助单位内部在业务应用开发、封装、测试、发布等逐渐形成标准,完善对应流程,应用管理效率得到质的飞跃。其拓展的“资源标准化”功能,直接带来的效益是基础设施资源的优化,以及资源利用率的提高,资源模型得以简化,在构建数据中心时,同时可以兼顾数据中心架构转向以应用为中心。
3.2 目前应用开发局限性
①问题定义及规划及需求分析耗时过长,往往需要花费大量精力和业务部门沟通,确定完整的方案项目才能进入开发阶段,但随着项目推进,新的需求不断出现,同时旧的架构设计也会受到质疑,传统开发模式下,系统修改甚至回退,需求方和开发方都将陷入进退维谷境地。
②传统项目采用里程碑方式,严格定义各开发阶段输入和输出。如果达不到要求输出,下一阶段工作就难以展开。
③被Bug和故障抽着被迫火急火燎地旋转的“故障驱动”开发模式,使得程序员及需求方苦不堪言。
④软件生命周期前期造成的Bug的影响比后期大的多,规划阶段潜在问题,在项目后期甚至代码交付后暴露出,修改及重新部署将耗费大量精力。
⑤往往一家或几家机构闷头做开发,穿插偶尔组织集中式开发,代码人员中界限不清,交流不畅。
3.3 敏捷开发
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目成果都经过测试,具备集成和可运行特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目(此处也涉及了微服务的概念),并分别完成,在此过程中软件一直处于可使用状态。敏捷开发引入,使得项目需求设计阶段不再臃肿,很多需求可在开发过程中提出,避免了里程碑方式使得项目阶段化,同时分布式的开发方式加强了团队间交流与沟通。基于容器技术的分布式敏捷开发项目开发流程划分为三个阶段:
①项目准备阶段。首先是项目创建(包括人员及角色,资源申请等),此后是提交系统管理员审核,通过后正式项目自动生成。
②项目实施阶段。包含代码分布式提交,Codereview等,由于基于容器技术,阶段性生成的是测试用镜像。
③项目运维评估阶段。将镜像部署到测试环境,测试人员系统评估,同时项目代码质量审核也同步进行,满足条件后可部署到生产环境中。
4 统一的应用管理云
4.1 开源管理平台Rancher
前面文章中介绍了小组针对Devops分布开发模式的尝试,初步实现了基于容器的从项目管理阶段到应用交付阶段的一体化。但应用云要想真正落地并大规模部署,首要前提是保证行内相关业务稳定性,鉴此,涉及容器运维、主机调度及高可用性都是必须面对的挑战。
考虑到接下来的工作亟需一定经验积累,应用云小组针对目前最为热门的开源容器管理平台之一Rancher展开系统性的测试、评估。随着Docker的不断发展,容器的规模化以及主机的集群化趋势日趋明显,Rancher、Kubernetes、Swarm等工具应运而生。Rancher是构建于docker技术上集群管理平台,提供主机集中化管理,容器服务的跨主机运维。
4.2 企业级解决方案DaocloudEnterprise
为改变传统运维模式,DaocloudEnterprise提供基于Docker容器的统一化管理。DaoCloud公有云服务目前包括了集成流水线DaoShip、开放式容器镜像仓库DaoHub、容器云平台DaoCloud,以及用于私有云和混合云场景的企业级产品及行业解决方案。
作者简介
赵晓(1994-)男,汉族,安徽省滁州市定远县人,本科,助理工程师,从事智能化信息处理工作。