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服務