openstack 创建虚拟机失败

虚拟机创建失败

   用户创建一台虚拟机,虚拟机使用4个网络平面,所以虚拟机选择了4个不同平面的网络,创建虚拟机一直在孵化的过程中,最后创建虚拟机失败。

失败后返回的报错日志
Build of instance 51c0b7c5-2d37-43d7-b1c6-491789ccfab6 aborted: Failed to allocate the network(s), not rescheduling.
问题现象

   查看错误的虚拟机的port状态为down状态,nova-compute有报错 提示尝试更新port状态达到最大次数。

问题原因

   在虚拟机孵化的过程中,nova会向neutron发送一个vif的请求动作,然后自身开始创建tap、加载网桥,生成流表,以及写入image的动作,neutron server检查到nova完成这些之后,
会将该虚拟机port状态从down置为up状态,如果在默认的等待时间内(300s)neutron server没有将这个port的状态置为up,则nova会抛出异常报错。

解决办法
$ vim /etc/kolla/config/nova.conf 
[DEFAULT]
...
vif_plugging_timeout = 10
vif_plugging_is_fatal = False
# 表示将neutron server的等待时间改为10s,且就算等待时间到了 也会将port状态置为up。
...


$ kolla-ansible -i /etc/ansible/hosts -t nova deploy
# 让nova配置生效并且重启nova-compute服务