Openstack Cell简要说明

部署模式

API CELL

父cell,总的api入口,需要启动的openstack服务为keystone、neutron、glance(glance-api、glance-registry)、cinder(cinder-api)、nova(nova-api、nova-cells、nova-console、nova-consoleauth、nova-novncproxy);需要启动的第三方服务为rabbit(rabbitmq-server)与mysql(mariadb)。

COMPUTE CELL

子cell,每一个子cell相当于一个独立的openstack环境,担负具体的计算功能。在子cell内可划分为控制节点与计算节点,控制节点上需要启动的openstack服务为neutron(neutron-openvswitch-agent)、cinder(cinder-scheduler、cinder-volume)、nova(nova-cells、nova-conductor、nova-scheduler、nova-compute);控制节点上需要启动的第三方服务为rabbit(rabbitmq-server)与mysql(mariadb);计算节点需要启动的openstack服务为neutron(neutron-openvswitch-agent)、nova(nova-compute)。(是否在子cell的控制节点上启用nova-compute为可选)

cell的创建与删除

在父cell上需要添加子cell的信息

nova-manage cell create --name {子cell名称} --cell_type compute --username {子cell消息服务器用户名} --password {子cell消息服务器密码} --broker_hosts {子cell消息服务器地址,list形式} --hostname {子cell消息服务器地址} --port {子cell 消息服务器端口} --virtual_host {子cell消息服务器虚拟机主机地址}

在子cell上需要添加父cell的信息

nova-manage cell create --name <父cell名称> --cell_type api --username <父cell消息服务器用户名> --password <父cell消息服务器密码> --broker_hosts <父cell消息服务器地址,list形式> --hostname <父cell消息服务器地址> --port <父cell 消息服务器端口> --virtual_host {父cell消息服务器虚拟机主机地址} 

删除cell命令

nova-manage cell delete {cell_id}

命令的执行流程

当指令下发后,首先进入nova-api,经过对请求地址解析,参数处理之后,会调用到compute的api。非cell模式,compute的api为nova.compute.api.py;cell模式下,为nova.compute.cells_api.py。

父cell到子cell的过程

nova.compute.cells_api.py -> nova.cells.rpcapi.py -> nova.cells.manager.py -> nova.cells.messaging.py (以上为父cell,主要功能为调度) -> nova.cells.messaging.py (子cell,由此进入到具体的执行操作)

另一种调用的方式

nova.compute.cells_api.py (父cell,调用其中的_cast_to_cells或_call_to_cells等方法,直接调用子cell上nova.compute.api.py中的对应函数) -> nova.compute.api.py (子cell)

相当于非cell模式中的功能相简便移植到cell模式中,只需要在nova.compute.cells_api.py中增加一个类似跳板的同名函数,并使用_cast_to_cells或_call_to_cells等方法将请求转到子cell的nova.compute.api.py中的同名函数。

数据库与消息服务器

cell模式下,有些函数访问的是自身的数据库且不向其他cell的数据库同步数据;有些函数访问父cell的数控库且会向其他cell的数据库同步数据。原生的cell并不健全,如aggregate仅在父cell上更新,并不同步数据到子cell,而子cell只从自己的数据库上查询,导致环境无法创建az。如遇到非cell模式下可正常运行的功能在cell模式下失效,可以查看是否存在数据读取的问题。

消息服务器的存活是cell非常关心的一件事,在多个子cell的环境中,其中一个子cell的消息服务器挂了之后,会导致父cell异常,需要尽快在父cell的配置中删除异常的子cell。

猜你喜欢

转载自blog.csdn.net/tpiperatgod/article/details/50390043
今日推荐