openstack nova-network 的小bug的排錯經歷

環境是 nova-network +vmware+flatdhcp

錯誤表現爲 開出來的虛擬機有一定機率獲取不到dhcp地址,手工賦予ip則正常,用flat模式注入的ip正常,下面是排錯過程

1首先找網絡

 防火牆已經把 dnsmasq對應的端口已經打開

 抓包結果:wKiom1fV-RayJKR1AACZtZ4jZNs632.png-wh_50

  可以看到虛擬機dhcp 已經發到br100上面,但是br100 沒有返回,基本可以排除網絡原因

2 找dhcp 原因

首先kill掉 nova啓動的 dnsmasq進程,手工去啓一個dnsmasq,虛擬機是正常的。

其次 查看 dnsmasq 的日誌

有如下 報錯

Sep 12 08:32:31 centos-6568 dnsmasq[1947]: bad DHCP host name at line 3 of /var/lib/nova/networks/nova-br100.conf

Sep 12 08:32:31 centos-6568 dnsmasq[1947]: bad DHCP host name at line 4 of /var/lib/nova/networks/nova-br100.conf

Sep 12 08:32:31 centos-6568 dnsmasq[1947]: bad DHCP host name at line 7 of /var/lib/nova/networks/nova-br100.conf

Sep 12 08:32:31 centos-6568 dnsmasq[1947]: bad DHCP host name at line 8 of /var/lib/nova/networks/nova-br100.conf

 

Sep 12 08:44:41 centos-6568 dnsmasq-dhcp[1947]: DHCPDISCOVER(br100) fa:16:3e:4e:70:42 no address available


谷歌一下,很多人這個問題,但是沒解決方案

於是看了下這個這個文件,再對比下同樣的環境,使用neutron的文件截圖如下

wKioL1fV-vCj6fyxAAAnLZNH1Dg231.png-wh_50

wKiom1fV-vDBHmlCAAAwqysrsho343.png-wh_50


一眼可以看出 出錯的行都是hostname 以數字開頭的。

知道原因了,在開兩臺虛擬機 一臺以數字開頭 一臺字母開頭 一對比 果然是這個原因:

nova-network +vmware+flatdhcp

這個環境下 nova-network是直接把虛擬機的hostname寫進dnsmasq的列表中,但是dnsmaqs不認數字開頭的hostname

解決辦法: 修改源代碼中 這條dhcp插入的方法

 vim /usr/lib/python2.7/site-packages/nova/network/linux_net.py

wKioL1fWCnjzlbigAAB6HRmKZkE874.png-wh_50



改好的效果


wKioL1fWCtHSaIRCAAATlmns7uE644.png-wh_50




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章