• 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 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

    修改方法就不一样了。

  • 相关阅读:
    黑鸟播放器
    Rapid Environment Editor(RapidEE)是一个简易的环境变量编辑器.它包括易于使用的图形用户界面,并取代小型和不方便的Windows编辑框。
    哔哩下载姬DownKyi(原B站视频下载助手) v1.5.2
    PDFXChange Editor Plus v9.3.360.0 Build 360 特别版
    win10设置Python程序定时运行(设置计划任务)
    钉钉自定义机器人介绍
    多标签文件管理器 Multi Commander 11.6.0 Build 2344 + x64 中文免费版
    Wise Care 365 – 世界上最快的系统优化软件
    Honeyview 是一款快速的图片查看器
    最新MCC和MNC国家代码运营商对应表
  • 原文地址:https://www.cnblogs.com/CLTANG/p/3860455.html
Copyright © 2020-2023  润新知