第 13 章 配置分布式虚拟路由(DVR)
13.1. 了解分布式虚拟路由(DVR)
当您部署 Red Hat OpenStack Platform 时,您可以选择集中式路由模型或 DVR。
每个模型都有优缺点。使用本文档来仔细规划集中式路由或 DVR 是否适合您的需求。
新的默认 RHOSP 部署使用 DVR 和带有 Open Virtual Network 机制驱动程序(ML2/OVN)的 Modular Layer 2 插件。
ML2/OVS 部署中默认禁用 DVR。
13.1.1. 第 3 层路由概述
Red Hat OpenStack Platform Networking 服务(neutron)为项目网络提供路由服务。如果没有路由器,项目网络中的虚拟机实例可以通过共享的 L2 广播域与其他实例通信。创建路由器并将其分配到项目网络时,允许该网络中的实例与其他项目网络或上游通信(如果为路由器定义了外部网关)。
13.1.2. 路由流
Red Hat OpenStack Platform (RHOSP)中的路由服务可分为三个主要流:
- east-West 路由 - 同一项目中不同网络间的流量路由。这个流量不会离开 RHOSP 部署。这个定义适用于 IPv4 和 IPv6 子网。
- 使用浮动 IP 的 North-South 路由 - 浮动 IP 寻址是一个一对一的网络地址转换(NAT),可以修改,以及虚拟机实例之间的浮点数。虽然浮动 IP 是作为一对一的关联,但浮动 IP 和网络服务(neutron)端口之间的关联,它们通过关联执行 NAT 转换的网络服务路由器来实施。浮动 IP 本身取自为路由器提供外部连接的 uplink 网络。因此,实例可以与外部资源(如互联网上的端点)或其它方式通信。浮动 IP 是 IPv4 概念,不适用于 IPv6。假设项目使用的 IPv6 地址使用全局多播地址(GUA),且项目间没有重叠,因此可以在不使用 NAT 的情况下路由。
- 没有浮动 IP 的 North-South 路由(也称为 SNAT)- 网络服务为没有分配浮动 IP 的实例提供默认端口地址转换 (PAT) 服务。通过此服务,实例可以通过路由器与外部端点通信,但不能以其他方式通信。例如,实例可以浏览互联网上的网站,但外部的 Web 浏览器无法浏览实例上托管的网站。SNAT 仅适用于 IPv4 流量。另外,分配了 GUAs 前缀的网络服务网络不需要网络服务路由器外部网关端口上的 NAT 来访问外部世界。
13.1.3. 中央化路由
最初,网络服务(neutron)设计为具有由 Neutron L3 代理管理的项目虚拟路由器的集中式路由模型,它们都由 Neutron L3 代理部署在专用节点或节点上(称为网络节点或 Controller 节点)。这意味着,每次需要路由功能(east/west、浮动 IP 或 SNAT)时,流量都会遍历拓扑中的专用节点。这引入了多个挑战,并导致更理想的流量流。例如:
- 通过 Controller 节点的实例流间的网络流量 - 当两个实例需要通过 L3 相互通信时,流量必须经过 Controller 节点。即使实例调度到同一 Compute 节点上,流量仍必须离开 Compute 节点,通过控制器流,并且路由回 Compute 节点。这会对性能造成负面影响。
- 带有浮动 IP 的实例通过 Controller 节点接收和发送数据包 - 外部网络网关接口仅在 Controller 节点上可用,因此流量是否源自实例,还是前往外部网络中的实例,它必须通过 Controller 节点流。因此,在大型环境中,Controller 节点可能会大量流量负载。这会影响性能和可扩展性,还需要仔细规划在外部网络网关接口中容纳足够带宽。同样的要求适用于 SNAT 流量。
为了更好地扩展 L3 代理,网络服务可以使用 L3 HA 功能,该功能在多个节点之间分发虚拟路由器。如果 Controller 节点丢失,HA 路由器可能会在另一个节点上故障转移到待机,在 HA 路由器故障转移完成前可能会丢失数据包。