《企业私有云建设指南》一2.3.2 OpenStack

举报
华章计算机 发表于 2019/06/03 20:16:28 2019/06/03
【摘要】 本书摘自《企业私有云建设指南》一书中的第二章,第2.3.2节,作者是孙杰 山金孝 张亮 张婷婷

       2.3.2 OpenStack

       OpenStack是一个能够管理整个数据中心大量资源池(包括计算、存储和网络资源等)的云操作系统。就计算资源来说,OpenStack可以规划并管理大量虚拟机,从而允许企业或服务提供商按需提供计算资源;开发者可以通过OpenStack API访问计算资源从而创建云应用,管理员与用户则可以通过Web访问这些资源。在OpenStack中,计算服务是OpenStack的核心服务,它由Nova项目提供实现。Nova项目不包括任何虚拟化软件;相反地,它通过各种插件与运行在主机上的底层虚拟化软件进行对接,然后再向外提供API。
       Nova包括以下四个核心模块:
    ◆    Nova-api:向外提供OpenStack Compute API。
    ◆    Nova-conductor:数据库访问。
    ◆    Nova-scheduler:将通过API进来的虚拟机创建请求调度到某个主机上。
    ◆    Nova-compute:通过调用主机上Hypervisor的API创建和控制虚拟机。

       1.主机管理

       为了更好地管理云中的主机,OpenStack Nova引入了多个概念来对这些主机进行逻辑划分,这些概念包括域(Region)、可用域(Availability Zone,AZ)、主机聚合域(Host Aggregates Zone,HAZ)等。
       OpenStack通过引入Region(域)的概念,支持全球化部署,比如为了降低网络延时,用户可以选择在特定的Region中部署服务。各个Region之间的计算资源、网络资源、存储资源都是独立的,但所有Region共享账户用户信息,因为Keystone是实现OpenStack租户用户管理和认证功能的组件,所以Keystone全局唯一,所有Region共享一个Keystone,Keystone端点中存储了访问各个Region的URL。
       OpenStack引入了AZ的概念,其主要目的之一是基于可靠性考虑。AZ可以简单地理解为一组节点的集合。在实际操作中,我们可以将具有独立的电力供电设备的一组节点划分到一个AZ之中,比如将一个独立供电的机架划分为一个AZ。AZ由管理员创建,对用户可见,比如用户要运行某个有高可靠性要求的应用,那么他可以在两个不同的AZ之中分别创建一个虚拟机,然后在每个虚拟机中部署该应用,并使用负载均衡服务来连接这两个虚拟机中的应用以对外提供可靠的服务。
       HAZ也是把一批具有共同属性的计算节点划分到同一个Zone中,HAZ可以对AZ进一步细分,一个AZ可以有多个HAZ,一个HAZ也可以跨多个AZ。同一个HAZ下的机器都具有某种共同的属性,比如高性能计算、高性能存储(SSD)、高性能网络(支持SR-IOV等)。HAZ和AZ的另一个不同之处在于HAZ对用户不是明确可见的,用户在创建虚拟机时不能像指定AZ一样直接指定HAZ,但是可以通过在Instance Flavor中设置相关属性,由Nova-scheduler根据调度策略调度到满足该属性的HAZ中。
       这些概念组合起来,可以用图2-4来表示。

image.png

       比方说,某用户有两个机房,分别位于北京和上海,分别有100台和200台物理服务器作为计算资源池,那么可以使用表2-3中的方法来对这些服务器进行划分。

image.png

       2.资源池管理

       如图2-5所示,Nova-scheduler服务通过运行在每个主机上的Nova-compute服务获取主机的信息并保存在集中式数据库中,形成一个虚拟计算资源池,这些信息会被及时更新。管理员可以在OpenStack Dashboard(Horizon)或者使用Nova API/CLI来查看资源池的情况。

image.png

       如图2-6所示,在汇总(Hypervisor Summary)部分,管理员可以看到整个资源池中的资源总数,包括vCPU、内存和本地磁盘等,以及这些资源已经被使用的数目;在列表部分,可以看到每个主机的详细信息,包括类型、vCPU数目、内存总量和已使用量、本地磁盘空间总量和已使用量、虚拟机数目等。管理员还可以通过Nova CLI获取每一个Hypervisor在数据库中保存的详细信息。

image.png

       3.资源池的使用

       开发者、管理员和用户通过Nova API和CLI或者在OpenStack Horizon上进行操作来创建虚拟机,每个虚拟机都会占用一定的计算资源,而计算资源占用的多少则是通过Nova Flavor来实现的。Nova Flavor是所要创建的虚拟机的规格,其中就包含了该虚拟机所要求的vCPU、内存、本地磁盘等计算资源的数目。如图2-7所示。

image.png

       4.资源的调度

       当Nova-api服务接收到创建虚拟机的请求后,它会通过消息队列将请求转交给Nova-scheduler模块,后者会根据在数据库中保存的整个环境中计算资源池的情况,按照请求中所要申请的资源,选择一个最合适的主机来创建该虚拟机。
如图2-8所示,Nova-scheduler的调度包括两个子过程:
◆    过滤(f?iltering):Nova根据管理员在配置文件中所配置的过滤器(f?ilter),对云环境的所有主机进行逐一过滤,将满足所有过滤器要求的主机选出来。
   权重(weighting):对上一步骤中所有满足要求的主机计算权重并以此排序从而得出一个最佳主机。计算主机权重的过程需要调用指定的各种Weigher Module以得到每个主机的权重值。
       Nova中已经实现了很多过滤器,也支持用户自定义的过滤器。Nova默认使用如下过滤器:
   RetryFilter:过滤掉之前已经尝试调度过的主机。
   AvailabilityZoneFilter:过滤出在指定可用域中的主机。
   RamFilter:过滤出有足够内存(RAM)的主机。
   CoreFilter:过滤出有足够vCPU核的主机。
   DiskFilter:过滤出有足够根磁盘和临时磁盘空间的主机。
   ComputeFilter:过滤出Nova-compute服务可用的主机。
   ComputeCapabilitiesFilter:过滤出满足Flavor中指定的特定要求的主机。
   ImagePropertiesFilter:过滤出满足虚拟机镜像特定要求的主机。

image.png


       每个主机只有在满足所配置的所有过滤条件后,才能进入权重阶段。关于过滤器更详细的信息和可选的过滤器等内容,请参考OpenStack有关文档。

       5.虚拟机管理

       如图2-9所示,Nova-compute支持多种Hypervisor,通过使用不同的Hypervisor API来管理这些Hypervisor上的虚拟机。OpenStack通过Nova管理虚拟机,形成在云范围内的虚拟机资源池。

image.png

       根据OpenStack社区2016年最新的一次用户调查结果,目前,在生产和开发测试环境中使用的Hypervisor情况如图2-10所示。

image.png


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。