第 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 的北方路由 - 浮动 IP 寻址是一个一对一的网络地址转换(NAT),可以修改,以及虚拟机实例之间的浮点。虽然浮动 IP 建模为浮动 IP 和网络服务(neutron)端口之间的一对一关联,但它们通过与执行 NAT 转换的网络服务路由器关联来实现。浮动 IP 本身从提供外部连接的 uplink 网络获取。因此,实例可以与外部资源(如互联网上的端点)通信,或者以其他方式通信。浮动 IP 是一个 IPv4 概念,不适用于 IPv6。假设项目使用的 IPv6 寻址使用全局多播地址(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 节点,流向 Controller,并返回 Compute 节点。这对性能造成负面影响。
- 具有浮动 IP 接收和发送数据包的实例 - 外部网络接口仅在 Controller 节点上可用,因此流量是否源自于实例,还是从外部网络发送到实例,它必须通过 Controller 节点流。因此,在大型环境中,Controller 节点可能会大量流量负载。这会影响性能和可扩展性,还需要仔细规划以满足外部网络网关接口中的足够带宽。这同样适用于 SNAT 流量的要求。
为更好地扩展 L3 代理,网络服务可以使用 L3 HA 功能,该功能可在多个节点之间分发虚拟路由器。如果 Controller 节点丢失,HA 路由器将故障转移到另一节点上的待机,且在 HA 路由器故障转移完成前数据包丢失。