博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Openstack的nova-network的vlan模式扩展
阅读量:6792 次
发布时间:2019-06-26

本文共 2076 字,大约阅读时间需要 6 分钟。

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 listid 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-6d6d045da71e14 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。执行我们前面的创建虚拟网络的命令,将打印:

...11

 

即index_vlan=1,used_vlans=[51L],
修改方法:
将1197行的vlan=kwargs['vlan_start']+index_vlan修改为vlan=kwargs['vlan_start']
将原来创建的网络关联删除,使用命令:

nova network-disassociate network-idnova-manage network delete network-id

 

重新执行网络创建命令,将可以得到正确的vlanID,而且还能在后续的虚拟机创建后,虚拟机能使用该fixed_range到达实例。

 

最后,原来这是一个nova官方已发现的bug:

https://bugs.launchpad.net/nova/+bug/1288609

修改方法就不一样了。

转载于:https://www.cnblogs.com/CLTANG/p/3860455.html

你可能感兴趣的文章
Windows Linux 子系统可以在资源管理器中打开
查看>>
WebStorm文件类型关联设置
查看>>
13.1 Spring MVC 关于controller的字符编码
查看>>
理发店与 App 定价模型
查看>>
ES6(数组)
查看>>
php simplexml_load_file 函数执行不稳定
查看>>
C#,VB.NET如何将Word转换为PDF和Text
查看>>
玩转Kafka的生产者
查看>>
解决android.permission.WRITE_APN_SETTINGS
查看>>
py编程技巧-1.1-如何在列表、字典、集合中根据条件筛选数据
查看>>
Ruby on Rails: UUID as your ActiveRecord primary key
查看>>
Bean property属性说明
查看>>
微软工程师认为 Mozilla 也应该拥抱 Chromium
查看>>
去年出货的工业机器人,超过1/3都跑来了中国
查看>>
Windows死机的话,可能的一些猫病
查看>>
作为架构师,你必需要搞清楚的概念:POJO、PO、DTO、DAO、BO、VO
查看>>
golang-web框架revel一个表单提交的总结
查看>>
PHP 根据IP获取地理位置
查看>>
如何设置同一单据的单据头字段各行合并显示吗?
查看>>
HAProxy负载均衡代理
查看>>