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模式扩展相关推荐

  1. OpenStack中 Nova的Cell架构模式介绍

    目录 1,什么是cell ?为什么有cell ? 2,cell的两种架构模式及工作原理 3 , Cell v2实现的原理 1,什么是cell ?为什么有cell ? 当openstack nova 集 ...

  2. OpenStack网络 - 使用vlan模式来剖析openstack网络相关概念及原理

    OpenStack网络 - 使用vlan模式来剖析openstack网络相关概念及原理 OpenStack网络 OpenStack网络设置比较复杂,阅读了一些文档,主要是采用两种网络 flat net ...

  3. 技术解析:openstack vlan模式下的隔离和数据流向(转)

    一.隔离 计算机网络,是分层实现的,不同协议工作在不同层,按着OSI的分层模型,共有七个层,我们一般所说的隔离,通常指的是第2层,也叫"数据链路层";数据链路层的网络包,也叫&qu ...

  4. 深入理解 Neutron -- OpenStack 网络实现(2):VLAN 模式

    问题导读 1.br-int.br-ethx的作用是什么? 2.安全组策略是如何实现的? 3.VLAN 模式与GRE模式有哪些不同点?流量上有哪些不同? 4.L3 agent实现了什么功能? 接上篇深入 ...

  5. OpenStack Juno版本网络节点gre模式配置

    2019独角兽企业重金招聘Python工程师标准>>> OpenStack Juno版本网络节点gre模式配置 #开启linux的ip转发功能 #nano /etc/sysctl.c ...

  6. OpenStack之八: network服务(端口9696)

    注意此处用的一个网络,暂时不用启动第二个网 官网地址 https://docs.openstack.org/neutron/stein/install/controller-install-rdo.h ...

  7. VXLAN 隧道 基础介绍 Virtual eXtensible Local Area Network,虚拟可扩展局域网

    一.概述 VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络 ...

  8. havana版openstack(controller节点+network节点+compute节点)安装 CentOS6.5

    1.1    三个节点的openstack系统的安装 说明本次构建主要依据手册进行安装.在网络方面开始选择了VLAN ,但是由于硬件switch不支持,后又从VLAN格式更改为GRE. 构筑下面的测试 ...

  9. 【深度学习】孪生网络(Siamese Network)的模式和训练过程

    [深度学习]孪生网络(Siamese Network)的模式和训练过程 文章目录 1 概述 2 Siamese network 孪生神经网络 3 孪生神经网络和伪孪生神经网络分别适用于什么场景呢? 4 ...

最新文章

  1. 【Spring】spring基于纯注解的声明式事务控制
  2. R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如、粗体、斜体等
  3. JavaScript语言精粹_JSON
  4. 微信企业号OAuth2.0授权-Java
  5. Android --- SDK 和 API 是什么意思
  6. 比起掉头发,我更怕掉队
  7. HttpHandler
  8. cmake 常用变量和常用环境变量
  9. 99年毕业设计获优的程序-图书管理程序 续
  10. 【SAP消息号AA776】
  11. 利用LFW对人脸识别模型进行精度评测
  12. NVivo 2018 Essential Training NVivo 2018基础教程 Lynda课程中文字幕
  13. c# AutoCAD 操作交互
  14. Android渲染优化之卡顿检测、统计fps
  15. HDU, 3579 Hello Kiki
  16. 小程序分类图标提取_腾讯手机管家“垃圾分类”小程序上线 get分类指南
  17. python3 租房信息
  18. Windows 7RTM综合评述
  19. 利用Python实现高斯混合模型(GMM)
  20. 【HDU 1889】Reaux! Sham! Beaux!(模拟+水题)

热门文章

  1. controller层没反应_热拉提一年做几次?热提拉的副作用根本没在怕的~
  2. 虚拟机上部署的项目 访问路径怎么写_桌面虚拟化即将流行开来——基于Hyper-V虚拟机的桌面虚拟化部署...
  3. python openstack rabbitmq_OpenStack--Rabbitmq组件消息队列
  4. centos 6.7 mysql rpm_CentOS 6.7 下RPM方式安装MySQL 5.6
  5. java文档注释生产api没有注释_一个神奇的没有springboot注释的api文档生成器---JApiDocs...
  6. 华为怎么安装服务器系统版本,服务器怎么安装操作系统版本
  7. python24.dll_2_48_python24.dll
  8. linux内存管理策略,Glibc内存管理—ptmalloc内存分配策略(1)
  9. hive中的逻辑运算符 案列_Hive内置运算符
  10. python写配置文件方法_Python读写配置文件的方法