OpenStack Nova-cell服务的介绍和配置

感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!
如果转载,请保留作者信息。
博客地址:http://blog.csdn.net/gaoxingnengjisuan
邮箱地址:dong.liu@siat.ac.cn


    我将先在此篇博客中介绍nova-cell服务的架构和配置,在下一篇博客中,我将具体分析nova-cell的源码。

    cell的功能允许我们以更加灵活的分布式的方式实现对OpenStack Compute云的缩放,而不需要更加复杂的技术,只需数据库和消息队列等。它的目的是支持更大规模的部署。

    当启用了这个功能的时候,OpenStack Compute云中的主机会被分组,称作cell。cell的结构是树的形式。top-level级别的cell中的主机运行一个nova-api服务,但是可以没有nova-compute服务。每一个子cell应该运行常规OpenStack云计算中所有nova-*类型的服务,除了nova-api服务。我们可以把一个cell树结构看成一个正常的OpenStack Compute部署,因为在这个树中的每个cell中都有自己的数据库服务和消息队列服务。

    nova-cells服务处理cell之间的通信,并选择一个cell用于建立新的实例。这个服务将会被每个cell所需要的。cell之间的通信是可插拔的,目前cell之间的通信只是通过RPC服务来实现的。

    采用cell服务实现了cell的调度和主机节点的调度是相互分离的。nova-cells服务首先会选择一个cell(目前实现的是随机选择,将来会添加过滤/权重功能,还可以基于广播获取的capacity/capabilities等参数)。一旦合适的cell被选择,且建立新的实例的请求到达了这个cell的nova-cells服务之上,这个cell将会发送建立新的实例的请求到这个cell的主机调度器。


cell特征

    1.目的是支持更大规模的部署;

    2.cell的结构是树的形式;

    3.top-level级别的cell(API cell)中的主机运行nova-api服务,可以没有nova-compute服务,不感知底层物理主机以及虚拟化;

    4.子cell无nova-api服务;

    5.每一个子cell应该运行常规OpenStack云计算中所有nova-*类型的服务,除了nova-api服务;

    6.树中的每个cell中都有自己的数据库服务和消息队列服务;

    7.从设计上来讲cell之间的通信是可插拔的,也就是未来会支持多种消息通信框架,目前cell之间的通信只是通过RPC服务来实现的;

    8.采用cell服务实现了cell的调度和主机节点的调度是相互分离的;

    9.在建立新的实例时,nova-cells服务选择cell,目前实现的是随机选择,将来会添加过滤/权重功能,还可以基于广播获取的capacity/capabilities等参数;

    10.在默认的情况下cell功能是禁用的;


cell架构

                              

    在API cell节点要部署nova-api对外提供统一服务,nova-cell负责与子cell之间通信;子cell节点统一要部署nova-cell,如果 子cell直接接入虚拟化层,则还要部署nova-scheduler,nova-compute。消息通信如下图所示:

                                        

    上图是三个cell级联的情况,其中API Cell收到请求后,通过nova-cell提供的调度算法,通过消息队列将消息转发到Child Cell节点,在Child Cell节点做与API Cell同样的工作,选择一个Grandchild Cell并继续转发,在Grandchild节点上做真正的主机调度工作,选择主机创建虚拟机。

    上面的情况下,Grandchild Cell需要将自己连接的资源信息定时上报给Child Cell以提供调度功能使用,同样ChildCell也要自己知道的资源信息上报给API Cell使用,这样,每层调度时只需拿自己掌握的资源信息即可,实现每层解耦。


cell的配置

cell配置选项

    在默认的情况下cell功能是禁用的。

    所有的cell相关的配置选项都是在配置文件nova.conf中[cells]部分之下的。下面的配置选项是当前支持的:

    enable

    TRUE----启动cell功能;(默认是关闭的;)

    name

    当前cell的名称,对于每个cell来讲,必须是唯一的;

    capabilities

    存储当前cell的capabilities信息的列表,它会发送给父cell,但是暂时不会用于调度器,直到将来支持过滤器/权重方案为止;

    call_timeout

    在cell之间等待call调用响应的时间;


