-
计算节点:提供nova-compute服务的节点,即运行虚拟机的主机。
-
控制节点:提供nova-network(网络控制)、调度管理、api服务、存储卷管理、数据库管理、身份管理和镜像管理等服务的节点。
-
网络控制器:提供nova-network服务的节点。
openstack支持三种网络模式,分别为Flat、Flat DHCP和VLAN,默认为VLAN模式。Flat模式的网络拓扑为扁平网络结构,所有虚拟机连接至同一虚拟网络,需要手动配置网桥;Flat DHCP是在Flat的基础上提供DHCP服务,所有虚拟机的ip地址均可动态获得,并且可以自动建立网桥;VLAN则把整个网络划分为多个虚拟居于网,每个VLAN有一个DHCP服务器,最终用户需要通过×××使用虚拟机。此外,计算节点可使用单网卡或双网卡的方式部署,nova-compute和nova-network可部署在同一节点上或部署在不同节点上,后者为常用的方式,可简单分为:单节点单网卡、多节点单网卡和多节点多网卡。
2.1.Flat模式
Flat模式的网络结构为扁平结构,创建虚拟机时从地址池中获得一个ip地址,并绑定到虚拟机映像中,在计算节点和控制节点上分别创建网桥br100,并手动配置网桥,所有虚拟机连接至同一网桥。所有虚拟机的网关相同,建立在网络控制器上,虚拟机和外部通信时通过所在计算节点上的网桥连接到控制节点上的网桥,然后源NAT方式和外网通信。此外,可在控制节点上建立iptables规则,限制和开放与外网的通信或与其它服务的访问。
2.2.FlatDHCP模式
其拓扑和Flat模式一样,只是在Flat的基础上提供DHCP服务而已。DHCP服务在网桥上监听,当有虚拟机被创建时接收虚拟机的DHCP请求,并从指定的子网中获取一个ip地址做为响应分配给虚拟机。
图1:FlatDHCP模式网络结构
图1为FlatDHCP模式网络拓扑图,其中nova-compute所在的节点为计算节点,nova-network所在的节点为控制节点,计算节点和控制节点均有两个网卡,eth0和外部交换机相连,eth1和虚拟交换机相连,即网桥br100(计算机点和控制节点上均有br100)。控制节点上启动DHCP、DNS和网关服务。
DHCP工作流程:
-
控制节点上的网络控制器运行DHCP服务监听网桥br100
-
虚拟机启动并向DHCP服务器发送DHCP请求
-
网络控制器把从指定的子网中获得的ip地址响应给虚拟机
由于虚拟机的默认网关设置在控制节点上,因此虚拟机和外部通信时,先到控制节点的nova-network,然后做源NAT到外网,因此,外网不能通过eth1访问内网虚拟机。
虚拟访问外网:
-
虚拟机发送报文到所在主机的网桥
-
计算节点接收到虚拟机的报文后转发给控制节点上的网桥
-
控制节点接收到计算节点转发过来的报文后替换报文的源ip地址为公网ip地址后转发到公网。
2.3.VLAN模式
VLAN模式为openstack的默认网络模式,通常为每个项目划分一个VLAN,相当与每个项目属于一个虚拟网络,每个项目拥有自己的VLAN、网桥和子网,项目之间的通信受限。为了能够划分多个VALN,VLAN模式需要支持VLAN标签的交换机支持,同上述的两种模式一样,内网使用的是私有的ip地址,为了能让外网用户能够访问虚拟机,需要一个特殊的×××虚拟机支持,openstack会自动创建×××虚拟机和为用户生成证书和密钥。此外,DHCP服务器的服务范围是所有的VLAN,即为所有VLAN的虚拟机提供DHCP服务。
图2:VLAN模式网络结构
图2为VLAN模式网络结构,其中Cloudpipe ×××为特殊的×××虚拟机,为外网用户访问内网虚拟机提供×××服务;Dnsmasq DHCP Server为DHCP服务器,为所有VLAN的虚拟机提供DHCP服务;IPTables Source Nating为内网虚拟机访问外网做源NAT。
由此可见,VLAN模式是在FlatDHCP的基础上把整个虚拟网络再次划分成多个VLAN,且一般每个VLAN和一个项目相对应,目的是为每个项目提供受保护的网段。此外,为了能让外网特定用户访问内网虚拟机,添加了×××服务,而该×××服务是起在特定的虚拟机上的,而虚拟机访问外网依然通过默认网关做源NAT出去。
不管是Flat、FlatDHCP还是VLAN模式,其默认网关都指向控制节点上的网桥,因此存在单点故障和瓶颈问题,因此需要openstack的高可用性来保证。
3.高可用性如上所述三种网络模式以控制节点的网桥为默认网关存在单点故障和瓶颈问题,高可用(HA)通过把nova-network服务移到计算节点上来解决次问题。
图3:高可用网络结构
图3为openstack使用高可用部署时的网络结构,和上述的三种模式相比较,nova-network服务从控制节点移到计算节点上,nova-network为所在主机的虚拟机提供DHCP、DNS和网关服务,虚拟机访问外网时不许要经过控制节点,而是直接在计算节点上通过源NAT访问外网。此外,每个计算节点有两张网卡,一张直接和外网交换机相连,另一张网卡给虚拟机和外网通信使用。