丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
企业云计算涉及的技术选型和管理在以AWS、Google、阿里等为代表的公有云发展的同时,很多大型企业出于数据安全性、系统稳定性、软硬件自主权、对自主可控以及TCO(TotalCostofOwnership,总体拥有成本)低的考虑,更加倾向于建设企业私有云来承载内部业务信息系统的运行。
图2-1中一台EXSi主机有36GHzCPU资源和96GB可用内存资源,并且创建了两个资源池。其中OA系统获得1/3的资源,也就是12GHzCPU资源和32GB内存资源。HR系统获得剩下的2/3的资源。
一个集群(Cluster)的资源池包含集群中所有主机(Host)的资源总和。比如一个8主机的集群,每个主机都有32GHzCPU和64GB内存,那么这个集群的资源总和就是256GHz的CPU和512GB的内存。在这个集群中创建的资源池就从这个总的可用资源中分配。集群的可用资源总是小于集群的总资源,这是因为每台主机都会占用一部分CPU和内存资源,以留给自己的Hypervisor和OS使用。虽然集群资源池是所有主机资源的总和,但是并不意味着某一VM(虚拟机)可以使用超过某一台主机的资源。比如,两台32GB内存的主机组成集群,集群中创建了一个64GB内存的资源池,但是任何单台VM都不能使用超过32GB的内存,因为VM不能跨主机使用资源,即VM的可用资源受到单台主机物理资源上限的影响。另外一种情况:如果考虑VM的SWAP的话,这台大于32GB内存的VM可以被创建,也可以被运行。虽然这台VM不能跨主机使用资源,也就是它最多可以使用32GB的内存,但是别忘记它还有SWAP,因此,20GB的SWAP保证了GuestOS的运行。同VM一样,资源池也有份额(Shares)、预留(Reservation)和限制(Limit)这3个配置项,见图2-2与图2-3。
□限制资源池的限制与VM的限制类似,不同的就是这个限制是资料池中所有VM可用物理资源的上限值。虽然“限制”项不会限制VM的创建,但是它限定了可用物理资源,影响了资源池中运行的VM的性能。□份额资源池中的资源通常通过份额来分配,有3种预设的份额分配方式:High、Normal和Low,比重分别为4∶2∶1。反映在数字上则如表2-2所示。
2.资源池管理如图2-5所示,Nova-scheduler服务通过运行在每个主机上的Nova-compute服务获取主机的信息并保存在集中式数据库中,形成一个虚拟计算资源池,这些信息会被及时更新。管理员可以在OpenStackDashboard(Horizon)或者使用NovaAPI/CLI来查看资源池的情况。
如图2-6所示,在汇总(HypervisorSummary)部分,管理员可以看到整个资源池中的资源总数,包括vCPU、内存和本地磁盘等,以及这些资源已经被使用的数目;在列表部分,可以看到每个主机的详细信息,包括类型、vCPU数目、内存总量和已使用量、本地磁盘空间总量和已使用量、虚拟机数目等。管理员还可以通过NovaCLI获取每一个Hypervisor在数据库中保存的详细信息。
3.资源池的使用开发者、管理员和用户通过NovaAPI和CLI或者在OpenStackHorizon上进行操作来创建虚拟机,每个虚拟机都会占用一定的计算资源,而计算资源占用的多少则是通过NovaFlavor来实现的。NovaFlavor是所要创建的虚拟机的规格,其中就包含了该虚拟机所要求的vCPU、内存、本地磁盘等计算资源的数目。如图2-7所示。
每个主机只有在满足所配置的所有过滤条件后,才能进入权重阶段。关于过滤器更详细的信息和可选的过滤器等内容,请参考OpenStack有关文档。5.虚拟机管理如图2-9所示,Nova-compute支持多种Hypervisor,通过使用不同的HypervisorAPI来管理这些Hypervisor上的虚拟机。OpenStack通过Nova管理虚拟机,形成在云范围内的虚拟机资源池。
根据OpenStack社区2016年最新的一次用户调查结果,目前,在生产和开发测试环境中使用的Hypervisor情况如图2-10所示。
下面我们通过VMware和OpenStack这两个比较常用的IaaS管理平台来看看它们在存储资源管理方面的具体技术和实现。
除了计算资源以外,OpenStack还管理存储资源。OpenStack可以为云服务或云应用提供所需的对象及块存储资源;因对性能及价格有需求,很多组织已经不能满足于传统的企业级存储技术,而OpenStack可以根据用户需要提供可配置的对象存储或块存储功能。在OpenStack私有云环境中可能存在多种不同类型的存储资源,比如传统的企业级存储和新兴的软件定义存储,按照存储类型可以分为块存储和对象存储等。作为管理数据中心资源的云操作系统,OpenStack通过Cinder和Swift项目来管理这两种存储资源。如图2-11所示,与Cinder相比,Swift有些不同,它是一个开源对象存储项目,并不提供存储虚拟化功能,因此,本节我们主要讨论Cinder。与Nova项目类似,Cinder服务本身也不提供存储功能,而是通过虚拟化各种后端存储形成虚拟存储池,以供虚拟机和应用使用。
1.虚拟机对块存储的要求Cinder是一个资源管理系统,负责向虚拟机提供持久块存储资源,它把不同的后端存储进行封装,向外提供统一的API,对卷进行管理并贯穿虚拟机的整个生命周期。如图2-12所示。
Cinder的基本功能:□创建卷□从已有卷创建卷(克隆)□扩展卷□删除卷□挂载卷到虚拟机□从虚拟机上分离卷□创建卷快照□从已有卷快照创建卷□删除卷快照□从镜像创建卷□从卷创建镜像Cinder通过插件式驱动来支持不同的后端存储,如图2-13所示。
图2-14是CinderLVMiSCSIDriver的技术架构。
图2-15是IBMSVC/DS8K/XIVCinder驱动的技术架构。
图2-16为默认的LVM驱动和第三方存储驱动。
2.存储池管理Cinder-volume服务运行在存储节点上,管理着存储空间。每个存储节点都有一个VolumeService,若干个这样的存储节点联合起来可以构成一个虚拟块存储资源池,如图2-17所示。
VolumeType是定义某个服务级别的标准的集合,它由云管理员定义,用户在创建卷的时候根据需要选择使用某种VolumeType;带有某种VolumeType的卷在被创建后也可以被修改。举个例子:如图2-19所示,用户需要创建一个SLA为“Silver”、大小为520GB的卷,他输入大小和VolumeType;Cinder-scheduler则会根据该VolumeType中定义的存储能力,找到一个满足条件的后端存储(Cinderbackend),再将卷创建请求调度到该后端存储对应的Cinder-volume服务上。
如图2-20所示,Cinder支持两种类型的QoS:□一种是“front-end”类型,通过QEMU实现。□一种是“back-end”类型,通过后端存储实现。
用户使用CinderQoS的通常步骤是:□创建一个QoSspec:cinderqos-createhigh_read_low_writeconsumer="front-end"read_iops_sec=1000write_iops_sec=10□创建一个VolumeType:cindertype-createtype1□将QoSspec和VolumeType关联起来:cinderqos-associate9476d6a5-8903-4383-bb0a-bdc753843329ca306ba5-fe9e-4b87-84b1-49823057c528□创建一个使用上述VolumeType的卷:cindercreate--display-namehigh-read-low-write-volumevolume-typetype1100□将卷挂载到某个虚拟机:novavolume-attachvm-1high-read-low-write-volume/dev/vdb
下面我们通过VMware和OpenStack这两个比较常用的IaaS管理平台来看看它们在网络资源管理方面的具体技术和实现。
除此以外,OpenStackNeutron还提供了基于VR(VirtualRouter,虚拟路由器)的VPNasaService(VPN即服务),可以将两个物理上分离但是由互联网连接起来的两个OpenStack子网通过VPN连接起来,并使得各自子网内的虚拟机可以互连互通。
从云服务质量评估的角度来说,云服务可以包含一项或多项核心服务和支持服务,如图2-23所示。核心服务是重点,它能满足用户的关键期望和需要。支持服务也是不可或缺的部分,它能推动和增强核心服务的服务。
本章从企业云计算涉及的技术选型和计算、存储、网络资源管理以及监控和运维、云服务管理等方面,阐述了私有云建设的一些实际问题,以帮助读者更好地理解企业私有云建设。