![Nova-Conductor 和 Nova-Compute 角色区别](https://linux22.com/image/783134/Nova-Conductor%20%E5%92%8C%20Nova-Compute%20%E8%A7%92%E8%89%B2%E5%8C%BA%E5%88%AB.png)
- 断言:我不明白 OPS/Redhat 的解释。因为所有信息都说 nova-conductor 将帮助 nova-compute 访问数据库,所以每个图表/图像也都显示出来。
来自 OPS 社区
nova-conductor 模块:调解 nova-compute 服务和数据库之间的交互。它消除了 nova-compute 服务对云数据库的直接访问。nova-conductor 模块可水平扩展。但是,请不要将其部署在运行 nova-compute 服务的节点上。
来自 Redhat
nova-conductor 服务使 OpenStack 无需计算节点访问数据库即可运行。从概念上讲,它在 nova-compute 之上实现了一个新层。它不应部署在计算节点上,否则从 nova-compute 中删除数据库访问的安全优势将被抵消。
- 现实:当我下载 OPS Nova 源代码并查看 nova/compute/manager.py 时,我看到许多从数据库(实例列表)查询数据并更新数据(instance.save)的块代码。
def _poll_rescued_instances(self, context):
if CONF.rescue_timeout > 0:
filters = {'vm_state': vm_states.RESCUED,
'host': self.host}
rescued_instances = objects.InstanceList.get_by_filters(
context, filters, expected_attrs=["system_metadata"],
use_slave=True)
def _allocate_network(self, context, instance, requested_networks,
security_groups, resource_provider_mapping,
network_arqs):
"""Start network allocation asynchronously. Return an instance
of NetworkInfoAsyncWrapper that can be used to retrieve the
allocated networks when the operation has finished.
"""
# NOTE(comstud): Since we're allocating networks asynchronously,
# this task state has little meaning, as we won't be in this
# state for very long.
instance.vm_state = vm_states.BUILDING
instance.task_state = task_states.NETWORKING
instance.save(expected_task_state=[None])
那么Openstack和Redhat开发社区的断言是错误的还是正确的???
答案1
我真的不明白这里有什么混淆,两句话本质上都是相同的解释 - Conductor 是 Compute 和 DB 之间的数据访问层,用于实现扩展,就这么简单。
然后,您写的以“现实”为开头的部分,我没有看到其中有一个明确的问题。