API(顶层)cell的配置选项

    compute API类不能是默认的,必须改变为nova.compute.cells_api.ComputeCellsAPI,才能通过nova-cells服务将请求发送到正确的cell之上。具体配置将会如下添加于nova.conf:

    [DEFAULT]

    compute_api_class=nova.compute.cells_api.ComputeCellsAPI

    ...

    [cells]

    enable=True

    name=api


配置子cell

    在子cell中的nova.conf中,将会进行如下配置:

    [DEFAULT]

    # Disable quota checking in child cells.  Let API cell do it exclusively.

    quota_driver=nova.quota.NoopQuotaDriver

    [cells]

    enable=True

    name=cell1


在每个cell中配置数据库

    在使用cell服务之前,每个cell中还需要对数据库进行配置。因为APIcell需要知道关于它直系孩子的信息,且子cell们需要知道关于它们父母cell的信息。

    应用命令行nova-manage cell create来为每个cell添加相关信息到数据库之中。

    $ nova-manage cell create -h

    Options:

    -h, --help                     show this help message and exit

    --name=<name>                  Namefor the new cell

    --cell_type=<parent|child>     Whetherthe cell is a parent or child

    --username=<username>          Usernamefor the message broker in this cell

    --password=<password>          Passwordfor the message broker in this cell

    --hostname=<hostname>          Address ofthe message broker in this cell

    --port=<number>                Portnumber of the message broker in this cell

    --virtual_host=<virtual_host>  Thevirtual host of the message broker in this cell

    --woffset=<float>

    --wscale=<float>


    举个例子,假如我们的API cell命名为api,一个子cell命名为cell1,则在这个api cell中,我们有如下的RabbitMQ服务信息:

    rabbit_host=10.0.0.10

    rabbit_port=5672

    rabbit_username=api_user

    rabbit_password=api_passwd

    rabbit_virtual_host=api_vhost


    在这个名字为cell1的子cell中,我们有如下的RabbitMQ服务信息:

    rabbit_host=10.0.1.10

    rabbit_port=5673

    rabbit_username=cell1_user

    rabbit_password=cell1_passwd

    rabbit_virtual_host=cell1_vhost


    我们应该以管理员的身份,在API cell中运行以下的命令:

# nova-manage cell create --name=cell1 --cell_type=child--username=cell1_user --password=cell1_passwd --hostname=10.0.1.10--port=5673 --virtual_host=cell1_vhost --woffset=1.0 --wscale=1.0

    在API cell中,为API cell的所有子cell重复上述的命令;


    在子cell中,我们要以管理员的身份运行以下的命令:

# nova-manage cell create --name=api --cell_type=parent--username=api1_user --password=api1_passwd --hostname=10.0.0.10--port=5672 --virtual_host=api_vhost --woffset=1.0 --wscale=1.0


cell配置文件配置选项的描述

   call_timeout=60

   (IntOpt)等待调用call返回响应的时间期限;

   capabilities=['hypervisor=xenserver;kvm','os=linux;windows']      

   (ListOpt)表示cell的capabilities信息的Key/Multi-value列表;

   driver=nova.virt.baremetal.pxe.PXE                             

   (StrOpt)Baremetal driver back-end (pxeor tilera)

   driver=nova.cells.rpc_driver.CellsRPCDriver                     

   (StrOpt)用于cell通信的驱动;

   enable=False                                                  

   (BoolOpt)是否启用cell功能;

   instance_update_num_instances=1                              

   (IntOpt)周期性的运行更新实例的数目;

   instance_updated_at_threshold=3600                         

   (IntOpt)实例更新或删除之后继续更新cell的时间期限;

   manager=nova.cells.manager.CellsManager                     

   (StrOpt)cell管理类;

   manager=nova.conductor.manager.ConductorManager        

   (StrOpt)cell管理conductor类的全名;

   max_hop_count=10                                             

   (IntOpt)cell路由最大跳数;

   name=nova                                                      

   (StrOpt)本cell的名称;

   reserve_percent=10.0                                         

   (FloatOpt)cell容量储备百分比,会影响内存和磁盘利用率;

   scheduler=nova.cells.scheduler.CellsScheduler               

   (StrOpt)cell的调度器;

   topic=cells

   (StrOpt)监听的topic cell节点;

   topic=conductor

   (StrOpt)监听的topic conductor节点;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值