作者:Sammy Liu
2. Neutron 的传统和 DVR Router
2.1 传统(Legacy) Router
2.2 DVR 对 L3 Agent 的影响
通过使用 DVR,三层的转发(L3 Forwarding)和 NAT 功能都会被分布到计算节点上,这意味着计算节点也有了网络节点的功能。但是,DVR 依然不能消除集中式的 Virtual Router,这是为了节省宝贵的 IPV4 公网地址,所有依然将 SNAT 放在网络节点上提供。这样,计算和网络节点就看起来如下:
网络节点:提供 南-北 SNAT,即在不使用浮动 IP 时,虚机访问外网的网络得经过网络节点。也就是说,网络节点依然必须走传统的 HA 解决方法,比如 VRRP 和 PeaceMaker。但可惜的是,Juno 版本不支持同时使用 HA 和 DVR。
- 计算节点:提供 南-北 DNAT, 即外网访问虚机的网络流量得经过计算节点;以及 东-西 转发,即虚机之间的网络经过计算节点。因为所有计算节点的参与,这部分的网络处理负载也就自然地被均衡了。
2.3 DVR 对 L2 Agent 的影响
DVR 对 L2 Agent 的影响主要有:
- DVR 新创建安的各个 network namespace 需要被 plug 到 OVS bridge
- OVS flows 需要更新来支持 DVR
3. 安装和功能分析
3.1 安装和配置
Juno 版本中 DVR 的要求如下:
- 使用 ML2 plugin
- 使用 L2pop mechanism driver
- 使用 Openvswitch mechanism driver, 安装 OVS agent 在所有的计算节点上
- 所有的计算节点连接外网
- Juno 中只支持 Tunnel 虚拟网络模式 (VXLAN or GRE)。 Kilo 版本中会增加 VLAN 模式的支持。
3.1.1 安装
使用两个计算节点。在每个计算节点上安装并配置 L3 Agent:
(1)修改系统配置
(2)安装 neutron-l3-agent: apt-get install neutron-l3-agent
(3)增加一块访问外网的网卡 eth3
(4)创建 OVS bridge:ovs-vsctl add-br br-ex
(5)增加新的网卡到该 bridge 上:ovs-vsctl add-port br-ex eth3
(6)配置 L3 Agent
(7)配置 Metadata Agent
3.1.2 配置 DVR
注意还需要配置使用 l2_population。
对普通用户来说,neutron 会根据管理员在控制节点上的配置项 router_distributed 的值,来决定是创建普通 Router 还是 DVR Router;对管理员来说,还可以使用 –distributed {True,False} 参数来指定是否创建 DVR 模式的 router。
经过以上配置后的 neutron agent如下。可以看到,除了网络节点外,所有的计算介绍上也部署了 L3 Agent 和 Metadata Agent。
下一期:
DVR Router 流程
本文转载自:http://geek.youkuaiyun.com/news/detail/76034