理解 OpenStack 高可用(HA)(3):Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing)
本系列会分析 OpenStack 的高可用性(HA)解决方案:
(1)概述 (TBD,写完整个系列在回来写这块)
(2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议)
(3)Neutron L3 Agent HA - DVR (分布式虚机路由器)
(4)RabbitMQ 和 Mysql HA
Neutron 作为 OpenStack 一个基础性关键服务,高可用性(HA)和扩展性是它的基本需求之一。对 neutron server 来说,因为它是无状态的,我们可以使用负载均衡器(Load Balancer)比如 HAProxy 来实现其 HA 和扩展性;对于 Neutron L3 Agent 来说,一个带外(Out-of-band)的 HA 实现方案可以使用 PeaceMaker,但是这会大大增加系统的复杂性,另一个就是之前介绍的 VRRP,但是它也存在不少问题:(1)需要额外的硬件来组成 VRRP 组,这会带来成本增加(2)它无法解决扩展性问题,东-西和南-北网络流量都需要经过活动的 VRRP Router。而 Juno 中引入的 DVR 功能正是用来解决这两点不足的。
1.基础知识1.1 路由 (Routing)1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库)
基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。
。。。
4.5.3 qrouter 的 main 路由表
main 路由表是为虚拟子网服务的,每个 subnet 对应一条路由规则,使得目的为每个 subnet 的网络包从指定的 qrouter 的 qr interface 上发出。
root@compute1:/home/s1# ip netns exec qrouter-e8f12f7a-6938-4e65-88c4-97e4cb211b27 ip route81.1.180.0/24 dev qr-517bdba3-b1 proto kernel scope link src 81.1.180.1 #为到子网 1 中的虚机的网络包做路由90.1.180.0/24 dev qr-f849ae46-48 proto kernel scope link src 90.1.180.1 #为到子网 2 中的虚机的网络包做路由91.1.180.0/24 dev qr-e47fca31-db proto kernel scope link src 91.1.180.1 169.254.31.238/31 dev rfp-e8f12f7a-6 proto kernel scope link src 169.254.31.238 #为从 fip 进来的外网访问内部虚机的网络包做路由
5. Neutron 其它服务与 DVR5.1 FWaas DVR
DVR 与传统的 FWaas 不兼容,因为它作用于neuron 网络节点上的 virtual router,过滤进出租户网络的网络包。传统的 FWaas 可以参考我的另一篇文章。
DVR 实现后,FWaas 需要做相应的修改。
官方文档在这里:
https://wiki.openstack.org/wiki/Neutron/FWaaS/FWaaS-DVR
Spec:https://review.openstack.org/#/c/106225/9/specs/juno/neutron-dvr-fwaas.rst
目标:FWaas 保持对 南-北流量做防火墙,而不影响东-西流量。
做法:Neutron 网络节点上的 FWaas Agent 安装在 SNAT network namespace 中;计算和网络节点上的 FWaas Agent 安装在 qrouter network namespace 中。
5.2 VPNaas DVR
Juno 版本中 VPNaas 不支持 DVR,只支持传统的 router。Kilo 版本中会实现 VPNaas 对 DVR 的支持。新的 VPN 服务只会在 dvr_snat 节点上的 snat namespace 上运行。
5.3 LBaas 与 DVR
两者之间没有相互依赖关系,所以 DVR 对 LBaas 没有影响。
总体情况:
6. 后续版本中 DVR 开发6.1 Kilo 版本中
- VPNaaS 对 DVR 的支持
- 从传统 router 迁移到 DVR router
- 网络节点上 HA + DVR 支持
- VLAN 支持
6.2 Liberty 版本中
- L3 Agent 重构
- 分布式 DHCP
- 性能调优
- 分布式 SNAT
从第五和第六两个章节也可以看出,Juno 版本才添加的 DVR 功能还很不完善,难以满足生产环境的使用要求,主要是因为它还不支持目前实际部署中应该很广泛的 VLAN 组网模式,以及无法解决 HA 和 DVR 共存的问题。可喜的是这两个主要问题会在 K 版本中解决,因此 K 版本中的 DVR 至少可以用来做测试用了。等到 L 版本,实现分布式 DHCP 和 SNAT,以及性能优化以后,离生产环境的要求基本就差不多了。
参考链接:
原文:
http://www.cnblogs.com/sammyliu/p/4713562.html
[
本帖最后由 linda 于 2015-11-29 00:59 编辑 ]