1. nova network简介

网络管理和配置是云计算中一项非常重要的功能。nova自带的nova-network实现了一些基本的网络模型,允许虚拟机之间的相互通信及虚拟机对internet的访问。归纳的来讲nova network的主要功能有:

  • 网络模型:nova network实现了三种网络模型,允许管理员根据自己的需要进行组网,让虚拟机之间可以相互通信。这三种模式分别是:flat、flatdhcp、vlan,后面会对这三种模型进行更加详细的介绍。

  • IP地址管理:nova network需要管理虚拟机使用的IP地址,这些地址包含两类,一类是fixed ip,在虚拟机的整个生命周期中该IP地址都不会发生变化;另一类是floating ip,是动态的分配给虚拟机的,随时都可以收回。

  • dhcp功能:在flatdhcp和vlan模式下,虚拟机是通过DHCP来获取其fixed ip的;nova network会启动dnsmasq作为虚拟机的DHCP服务器,该虚拟机分配ip。

  • 安全防护:出于安全的考虑,nova中的虚拟机可以防止IP/MAC洪泛,不能随便修改虚拟机的MAC地址,修改后虚拟机就不能上网了,这项功能主要是通过ebtables/iptables实现的。

下面简单的介绍下nova network的三种网络模型。

在这三种模型中flat是最简单的,nova的操作也最少,相关的配置需要管理员事先配置好。在flat模式下,管理员需要手动创建一个网桥,所有的虚拟机都会关联到该网桥,所有的虚拟机也都处于同一个子网下,虚拟机的fixed ip都是从该子网分配,而且网络相关的配置信息会在虚拟机启动时注入到虚拟机镜像中。

flatdhcp模式与flat比较接近,但nova会自动创建网桥,维护已经分配的floating ip,并启动dnsmasq来配置虚拟机的fixed ip,创建虚拟机时,nova会给虚拟机分配一个fixed ip,并将MAC/IP的对应关系写入dnsmasq的配置文件中,虚拟机启动时通过DHCP获取其fixed ip,因此就不需要将网络配置信息注入到虚拟机中了。

vlan模式比上面两种模式复杂,每个project都会分配一个vlan id,每个project也可以有自己的独立的ip地址段,属于不同project的虚拟机连接到不同的网桥上,因此不同的project之间是隔离的,不会相互影响。为了访问一个project的所有虚拟机需要创建一个vpn虚拟机,以此虚拟机作为跳板去访问该project的其他虚拟机。与flatdhcp类似,vlan模式下,也会为每个project启动一个dnsmasq来配置虚拟机的fixed ip。

2. nova network部署与配置

部署nova network时至少需要两块网卡,一块作为public network,主要承载公网流量和openstack各个组建之间的流量,要能够访问公网,ip地址可以为内网地址也可以为公网地址;另一块作为internal network,承载虚拟机之间相互通信的流量,不需要为其分配ip地址,只需要保证它们物理上可以互联即可。

nova network有两种常见的部署方式,第一种方式是单个nova-network节点,充当所有虚拟机的网关,并维护dhcp服务器。这种方式最大的问题就是单点故障,一旦nova-network节点出问题了,就会影响到所有的虚拟机,需要实施HA方案。另一种方式就是multihost,即在每个计算节点上部署nova-network,每个计算节点上的虚拟机通过本机的nova-network就可以获取ip地址、metadata及访问公网。这样做的优势就是一旦某个节点出现问题,也不会影响到其他节点,而且有很好的扩展性,也是我们目前部署最为广泛一种模式。

nova network的主要配置选项有:

  • network_manager:该选项决定了网络的模式,有三种可选的:nova.network.manager.FlatManager、nova.network.manager.VlanManager、nova.network.manager.FlatDHCPManager,分别对应上面所提到的flat模式、flatdhcp模式和vlan模式。

  • fixed_range:所有虚拟机fixed ip所在的网段,通过nova-manage创建网络时,创建的网络应该是该网段的子网。

  • floating_range:所有可以的floating ip所在的网段。

  • force_dhcp_release:是否在删除虚拟机时立即释放其所占用的ip地址。若为True,则会立即释放,否则需要经过一段时间才释放。默认应该设置为True。

  • my_ip:nova-network所在的ip地址,不显式设置时该ip是宿主机上一个能访问公网的ip地址。配置时可显式的设置为本机的公网ip。

  • multi_host:是否启用multihost模式,如果启用,则在每个计算节点上至少要启动nova-api-metadata、nova-network、nova-compute三个服务。默认值为false。启用multihost时,需要将其设置为True。

  • public_interface:公网的物理接口。nova network会将floating ip配置在该接口上,另外就是在做SNAT时会将其作为参数加入到iptables规则中。

  • flat_network_bridge:在flat/flatdhcp模式下,使用那个网桥来连接虚拟机,实现虚拟机之间的通信。

  • flat_interface:虚拟机之间通信的物理接口。在flatdhcp模式下,nova network会将该接口加入到flat_network_bridge中,实现跨宿主机的虚拟机之间的通信。默认为none。

  • vlan_interface:虚拟机之间通信的物理接口。在vlan模式下,每个project会有一个vlan,不同的vlan和不同的网桥关联,网桥再通过vlan_interface实现跨宿主机的通信。

  • vlan_start:在vlan模式下,最小的vlan id。

3. 典型环境配置

1. all in one

