openstack分布式路由详解_第1页
openstack分布式路由详解_第2页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 录在 openstack传统的集中式路由场景下:从图中可以明显看到东西向和南北向的流量会集中到络节点,这会使络节点成为瓶颈。这些处理的核是路由器服务。那么如果计算节点上就能实现路由器服务的话,疑是更为合理的。这个思路是正确的,但具体实施起来有诸多的考量和细节问题。为了降低络节点的负载,同时提可扩展性,OpenStack Juno版本开始正式引了分布式路由(Distributed Virtual Router,DVR)服务,来让计算节点来处理原先的量的东西向流量(不同vpc的 vm之间的通信)和DNAT 流量(有 floating IP的 vm跟外的通信)。这样络节点只需要处理占到部分的SNA

2、T ( floating IP的 vm跟外的通信)流量,降低了负载和整个系统对络节点的依赖。DHCP 服务和 VPN 服务仍然需要集中在络节点上进。这样的优势:东西向流量吞吐量增加。东西流量下VM平均带宽增加。南北向流量和东西向流量不再互相扰。当东西向流量在同个Hypervisor上,就不会过不必要的路径。注意:openstack较新的官安装档把默认的络组件openvswitch 改为 Linux bridge 了,原因这不做深究。有资料显dvr只能部署在 ovs上,这个点需要注意下。东西向同机器路由器直接在br-int上转发,不经过外部桥。不同机器如图所,租户T1的两个不同的:VM1和 VM

3、4在不同机器上,VM1要访问 VM4,请求过程是计算节点1上的 IR1起到路由器功能。返程的包,则在计算节点2上的路由器 IR2起作。两个路由器的id、内部接、功能等其实都是样的。即同个路由器,但是实际上在多个计算节点上存在。但是同样的路由器,如果都暴露在外部络上,会出现冲突。例如当请求包离开计算节点1时,带的源应该是标关的,但这个mac在计算节点 2上同样存在。因此,在 br-int上进拦截,修改其源mac为 tunnel端的 。同样的,计算节点2在 br-int上拦截源mac为这个 tunnel端的 ,替换为正常的关的,直接扔给标虚拟机。南北向 floating 浮动IP)这种情况(即SN

4、AT)下,跟传统模式很类似。租户 T2在外部,通过默认的SNAT 关访问内部的vm 。此时,络节点上的T2-SNAT 起到路由器的作反过来,租户T2内部的 vm VM1试图访问外部络,则仍然经过络节点上的T2-SNAT 路由器。为何这种情况下必须从络节点?这是因为对于外部络来说,看到的都是外部接的地址,这个地址只有个。当然,如果以后每个计算节点上都可以带有这样个SNAT 默认外部地址的话,这种情况下的流量也是可以直接从计算节点出去的。有 floating 浮动IP)这种情况下,计算节点上的专门负责的外部路由器将负责进转发,即计算节点1上的 IR2和计算节点 上的 IR1。络节点服务基本没变动,

5、除了L3服务需要配置为dvr_snat模式。命名空间上会多个专门的snat-xxx命名空间,处理来计算节点的floating IP的南北向流量。计算节点需要额外启l3_agent(dvr模式),以及metadata agent。其实,跟传统情况下的络节点分类似。每个路由器有的命名空间,进跨的转发。所不同的是,单独有个qfloat-XXX路由器(也在个独命名空间中)来负责处理带有floating IP的南北向流量。这较重要的地,是可能有多个同样的关存在于多个计算节点上,因为同个的虚机是可能存在在多个计算节点的。要解决这个问题,也不难,合理处理好本地的ARP 请求,让本地对关的请求拦截发给本地的路

6、由器即可。配置样例基本部署模型由个控制器节点,两个或多个络节点和多个计算节点组成。控制节点配置把以下部分加/etc/neutron/neutron.conf:DEFAULTcore_plugin = ml2service_plugins = routerallow_overlapping_ips = Truerouter_distributed = Truel3_ha = Truel3_ha_net_cidr = 169.254.192.0/18max_l3_agents_per_router = 3min_l3_agents_per_router = 2当配置router_distribut

7、ed = True标志时,所有户创建的路由器是分布式的。没有它,只有特权户可以使distributed True创建分布式路由器。类似地,当配置l3_ha = True标志时,所有户创建的路由器默认为HA。因此,在配置件中这两个标志设置为True,所有户创建的路由器将默认为分布式HA路由器(DVR HA)。同样可以通过具有管理凭据的户在neutron 命令中设置标志来显式实现:$ neutron router-create name-of-router -distributed=True -ha=True1max_l3_agents_per_router和min_l3_agents_per_r

8、outer确定将被实例化的备份DVR / SNAT路由器的数量。把以下部分加/etc/neutron/plugins/ml2/ml2_conf.ini:ml2type_drivers = flat,vxlantenant_network_types = vxlanmechanism_drivers = openvswitch,l2populationextension_drivers = port_securityml2_type_flatflat_networks = externalml2_type_vxlanvni_ranges = MIN_VXLAN_ID:MAX_VXLAN_ID将M

9、IN_VXLAN_ID和MAX_VXLAN_ID替换为适于您的环境的VXLAN ID最值和最值。当常规户创建络时,tenant_network_types选项中的第个值将成为默认项络类型。络节点配置配置Open vSwitch代理。将以下内容添加到/etc/neutron/plugins/ml2/ml2_conf.ini中:ovslocal_ip = TUNNEL_INTERFACE_IP_ADDRESSbridge_mappings = external:br-exagentenable_distributed_routing = Truetunnel_types = vxlanl2_pop

10、ulation = True将TUNNEL_INTERFACE_IP_ADDRESS 替换为处理VXLAN项络的接的IP地址。配置L3代理。将以下内容添加到/etc/neutron/l3_agent.ini中:DEFAULTha_vrrp_auth_password = passwordinterface_driver = openvswitchexternal_network_bridge =agent_mode = dvr_snatexternal_network_bridge选项故意不包含值。计算节点配置ovslocal_ip = TUNNEL_INTERFACE_IP_ADDRESSb

11、ridge_mappings = external:br-exagentenable_distributed_routing = Truetunnel_types = vxlanl2_population = Truesecuritygroupfirewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver配置L3代理,将以下内容加/etc/neutron/l3_agent.ini:DEFAULTinterface_driver = openvswitchexternal_network_bridge =agent_mode = dvr将TUNNEL_INTERFACE_IP_ADDRESS 替换为处理VXLAN项络的接的IP地址。已知限制前不持将路由器从仅分布式,仅HA或传统式迁移到分布式HA。 路由器必须创建为分布式HA。 也不持反向。您不能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论