第 13 章 配置分布式虚拟路由(DVR)

13.1. 了解分布式虚拟路由(DVR)

当您部署 Red Hat OpenStack Platform 时,您可以在集中式路由模型或 DVR 之间进行选择。

每个模型都有优缺点。使用此文档来仔细规划集中式路由或 DVR 是否适合您的需求。

新的默认 RHOSP 部署使用带有 Open Virtual Network 机制驱动程序(ML2/OVN)的 DVR 和 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 寻址(GUAs)使用跨项目没有重叠的全局广播地址(GUAs),因此可以在没有 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 路由器故障转移完成后出现数据包丢失。