Openstack的nova-network的vlan模式扩展
openstack的nova-network的vlan模式是可以在安裝的時候,將網絡劃分為多個子網,每個項目一個或者多個子網進行虛擬機創建。 但是他現在代碼級別上不支持:如果一開始安裝的環境的vlan網段數目太少,后面使用要進行擴展的話容易出現問題。
場景
我們的場景是開始只建立一個vlan網段用于fixed_range(172.17.51.0/24,vlanID:51),num_networks=1,現在我們要加一個網絡,vlanId 52,除了在物理交換機上要配置該虛擬網絡,計算節點要使用trunk口以外,還需要在openstack集群中使用命令:
nova-manage network create --lable vlan52 --fixed_range_v4 172.17.52.0/24 --vlan 52 --project_id 80c29c88d3c349a78d4ed558e224eac4執行完成以后,我們使用命令查看:
[root@node-8 ~]# nova-manage network list id IPv4 IPv6 start address DNS1 DNS2 VlanID project uuid 1 172.17.51.0/24 None 172.17.51.3 218.6.200.139 8.8.4.4 51 80c29c88d3c349a78d4ed558e224eac4 e8df9310-ba2c-45a8-9645-6d6d045da71e 14 172.17.52.0/24 None 172.17.52.3 8.8.4.4 None 53 80c29c88d3c349a78d4ed558e224eac4 eada580e-cf13-42d5-9c4e-b8e5c61de6d請注意上面的結論的VlanID的值,雖然我們輸入的vlan是52,但是這里的VlanID卻是53,為什么? 當然,為什么我在這里糾結這個vlanID呢,因為在網絡節點上創建br網橋,vlan都需要這個vlantag來進行數據的封包,如果他不正確,虛擬實例將無法ping到網關,也無法ssh連接。
實際測試中我還建立了其他環境,而那個環境一開始就有4個網絡,我們如果指定的vlan是51,那么vlanID的最終數據庫存儲將是54,結論很明顯,我新建立一個vlan,將使用已有的vlan的數量+我輸入的vlanID,不明白為什么這樣弄,不符合我們新創建的vlan的ID的增加順序。
源碼跟蹤:
if CONF.network_manager == 'nova.network.manager.VlanManager':1190 vlan = kwargs.get('vlan', None)1191 print kwargs1192 if not vlan:1193 print num_used_nets1194 index_vlan = index + num_used_nets1195 print index_vlan1196 #vlan = kwargs['vlan_start']1197 vlan = kwargs['vlan_start'] + index_vlan1198 used_vlans = [x['vlan'] for x in nets]1199 print used_vlans1200 if vlan in used_vlans:1201 # That vlan is used, try to get another one1202 used_vlans.sort()1203 vlan = used_vlans[-1] + 1這是/usr/lib/python/site-package/nova/network/manager.py的內容,而vlanID不正確也正是這段代碼導致的.這里我了幾個print。執行我們前面的創建虛擬網絡的命令,將打印:
... 1 1 [51L] ...即index_vlan=1,used_vlans=[51L], 修改方法: 將1197行的vlan=kwargs['vlan_start']+index_vlan修改為vlan=kwargs['vlan_start'] 將原來創建的網絡關聯刪除,使用命令:
nova network-disassociate network-id nova-manage network delete network-id重新執行網絡創建命令,將可以得到正確的vlanID,而且還能在后續的虛擬機創建后,虛擬機能使用該fixed_range到達實例。
最后,發現這是一個官方的bug列表里已經有人提出了的:?https://bugs.launchpad.net/nova/+bug/1288609
根據官網的的修改方法: 修改/usr/lib/python/site-package/nova/network/manager.py 的1189行,該vlan = kwargs.get('vlan', None)為vlan = kwargs.get('vlan_start', None)
patch地址:https://review.openstack.org/#/c/99692/
轉載于:https://www.cnblogs.com/CLTANG/p/4332553.html
總結
以上是生活随笔為你收集整理的Openstack的nova-network的vlan模式扩展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word2013标题编号变成黑框
- 下一篇: spring 配置定时任务