作者:閆興安
1.3.9 哪些網絡有問題
for ns in `ipnetns`; do echo $ns, `ip netns exec $ns ifconfig |grep tap`; done
只要一個netns裏有超過一個tap口,就有問題。
可以看出很多網絡都有問題:
1.3.10 查看binging_failed的端口
for port in`neutron port-list |grep 'fa:16' |awk -F '|' '{print $2}'`; do echo $port,`neutron port-show $port |grep 'binding:vif_type'`;done
3705a584-7eaa-40d9-b0fa-83bfe3aa5a76,| binding:vif_type | binding_failed |
409f5088-27c1-46cc-96c1-d070748909b1,| binding:vif_type | binding_failed |
62080981-f573-4f58-8f88-b6003115c344,| binding:vif_type | binding_failed |
eba62518-fc29-4105-8518-6097084aa358,| binding:vif_type | binding_failed |
1.3.11 查看dhcp-agent的日誌
日誌中出現unable to enable/disable 某個網絡。
從日誌看,dhcp-agent中曾經通過Plugin往neutrondb中創建端口失敗。注意,這裏的OperationalError是遠端的,也就是Neutron-server中的報錯。
dhcp-agent最後的log提示同步成功了,之後就沒有再進行任何同步。
從最後一句,"Synchronizing state compute"看出,dhcp-agent在這個時間點已經與neutron server完成了同步,此時狀態是正常的了。
DHCP agent還有如下的錯誤:
這個日誌的原因是neutron-server過忙,或者死了。
1.3.12 查看neutron-server的日誌
cat/var/log/neutron/server.log |grep rpc
3705a584-7eaa-40d9-b0fa-83bfe3aa5a76, | binding:vif_type| binding_failed |
409f5088-27c1-46cc-96c1-d070748909b1, | binding:vif_type| binding_failed |
62080981-f573-4f58-8f88-b6003115c344, | binding:vif_type| binding_failed |
eba62518-fc29-4105-8518-6097084aa358, | binding:vif_type| binding_failed |
經對比,neutron server裏的這些device就是這幾個binding_failed的端口。
1.3.13 新創建網絡是否有問題
測試下新創建網絡時,DHCP功能是否正常。
創建網絡:
網絡創建成功了,檢測namespace、tap、dnsmasq狀態都對。
在這個網絡裏新建虛機,虛機也能獲取IP地址。
1.3.14 總結問題現象
通過上面對環境的觀察,看到如下現象:
1) 某個網絡在某些網絡節點上,dhcp namespace裏存在兩個 tap口。
2) 每個dhcp節點上,一個網絡,dnsmasq進程只有一個,但是有兩個節點用了相同的dhcp IP。
3) 不少網絡都有此問題。總共21個網絡,有18個網絡有這個問題。
4) 有4個port出現binding failed現象,都出現在9-74這臺上。
5) 新創建網絡,沒有出現binding failed現象,而且dhcp狀態也都正確。
6) dhcp-agent進程狀態爲active。
7) 查看dhcp-agent日誌,發現日誌在6天前開始就沒有更新。
8) 查看dhcp-agent日誌,發現日誌停止前曾出現使能dhcp(創建dhcp port)失敗的現象。
9) 日誌中24號前出現大量出現連mq連不上的問題,在8月24之後解決了,日誌不再報此問題。