作者:【吴业亮】
博客:http://blog.csdn.net/wylfengyujiancheng
OpenStack 用户可能会发现,按照 Neutron 原先的设计,所有网络服务都在网络节点上进行,这意味着大量的流量和处理,给网络节点带来了很大的压力。这些处理的核心是路由器服务。任何需要跨子网的访问都需要路由器进行路由。很自然,能否让计算节点上也运行路由器服务?这个设计思路无疑是更为合理的,但具体实施起来需要诸多细节上的技术考量。
为了降低网络节点的负载,同时提高可扩展性,OpenStack 自 Juno 版本开始正式引入了分布式路由(Distributed Virtual Router,DVR)特性(用户可以选择使用与否),来让计算节点自己来处理原先的大量东西向流量和非 SNAT 南北流量(有 floating IP 的 vm 跟外面的通信)。
这样网络节点只需要处理占到一部分的 SNAT (无 floating IP 的 vm 跟外面的通信)流量,大大降低了负载和整个系统对网络节点的依赖。很自然的,FWaaS 也可以跟着放到计算节点上。
DHCP 服务、VPN 服务目前仍然需要集中在网络节点上进行。
控制节点:
openstack-config --set /etc/neutron/neutron.conf DEFAULT router_distributed True
网络节点:
openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini DEFAULT enable_distributed_routing True
openstack-config --set /etc/neutron/l3_agent.ini DEFAULT agent_mode dvr_snat
计算节点:
修改配置文件/etc/neutron/l3_agent.ini
# cp -a /etc/neutron/l3_agent.ini /etc/neutron/l3_agent.ini_bak
[DEFAULT]
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
openstack-config --set /etc/neutron/l3_agent.ini DEFAULT agent_mode dvr
openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini DEFAULT enable_distributed_routing True
openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs bridge_mappings
physnet1:br-eth1
ovs-vsctl add-br br-eth1
ovs-vsctl add-port br-eth1 ens33(业务网)
计算节点上重启 neutron-l3-agent服务(默认没开启)