马铭冀,姜延凯
(河北省教育发展研究与信息管理中心,河北 石家庄050091)
Docker应用于私有云平台
——以河北省级教育数据中心为例
马铭冀,姜延凯
(河北省教育发展研究与信息管理中心,河北 石家庄050091)
Docker是一种开源容器级虚拟化技术,基于它可建立PaaS云服务,相较于传统虚拟化主机如:VMware、KVM,Docker生成的虚拟主机更为轻量级,数量可较传统服务器虚拟化提升5倍以上。Docker对于推进教育信息化基础设施资源建设,特别是PaaS平台建设具有一定意义,为此本文给出一种基于Docker、Kubernetes以及自研CloudBean平台的省级教育数据中心PaaS私有云平台搭建的技术思路。
云计算;Docker;CloudBean;教育信息化;PaaS;开源
随着云计算潮流的不断演进,以服务器虚拟化技术为核心的云计算技术在数据中心不断落地,采用此类技术构建的IaaS数据中心至少能带来三点好处,一是用户使用资源更方便,用户无需再关注硬件设备细节,只需根据业务发展需要动态申请与扩容计算、存储、网络资源;二是数据中心管理更简单,信息化管理部门采用统一虚拟化管理平台即可用更低的运营成本、更简便的管理方式管理数据中心资源,由运维转变成运营;三是资源集约化程度更高,采用服务器虚拟化技术的数据中心通常可以生产物理服务器数量15倍以上的虚拟化服务器,相同的硬件环境能满足更多的用户需求。
较于传统非虚拟化技术的数据中心而言,IaaS数据中心是一种质的进步,但这种进步也面临如下挑战:
(1)虚拟主机为重量级,每台虚拟机均需要有独立的操作系统、运行库、存储空间等,有较大的资源消耗,通常两路4CPU/64GB内存物理服务器可生产20台左右2CPU/4GB内存虚拟主机。
(2)数据中心中有大量的业务属于轻量级网站、数据库、后端业务,其资源需求量总体不高,独立放置于虚拟主机中也存在一定的资源浪费,同时也面临技术管理跟不上的问题;
(3)移动互联网、大数据在数据中心不断地落地,必然催生出指数级的虚拟主机资源需求,如何更低成本满足这些需求。
上述问题的本质其实可以归结为如何在可控的成本之下,生产更多数量的虚拟主机,以及如何更高效的使用与管理这些生产出来的大规模虚拟主机。
目前省级教育数据中心已实现了服务器虚拟化技术,并搭建了规模不一的IaaS平台。笔者认为随着我省教育信息化应用的深度推进,依赖于IaaS平台支撑信息化业务仍会面临较高运维成本和相对低的资源使用效率,业务处室里相当多的业务应归类于轻量级业务,即大多数业务仅需要基础的应用环境 (如:WEB环境、数据库环境、测试环境)并不关注于虚拟主机操作系统层面的细节,事实上考虑到虚拟主机信息安全、运维能力等多方面因素,也不建议业务用户介入主机层面细节,一是业务用户擅长于业务开发,但主机运维与安全管理能力较弱;二是业务上线仅需要应用环境,不需要关注于底层主机细节;基于此笔者认为数据中心信息化基础设施资源建设时应着力发展PaaS私有云平台,即面向业务用户提供标准、规范并专业的应用支撑环境,目前业内有多种PaaS云平台实施技术,包括:IBM、Oracle的私有云方案,国内如:百度、新浪的PaaS公有云平台,笔者认为对于教育数据中心来讲,搭建私有云PaaS平台即要考虑实施成本,又要考虑平台本身的科研属性,因此笔者建议并提出一种基于开源Docker[1]、Kubernetes以及自研的CloudBean的PaaS平台搭建思路,当然这个思路的基础是Docker操作系统级虚拟化技术。
Docker是一种基于go语言开发,并遵从Apache 2.0协议开源的容器级虚拟化技术,其源代码托管于Github上,它由PaaS供应商dotCloud于2013年发布,Docker发布后获得业内极大关注,主流的IT服务商,如:谷歌、微软、IBM、红帽均加入Docker联盟,共同推动Docker的应用与普及。
Docker本质上是基于LXC(Linux Container)的操作系统容器级虚拟化技术,它的几个主要特点包括:
(1)隔离性,Docker生成的虚拟主机实例相互隔离,互不干扰,Docker宿主机基于AUFS文件系统构建,通过AUFS可以保证多个容器实例可以互不影响并独立共享使用根文件系统;并基于Linux内核的namespace技术,通过pid、net、ipc、mnt、uts等namespace将虚拟主机的进程、网络、消息、文件系统、主机名称进行有效隔离。
(2)资源弹性,Docker基于cgroup技术进行资源层面弹性管理,通过它可以实现CPU、内存等资源的分配与使用。
(3)灵活镜像管理,Docker虚拟主机基于镜像技术构建,每启动一个Docker实例前需要通过公开下载或基于Dockerfile文件创建一个新的image镜像,采用镜像的管理方式使得应用系统的发布变得非常灵活与便捷,同时基于镜像也间接方便了虚拟主机的迁移与移动。
目前主流使用的IaaS层面服务器虚拟化技术多是基于完全虚拟化技术,即由Hypervisor层完整模拟一个“物理主机”,在生成主机上制备操作系统,在操作系统上安装并部署相应运行库文件、业务系统等,这种虚拟化手段典型代表是VMware ESX、KVM等,相比较于传统的服务器虚拟化技术,Docker更为轻量级,它直接省缺了“物理主机”的模拟,通过各实例共享宿主机操作系统的方式生产虚拟主机,双方的架构对比如图1所示。
图1 虚拟化架构对比
通过这种直观的比较可以看出:一是Docker生产的虚拟主机数量要比前者多的多,通常在实践使用时同等硬件资源在虚拟主机数量上可多出5-10倍;二是基于Docker生产的虚拟主机属于轻量级,其启动速度会更快,资源利用会更高效;三是Docker虚拟主机更适合承担单一业务,如:只充当数据库服务器、WEB服务器、消息服务器,这种模式其实更容易节约资源,并确保构建业务组件化、标准化。
上述的三个特性,可以得出一个这样的使用场景,对于信息化基础设施预算比较低或采购周期比较长的用户,可以通过Docker技术在同等硬件条件下具备搭建更多的虚拟主机的能力,对于一些业务处室特定的时期,如学位考试、专升本考试、大学生毕业等业务高峰期,可以通过标准化业务组件横向大批量扩展,快速启动部署的方式支撑业务高峰期,低谷期资源快速回收。
在面向教育数据中心的PaaS私有云平台架构层面上,本文设计了一种三层PaaS平台架构,第一层为容器资源层,第二层是容器管理层,第三层为门户层,架构如图2所示。
图2 基于三层的PaaS云平台架构
这三层的主要作用如下:
(1)容器资源层
容器资源层是整个PaaS平台的资源基础,它向上提供容器的计算、存储、网络资源,该层主要由计算集群、数据存储集群、镜像仓库组成。
其中计算集群负责提供容器虚拟主机资源,采用普通两路机架服务器 (8*2.0GHz CPU、96GB内存、1TB以上磁盘,双网卡),其操作系统可选用Ubuntu、CentOS或CoreOS[2],CoreOS是一种新型,经过重新精减后,可专职从事Docker容器的Linux操作系统,CoreOS极为精练,它使用systemd和fleet来对Docker容器进行管理,使用etcd这种键值数据库进行服务发现和配置信息共享。业内通常推荐采用CoreOS,但考虑到CoreOS在省级数据中心普及较低,这里推荐采用CentOS 7。计算节点的网络建议采用虚拟网络架构Open-vSwitch[5],以适应于大规模的容器集群业务。
镜像仓库负责管理整个PaaS集群中的本地容器镜像,它至少采用一台普通物理服务器 (4*2.0GHz CPU、32GB内存、2TB以上磁盘,双网卡)搭建的docker-registry服务器构成,通常推荐采用两台服务器,这样可以做到镜像互备。
存储集群负责提供容器虚拟主机运行所需要的额外数据空间,它基于开源的Ceph[3]分布式文件系统,通过建议至少由三台普通两路机架服务器(4*2.0GHzCPU、32GB内存、4TB以上磁盘,双网卡)搭建,该Ceph集群挂接至计算集群所有节点。
(2)容器管理层
容器管理层是整个PaaS平台的资源调度中心。它调度与管理所有的容器虚拟主机,容器管理层推荐采用Google推出的开源版Kubernetes[4]进行管理,该管理工具可跨平台使用,能够灵活调度大规模Docker容器虚拟主机。Kubernetes的Master、etcd组件由一台独立普通物理服务器支撑,minion组件安装在各计算节点中。
(3)门户层
门户层作用是为管理人员、用户提供统一服务门户,门户层的实现是基于自主开发的CloudBean平台搭建,CloudBean平台是基于Python与PHP开发,支持KVM、Docker两种虚拟环境的资源纳管,可面向后台管理运营人员提供统一IaaS、PaaS数据中心、物理主机、虚拟主机的统一管理、调度入口,同时也可以面向终端用户提供简单的虚拟主机自助管理服务。门户层CloudBean平台部署在一台独立的物理服务器或docker容器中。
CloudBean部署后的效果如图3、图4所示:
图3 CloudBean门户效果
图4 CloudBean门户效果
门户层是整个PaaS服务的入口。通过三层的架构与实施可以实现一个支撑数千虚拟主机规模,并能扩展至上万容器虚拟主机的PaaS云平台,由于自主研发的CloudBean平台也具有一定的容器资源管理能力,因此对于中小规模的PaaS平台运营也可以采用二层PaaS架构,即省略中间的容器管理层。
通过本文的设计可以搭建省级教育数据中心PaaS私有云平台,部署PaaS云后能够极大的提升教育信息化应用服务水平,基于PaaS至少能在如下几个方面的业务有所突破:
(1)业务处室各类业务系统部署方面,如前面所述实现PaaS云后,以非常标准的方式提供各类WEB服务、数据库服务、中间件、消息等服务环境,会更方便、更低成本、更快速度部署各类业务系统;此外在各业务的峰值时可更灵活、更快速扩展应用环境资源。
(2)信息化科研与测试方面,由于可大规模的部署容器虚拟主机,在信息化方面的科研、以及测试任务中可灵活搭建相应的测试实验床,如可快速、稳定地搭建数千个容器虚拟主机充当客户端进行各类压力测试。
笔者相信随着不断深化PaaS平台的应用场景,像分配电子邮件一样为所有工作人员人手分配一台虚拟主机为目标,必将极大地调动各方使用与应用信息化的动力,这种主动性与积极性的提升必将会推动教育信息化整体应用水平的飞跃。
基于本文给出通过开源与自研的PaaS私有云平台具有低成本、使用维护方便、部署简单的特点,但较于更成熟的商用PaaS平台仍存在以下不足,如:大规模资源调度与扩展、稳定性、可靠性、功能的完备与易用性等方面,这些不足将会在后续的工作中不断完善。
[1]Docker[DB/OL].https://www.docker.com.
[2]CoreOS[DB/OL].http://www.coreos.com.
[3]ceph[DB/OL].http://www.ceph.com.
[4]Kubernetes[DB/OL].https://github.com/Google-CloudPlatform/kubernetes.
[5]open-vswitch[DB/OL].http://www.openvswitch. org/.
[6]谢浩晖,高济.基于NGPD的PaaS平台研究与实现[J].计算机应用研究,2011,(05).
[7]姜文周,马明丽,李先毅.基于Cloud Foundry的PaaS云平台的设计与实现[J].微型机与应用,2014,(02).
[8]何颖,唐彦,林勇.基于多租户架构的PaaS构建剖析[J].数字通信,2012,(03).
[9]徐鹏,张岩江,苏森.PaaS云资源调度技术研究[J].华中科技大学学报(自然科学版),2013,(S2).
(编辑:郭桂真)
G434
B
1673-8454(2017)08-0082-03