【Nova】nova-network网络模型之flat网络

来源:互联网 发布:网吧软件管理系统 编辑:程序博客网 时间:2024/05/22 10:29

nova-network是Nova组件中的网络服务,用于接收和处理网络相关的任务。

在multi_host的情况下, 每个计算节点都需要运行nova-network服务,它也是作为rpc server来对外提供RpcAPI的。


nova-network支持3种网络模型,flat/flatdhcp/vlan,与之对应有3种网络管理器FlatManager、FlatDHCPManager,VlanManager,nova-network默认的网络管理器是VlanManager。本章会对最简单的flat网络进行学习↓


学习之初,我们要先了解几个概念:

1.OpenStack的网络中有2种IP,fixed_ip/固定ip和floating_ip/浮动ip,OpenStack会创建一些虚拟网络用于组织虚拟机实例,那么这些虚拟网络中的ip就是固定ip,一旦分配给虚拟机实例,就会在虚拟机实例的整个生命流程中与之绑定,固定ip在OpenStack环境外,是无法路由的,也就是我们在OpenStack外是无法通过固定ip访问虚拟机实例的; 那如果我们想通过一个ip地址访问虚拟机实例怎么办呢?这就是浮动ip的用武之地了,浮动ip通常是OpenStack节点的物理网络中的ip地址,是可以路由的,我们可以给虚拟机实例额外分配这样的固定ip,那么就可以通过它来访问实例了,固定ip可以与实例进行动态绑定和释放

FlatNetworkMultInterface.png

上图(摘自OpenStack wiki)就是flat网络在多节点多网卡下的典型架构,顾名思义,flat也就是扁平的意思,在这种网络下所有的虚拟机实例都处于同一个虚拟网络中。

它利用网桥bridge来组织整个虚拟网络,同一个计算节点上的所有虚拟机实例都连接到该节点上的一个br100网桥上(可通过flat_network_bridge进行配置网桥名),并且该网桥会桥接到计算节点的网卡eth0上;同一个计算节点上的实例进行通信时,直接在网桥上进行转发即可;如果不同计算节点上的实例需要进行通信,那么我们要保证上图中的这2个实例的网卡eth0是可以通信的(譬如连接到同一个交换机上);当虚拟机实例访问物理网络或者internet时,流量会借由br100转发到nova-network节点上,然后由nova-network节点会作为路由器将流量进行SNAT然后转发出去;当我们通过浮动IP访问虚拟机实例时,流量会从nova-network节点进入,然后通过DNAT再转发至对应的虚拟机实例。由于外部和虚拟机实例的网络流量都需要经过nova-network节点,那么势必会有单点问题,我们可以考虑在每个计算节点上运行nova-network服务。


这种网络模型十分简单,易于部署和维护,但是因为过于简单了,无法构建丰富的网络拓扑结构,所以不适合在公有云这种大规模部署、需求繁杂的场景下,但是可以考虑在小规模的私有云中使用。除此之外,它还有以下几个缺点:

1.上面说的网桥br100需要我们手动创建,  nat转换规则也需要我们手动配置;

2.我们需要指定一个网段来作为虚拟网络的IP池,虚拟机实例的固定ip就是从这个IP池进行分配,但是由于没有DHCP,虚拟机实例的网络配置需要在来宾系统进行手动配置,我们可以文件注入的方式来替代手动配置工作, 譬如为运行Linux来宾系统的虚拟机实例创建interfaces网络配置文件并注入到/etc/network目录下;当然这种解决方法局限性很大,因为现存的操作系统也是种类繁多的,意味着配置文件和注入位置的各式各样。


原创粉丝点击