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 kwargs
1192
if
not vlan:
1193
print num_used_nets
1194
index_vlan = index +
num_used_nets
1195
print index_vlan
1196
#vlan = kwargs[
'
vlan_start
'
]
1197
vlan = kwargs[
'
vlan_start
'
] +
index_vlan
1198
used_vlans = [x[
'
vlan
'
]
for
x
in
nets]
1199
print used_vlans
1200
if
vlan
in
used_vlans:
1201
# That vlan
is
used,
try
to
get
another one
1202
used_vlans.sort()
1203
vlan = used_vlans[-
1
] +
1
?
這是/usr/lib/python/site-package/nova/network/manager.py的內容,而vlanID不正確也正是這段代碼導致的.這里我了幾個print。執行我們前面的創建虛擬網絡的命令,將打印:
...
1
1
?
即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到達實例。
?
最后,原來這是一個nova官方已發現的bug:
https://bugs.launchpad.net/nova/+bug/1288609
修改方法就不一樣了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

