openstack网络详解
声明:
本博客欢迎转发,但请保留原作者信息!
新浪微博:@孔令贤HW;
博客地址:http://blog.csdn.net/lynn_kong
内容系本人学习、研究和总结,如有雷同,实属荣幸!
这篇文章基本是参考了 http://www.mirantis.com/blog/的几篇英文blog,进过翻译和整理,详细介绍了openstack Essex版的网络模型,虽然在Folsom版启动了Quantum,但并不成熟,如果是部署中没有用到网络高级特性,建议大家还是使用nova-network。
1 Flat
Flat模式和FlatDHCP模式其实区别不大,都是基于网桥网络,只是FLat模式需要管理员手动配置(包括配置网桥和外部的DHCP设备).
2 FlatDHCP
这种模式下与Flat模式不同的地方在于有一个DHCP进程,每一个运行nova-network进程的节点(网络控制节点/nove-network主机)就是一个单独的网络。Nova会在nove-network主机建立网桥(默认名称br100,配置项flat_network_bridge=br100),并给该网桥指定该网络的网关IP,同时Nova在网桥处起一个DHCP进程,最后,会建立iptables规则(SNAT/DNAT)使虚拟机能够与外界通信,同时与一个metadata服务器通信以取得cloud内的信息。
计算节点负责创建对应节点的网桥,此时的计算节点网卡可以不需要IP地址,因为网桥把虚拟机与nove-network主机连接在一个逻辑网络内。虚拟机启动时会发送dhcpdiscover以获取IP地址。如下图:
图中的虚线(两个计算节点的eth0)表示节点之间的网络,可选。虚拟机通往外界的数据都要通过nove-network主机,DHCP在网桥处监听,分配fixed_range指定的IP段。
2.1 Drawback
这种部署方式的缺点之前说过----单节点故障、无二层隔离(即所有的虚拟机都在一个广播域)。
2.2 HA方案
为了解决单节点故障问题,有如下几个方案可供选择:
Ø Option 1: Failover
NTT实验室的工作人员通过配置网络控制节点使用主备模式实现HA,但宕机需要4秒的时间恢复,不能用于实时应用
Ø Option 2: Multi-nic
这种模式使虚拟机桥接到不同的网络,每个网络中为虚拟机创建网卡、指定IP,每个网络可以有自己的nove-network主机作为网关。虚拟机可能会有多个路由,如果一个失败,可以选择使用另一个,该方式的缺点是对于用户来说,需要感知多个网络,同时指定切换策略。同时,必须为每一个网卡关联floating_ip。
Ø Option 3: HW Gateway
可以配置dnsmasq使用外部硬件网关作为虚拟机网关。可以配置dhcpoption=3,<ip of gateway>。这需要人工干预,即需要在外部网关设备上设置IP的转发规则(而不是在nove-network主机).该方式把HA的任务交给更可靠的硬件设备,但nova-network仍需要负责floating_ip natting和DHCP,所以仍需要主备策略保证。
Ø Option 4: Multi-host
该方式被认为是最佳的解决方案。即在每个计算节点上部署nova-network,这样每个计算节点为自己主机上的虚拟机负责,为每个计算节点创建网桥并为网桥指定不同的IP(从fixed_ip中取)作为虚拟机网关,在每个主机起DHCP服务,同时要求每个计算节点至少两个物理网卡,每个计算节点负责自己的虚拟机与外网的通信。如下图:
在每个计算节点:
« 从“flat”IP池中取出一个给网桥
« 创建dnsmasq DHCP服务并在网桥IP监听
« 在该节点上创建的所有虚拟机的默认网关为网桥IP
FlatDHCPManager在每个计算节点上创建一个静态的租约文件记录虚拟机的私有IP,文件的数据是从DB中获取,包括MAC、IP、虚拟机名。每个dnsmasq只负责为本节点的虚拟机发放IP,所以从”instance”表的”host”字段过滤即可。如下图所示,每个计算节点的虚拟机都有一个默认网关:
登录虚拟机查看验证:
root@vm_1:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
root@vm_3:~# route -n
Kernel IP routing table