Cinder AZ 与 Nova AZ 的同步问题
2019-05-07 16:51 云物互联 阅读(470) 评论(0) 编辑 收藏 举报问题
今天处理了一个 Boot from volume 失败的问题,错误日志给出了明确的原因:The instance and volume are not in the same AZ。
BuildAbortException: Build of instance aa701728-f40b-47e7-b8ed-2302f1bff226 aborted: Invalid volume: Instance 2216 and volume bbbd66b4-761f-4096-b8f7-4feeb04c4b44 are not in the same availability_zone. Instance is in ovs. Volume is in nova
解决
AZ 的含义是为了划分不同的故障域,开始只是 Nova 的概念,但由于 Instance 与 Volume 的紧密联系,AZ 的概念自然被延伸至 Cinder。在 nova.conf 的 [cinder] Section 中可以找到 Option cross_az_attach = False|True
,当其为 True 时表示允许跨 AZ 挂载卷,反正则不能。在生产环境中一般建议设置为 False,由此导致了上述的问题。因为我们希望创建一个处于 AZ:ovs 的 Instance,但指定的 Cinder backend 默认却处于 AZ:nova。e.g.
# cinder.conf
[DEFAULT]
...
storage_availability_zone = nova
default_availability_zone = nova
解决这个问题的办法自然就是将预期的 Cinder backend 也划分至 AZ:ovs 中:
# cinder.conf
[DEFAULT]
...
storage_availability_zone = ovs
default_availability_zone = ovs
此后创建该 Backend 的 Volumes 也需要显式的指定 AZ 参数:
openstack volume create --type ovs_backend --availability-zone ovs ...
如此这般,保证了 Nova 和 Cinder 处于同一个 AZ,卷挂载自然就没有问题了。
转载请注明作者:JmilkFan 范桂飓