all in one环境下,每台机器上有一整套的openstack环境,每台都可以作为一个region,对于测试多region非常有必要。在all in one环境下,虚拟机之间的网络通信通过网桥就可以完成,所有出到公网的流量则是通过SNAT来实现。所以在这种环境下,需要指定public_interface、flat_network_bridge,但不需要指定flat_interface,要让其保持默认的none,否则不同的all in one环境可能会出现相互干扰。上次demo环境的网络问题就是因为flat_interface配置不当造成的。另外,在通过nova-manage创建网络时也需要注意,不要指定bridge_interface,否则bridge_interface会被加入到网桥中,可能会造成一些很奇怪的问题。上次demo环境中,每隔一段时间配置在eth0上的ip公网ip地址会被移动到网桥上,而且eth0也会被加入到网桥上,其原因就是因为在创建网络时将bridge_interface设置为了eth0.

2. multihost

在multihost模式下,首先需要将multi_host设置为True,然后在每个计算节点上都安装好nova-network nova-api-metadata nova-compute。

参考资料

1. http://docs.openstack.org/folsom/openstack-compute/admin/content/ch_networking.html

2. http://www.mirantis.com/blog/openstack-networking-single-host-flatdhcpmanager/

Note: 本文由家军撰写

nova network工作原理及配置的更多相关文章

  1. [转帖]keepalived工作原理和配置、使用

    keepalived工作原理和配置.使用 https://www.iteye.com/blog/aoyouzi-2288124 keepalived是什么 keepalived是集群管理中保证集群高可 ...

  2. Oracle NET工作原理、配置及连接问题排查

    一.Oracle NET配置文件 Oracle NET是一个软件层,支持不同网络协议之间的转换.不同的物理机器可以借助这个软件层实现相互间的通信,具体而言就是实现对oracle的远程访问. oracl ...

  3. java复习要点(一)------- java语言的特点、java的工作原理、配置环境变量、java命令的使用

    一.java语言的特点: (1)简单并面向对象 (2)鲁棒并安全: java语言在编译及运行程序时,都要进行严格的检查,防止不匹配问题的发生.如果引用一个非法类型,或执行一个非法类型操作,java减肥 ...

  4. keeplived工作原理及配置

    一.keepalived简介及作用 Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能 keepal ...

  5. vmware三种网络模式的工作原理及配置详解

    vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-Only(仅主机模式). 打开vmware虚拟机,我们可以在选项栏的“编辑”下的 ...

  6. lvs持久性工作原理和配置

    作者: ISADBA|FH.CN 日期: // 转载请注明: 作者:ISADBA.COM|FH.CN BLOG:http://isadba.com 原文:http://isadba.com/?p=67 ...

  7. UCENTER同步登录工作原理和配置要点

    ucenter的同步登录原理: 1)Ucenter是和uc_client同步的.每个PHP应用,加入了UCENTER后,都会在主目录下有个UC_CLIENT目录.这个目录里,都有一个client.PH ...

  8. symfony2 路由工作原理及配置

    1.路由是程序的方法和URL的一一映射.

  9. 理解GRUB2工作原理及配置选项与方法

    GRUB2是借鉴GRUB改写到更加安全强大到多系统引导程序,现在大部分较新的Linux发行版都是使用GRUB2作为引导程序的.GRUB2采用了模块化设计,使得GRUB2核心更加精炼,使用更加灵活,同时 ...

随机推荐

  1. 没有可用的复制构造函数或复制构造函数声明为“explicit”

           c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\vector(810) : error C2558: str ...

  2. Delphi开发环境中应用层网络协议的实现

    已经进入Internet网络时代了,许多新出的软件都拥有网络功能.其实,在这些软件背后所依靠的技术基础就是一系列的Inernet网络协议标准,亦即TCP/IP系列协议. 下面本人简要介绍一下在Delp ...

  3. Execute Javascript in iOS Applications

    In this tutorial, I have covered How to execute JavaScript in iOS / Objective-C. You can execute Jav ...

  4. C#编程(四十三)----------Lambda表达式

    Lambda表达式 案例: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  5. 详解Java Spring各种依赖注入注解的区别

    注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Comp ...

  6. MySQL中进行树状所有子节点的查询 . mysql根据父id 查询所有的子id

    在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. ...

  7. 女子监狱第四季/全集Orange Is the New Black迅雷下载

    女子监狱 第三季 Orange Is the New Black 3 (2015) 本季看点:该剧由<吉尔莫女孩>.<单身毒妈第一季>编剧杰姬·科恩的打造.由<护士当家& ...

  8. Android避免过度绘制之道

    如果一个布局十分复杂,那么就需要来排查是否出现了过度绘制,如果出现了,那么很可能会造成刷新率下降,造成卡顿的现象.那么什么是过度绘制呢?过度绘制就是在同一个区域中叠加了多个控件.这就像小时候我们画画, ...

  9. centos7中使用yum安装tomcat以及它的启动、停止、重启

    centos7中使用yum安装tomcat 介绍 Apache Tomcat是用于提供Java应用程序的Web服务器和servlet容器. Tomcat是Apache Software Foundat ...

  10. 在Redhat 7.3中采用离线方式安装Docker

    本文环境 Redhat Linux 7.3.Docker 18. 写在前面 Docker CE默认是不支持Redhat的,如果你想在Redhat安装,可以使用静态二进制包.这是我多次尝试RPM后得出的 ...