![在 Devstack 上启用 nova 单元时,AMQP 连接关闭](https://linux22.com/image/1047288/%E5%9C%A8%20Devstack%20%E4%B8%8A%E5%90%AF%E7%94%A8%20nova%20%E5%8D%95%E5%85%83%E6%97%B6%EF%BC%8CAMQP%20%E8%BF%9E%E6%8E%A5%E5%85%B3%E9%97%AD.png)
我在 IP 分别为 10.10.1.51、10.10.1.53 和 10.10.1.54 的 3 台服务器上设置了 Devstack。我将服务器 53(IP 10.10.1.53)上的 devstack 配置为父/api 单元,并将 51 和 54 上的 openstack 配置为子单元。我通过在相应的 localrc 文件中指定 enable_service n-cell 来启用单元。父级中的 nova.conf 如下:
[DEFAULT]
# Swap out the compute_api class so actions are proxied to nova-cells service.
compute_api_class=nova.compute.cells_api.ComputeCellsAPI
[cells]
name=api
enable=true
cell_type=api
子cell1中的nova.conf如下:
[GLOBAL]
# Disable quota checking in child cells. Let API cell do it exclusively.
quota_driver=nova.quota.NoopQuotaDriver
[cells]
enable=true
name=cell1 # something unique per child cell
cell_type=compute
子cell2中的nova.conf如下:
[GLOBAL]
# Disable quota checking in child cells. Let API cell do it exclusively.
quota_driver=nova.quota.NoopQuotaDriver
[cells]
enable=true
name=cell1 # something unique per child cell
cell_type=compute
我们在父单元上有以下 Rabbit 服务器信息:
rabbit_host=10.10.1.53 rabbit_port=5672 rabbit_username=admin rabbit_password=密码rabbit_virtual_host=api_vhost
在名为“cell1”的子单元中,我们有以下兔子服务器信息:
rabbit_host=10.10.1.54 rabbit_port=5673 rabbit_username=admin rabbit_password=密码rabbit_virtual_host=cell1_vhost
在名为“cell2”的子单元中,我们有以下兔子服务器信息:
rabbit_host=10.10.1.51 rabbit_port=5673 rabbit_username=admin rabbit_password=密码rabbit_virtual_host=cell2_vhost
之后,我在 API 单元中运行以下命令来告知其子单元:
>nova-manage cell create --name=cell1 --cell_type=child --username=admin --password=password --hostname=10.10.1.51 --port=5673 --virtual_host=cell1_vhost --woffset=1.0 --wscale=1.0
>nova-manage cell create --name=cell2 --cell_type=child --username=admin --password=password --hostname=10.10.1.54 --port=5673 --virtual_host=cell1_vhost --woffset=1.0 --wscale=1.0
在两个子单元中都运行以下命令来告知它们有关其父单元的信息:
>nova-manage cell create --name=api --cell_type=parent --username=admin --password=password --hostname=10.10.1.53 --port=5672 --virtual_host=api_vhost --woffset=1.0 --wscale=1.0
所有 3 个堆栈会话中的 n-cell-child 和 n-cell-region 均已重新启动。所有 3 个堆栈会话的 n-cell-region 均出现错误:
2014-07-24 12:54:01.633 ERROR oslo.messaging._drivers.impl_rabbit [req-5154ff13-4f6f-4582-8a44-d42941e9a4bc None None] AMQP server 10.10.1.53:5672 closed the connection. Check login credentials: Socket closed
两个子单元中的 n-cell-child 屏幕均出现以下错误:
2014-07-24 12:57:11.579 ERROR oslo.messaging._drivers.impl_rabbit [req-ba63e502-f099-4e55-a8e9-297390f5598f None None] AMQP server on 10.10.1.54:5672 is unreachable: [Errno 111] ECONNREFUSED. Trying again in 30 seconds.
但是父单元的 n-cell-child 屏幕中没有错误。所有 3 台服务器上运行的 AMQP 代理都是 rabbitmq-server。我检查了 rabbitmq 中的用户列表,凭证似乎没有问题。
任何帮助调试错误的帮助都将不胜感激。提前致谢!