作为openstack中的核心组件,nova肩负着管理虚拟机的使命。nova提供nova-api,nova-scheduler,nova-network等几个重要的服务。而其中nova-network是openstack网络管理模块neutron还没有独立出来时候的前身,当然其功能就是网络和地址管理,它会创建虚拟网络。
nova支持三种类型的网络,对应三种网络管理类型,分别为Flat管理模式、FlatDHCP管理模式、VLAN管理模式。默认使用VLAN模式。首先简单介绍一下这三种网络模式:
1. Flat模式:所有实例连接到同一个虚拟网络,网络架构采用扁平的结构,需要手动设置网桥
2. FlatDHCP模式:与Flat模式类似,所有实例连接到同一个虚拟网络。不同的是,实例ip地址的分配采用DHCP模式获取(nova-network节点提供虚拟DHCP服务),而且可以自动建立网桥
3. VLAN模式:以划分子网的形式将网络隔离开,为不同项目提供受保护的网段,该模式需要在交换机层面进行相应的配置
下面我们来详细的介绍一下该三种模式及其工作机制:
1)指定一个子网,规定虚拟机可以使用的ip范围,也就是配置文件中的fixed_range,分配的ip不能超过这个范围
2)创建实例时,从ip池中取出一个有效ip,在实例启动时注入到实例的镜像文件中
3)手动设置好一个网桥(br100),所有实例都是同这个网桥连接,形成一个虚拟网络,nova-network所在的节点作为默认网关
4)nova-network服务所在节点(以下称网络控制器)对虚拟机实例进行NAT转换,实现实例对外网(Internet)的访问
注:Internet若想访问虚拟机实例需要给虚拟机分配浮动ip(float_ip)或实现宿主机到虚拟机的端口映射
1)与Flat模式类似,自动建立网桥,从ip池中获取有效ip地址分配给每个虚拟机实例作为固定ip(fixed_ip)
2)网络控制器运行dnsmasq服务监听这个网桥
3)实例通过网络控制器实现实例对外网(Internet)的访问
注:Internet若想访问虚拟机实例需要给虚拟机分配浮动ip(float_ip)或实现宿主机到虚拟机的端口映射
1)网络控制器上的DHCP服务器从被分配到项目的子网中获取ip地址
2)为了使用户得到项目的实例(访问私网网段),需要创建一个特殊的VPN实例
3)计算节点为用户生成证书和Key,使得用户可以访问VPN,同时计算节点自动启动VPN
注:每一个项目都具有自己的VLAN和网桥,所有属于某个项目的实例都位于同一个VLAN下,这些实例获取到一些只能从VLAN内部访问到的私有ip地址。VLAN模式需要交换机支持VLAN模式。
由于FlatDHCP采用扁平式结构,实例若能被外网访问都被分配了公网地址(float_ip),在虚拟机实例数量较多时,容易发生地址冲突。所以FlatDHCP模式适合在小型的实验环境部署。而VLAN模式则适合在业务量较大的企业环境应用。
根据业务需求,FlatDHCP可分为多种部署模式。这里为了实现复杂环境中的高可用(HA),主要介绍在服务器为双网卡且环境中存在多个计算节点的情况下的multi_host(多个网络控制器节点)模式。
该种模式下,为每个计算节点安装nova-network服务,每个计算节点上的flat_interface作为网桥提供dhcp,dns服务,为在其上的实例的网关。实例不必都从控制节点通过。
notice:
先前OpenStack只有Nova 和 Swift,Nova负责了大量的功能,包括网络(Nova-network)后来为了开发,管理,运维方便,逐渐将个模块从Nova分离出来,网络就是Neutron,Neutron支持了大量功能都是Nova-network不支持的,Nova-network目前已在上游社区废弃。