跳转到: 导航, 搜索

NetworkLoadBalancingIntegrationsWithQuantum

Network Load Balancing Integrations with Quantum Networks

在当今的数据中心,网络负载均衡是许多应用程序部署的必需品。网络负载均衡服务通过不同程度地虚拟化网络连接,提供高可用性、可扩展性和操作便利性。网络虚拟化的程度越高,对应用程序本身的服务就越透明和有益。将关键应用程序部署组件卸载的能力,加上不断增加的“在线”应用程序层功能,使得应用程序架构师和开发人员将网络负载均衡设备视为假定的服务。由于其应用程序透明的特性,负载均衡服务在网络的使用上可能非常复杂。这使得提供灵活的网络集成模型以实现与 Quantum 网络的负载均衡作为服务 (LbaaS) 变得非常重要,并且需要正确理解。

虚拟化网络部署的另一个关键采用因素是它们对成熟且可用的技术的使用。您可以在核心 OpenStack 项目中看到这一概念,它们强调通用组件,而不是替代部署方法,后者虽然通常更先进,但不太传统。这个因素也应适用于负载均衡服务与 Quantum 网络的网络集成。负载均衡服务部署在 Quantum 管理的网络中,或与 Quantum 集成,并不意味着应该对用于网络负载均衡的技术进行根本性改变。虽然虚拟化技术(如网络负载均衡)的发展速度快于传统的网络基础设施,但 Quantum 网络集成必须假定使用成熟技术的最佳实践部署。Quantum 应尽可能对网络负载均衡服务透明,就像负载均衡服务旨在对应用程序部署透明一样。

虽然存在将网络流量分发的替代方法,但尽可能对应用程序透明的需求促使行业倾向于有状态的网络设计。与网络传输和路由中发现的无状态概念相反,有状态的网络会故意插入一个数据平面控制器,或控制器集群,它会为特定的应用程序实例指定特定的流路径。这个控制点是强制执行高可用性、可扩展性以及高级会话、表示和应用程序层卸载的手段。单个网络路径对流的依赖意味着提供该路径的技术必须具有高可用性,并且通常在集群元素之间同步。这使得网络负载均衡器本身成为网络的重度使用者。适应当代网络负载均衡器使用的同步、镜像和网络故障转移技术是一项要求。按需自助服务的云服务特性决定了负载均衡设备的部署完全自动化。了解网络拓扑、邻接、故障转移机制和网络寻址要求以部署负载均衡服务成为一个关键的管理平面问题。这包括基本系统设置和负载均衡服务的每个租户配置。

截至 Folsom 版本,Quantum 支持两种类型的网络集成。

一种是基于所谓的提供商网络。提供商网络在 Quantum 的数据模型中创建映射,代表 Quantum 本身无法直接控制的网络元素。这允许集成传统的网络技术,通常是基于硬件的技术,与完全受控的 Quantum 网络元素一起进行配置。在 Quantum 管理员指南 中给出的示例是提供商路由器的概念,用于 Internet 访问,其中多个接口和 VLAN 在外部路由器上配置,然后映射到 Quantum 的数据模型中。假设提供商将完成所有必要的网络元素配置,外部 VLAN、设备接口和策略,并由 Quantum 引用。网络负载均衡器的某些部署也可以集成到此模型中。

第二个集成部署是负载均衡器的网络由 Quantum 直接控制。负载均衡器的网络接口将像任何其他 Quantum 控制端口一样受到控制。这将适用于作为 nova 虚拟机部署的负载均衡设备。

与所有网络工程文档一样,这是一次尝试捕捉拓扑设计和配置信息的某些要求。特别是,本文试图捕捉支持基于网络的负载均衡服务集成所需的内容。社区是多元化的。对于一些人来说,这些信息可能是历史性的,但对于另一些人来说,却是必需的。这是一项正在进行中的工作,也是对话的起点。随着基于 Quantum 的技术的发展,以及新的基于网络的负载均衡技术被接受到实践中,本文无疑需要更新。

接受的网络负载均衡技术

有成熟的方法来提供基于网络的负载均衡。本节将概述最常用的部署方法,并讨论与 Quantum 网络集成的相关问题。

对于 Quantum 集成,最初的目标是考虑在 路由模式单臂模式 中有状态连接管理器。

有状态 MAC 帧转发 – 透明桥接

MAC 层网络寻址旨在提供节点进入和退出特定网络介质的逻辑手段。操纵 MAC 层访问是一种可以实现网络负载均衡的方式。

为了支持 MAC 层的网络负载均衡,网络设备成为一个桥接器,位于具有不同程度不透明性的访问设备之间。通常需要过滤或代理网络发现协议,以在不有效地被网络检测到的情况下提供适当的控制级别。这意味着负载均衡元素必须执行某些服务,例如代理 ARP 功能,这会使其与 Quantum 端口紧密耦合。

MAC 转发网络负载均衡器通常会重写目标 MAC 地址,从而强制帧被传递到特定的相邻节点。在网络层,负载均衡器可以是透明的,这导致许多人将 MAC 转发负载均衡称为透明模式。

MACForwardingMode.jpg

这项技术在 TCP/IP 变得普遍之前被广泛部署。由于在大多数 Quantum 网络中可以假定 TCP/IP,因此可以减少对有状态 MAC 转发的讨论。

强制将桥接器相邻于网络节点本身通常是不希望的。为了使 Quantum 支持有状态 MAC 帧转发,它必须强制 MAC 帧通过设备。这很可能被视为 Quantum 本身提供的核心服务插入技术,或超出正常的 Quantum 设备部署范围。

在 MAC 层,一些网络负载均衡技术利用以太网中的多播 MAC 转发作为将流量注入集群中多个元素的方式。每个 MAC 帧通过 MAC 层多播泛洪发送到集群中的每个设备。将帧分发到每个元素,允许每个元素(通常基于哈希)确定要处理哪些流以及要丢弃哪些流。这在软件部署中很受欢迎,其中负载均衡元素使用标准的操作系统网络堆栈。由于多播 MAC 转发通常 将相邻的硬件以太网交换机降低到受控制平面绑定的集线器技术,多播 MAC 转发的领先支持者,微软 公司和其他公司,已经很大程度上放弃了它。它不适用于期望硬件网络元素以峰值利用率工作的环境。多播 MAC 泛洪可以被视为分布式网络元素的一个复杂且困难的集成。

对于任何形式的有状态 MAC 帧转发,需要一种让 Quantum 提供 L2 邻接和桥接插入的方式,当网络节点被添加到或从服务部署中删除时。

有状态流启动和直接服务器返回

鉴于 IP 层网络中 UDP 和 TCP 作为连接层协议的普遍使用,网络负载均衡开始利用网络层信息来分发网络负载。网络负载均衡元素将假定连接(至少从 IP 网络层和 UDP 或 TCP 端口层寻址的角度来看),然后在将流量发送到提供服务的节点之前重写目标 IP 地址,通常是源和目标层 4 端口。

传输层或连接层流量管理的一个后果是需要对 IP 数据包路由完全有状态。除了算法载波级 NAT 解决方案之外,相同的连接管理设备必须接收到虚拟服务端点的入站流量,以及提供服务的节点的所有相关数据包。异步路由不应发生。

DSRMode.jpg

为了使 DSR 正常工作,要么需要手动配置服务特定地址到每个提供服务的节点,要么 Quantum 需要能够在配置服务时操作租户节点 IP 别名。同样,在禁用服务时,取消配置服务地址也是可取的。

路由健康注入可以用作粗粒度的、无状态的 DSR 形式。Anycast 网络寻址,其中许多服务端点假定相同的 IP 地址,已取代了 DSR 网络负载均衡器用于无状态 UDP 服务(如 DNS)。随着路由元素在规模上变得越来越了解流,DSR 将成为策略路由的一个函数。目前 Quantum 参与策略路由更多的是基于安全的,使用安全区域基于源地址进行过滤,而不是作为分发流量的一种方式,但可以扩展到包括基本的 DSR 服务。

由于 DSR 实际上是一种路由设计,因此最好将其留给对动态路由的总体讨论以及如何从 Quantum 本身更新来宾节点网络堆栈。

有状态连接管理器

随着 UDP 和 TCP 作为 IP 层之上的连接层协议的广泛使用,网络负载均衡开始利用第 4 层端口信息来分发网络负载。网络负载均衡元素将假定连接(至少从 IP 网络层和 UDP 或 TCP 端口层寻址的角度来看),然后在将流量发送到提供服务的节点之前重写目标 IP 地址,通常是源和目标层 4 端口。

传输层或连接层流量管理的后果是需要对 IP 数据包路由完全有状态。除了算法载波级 NAT 解决方案之外,相同的连接管理设备必须接收到虚拟服务端点的入站流量,以及提供服务的节点的所有相关数据包。异步路由不应发生。

为了保证网络节点的回程流量通过与最初客户端数据包相同的网络元件路由,使用了以下两种解决方案之一。

第一种,通常称为路由模式,要求负载均衡元件上的IP地址充当为提供服务的网络节点的默认网关。除了网络节点的默认网关设置外,不能执行任何会绕过网络负载均衡元件的本地子网网络服务启动。如果发生这种情况,负载跟踪将会出现偏差,因为这种本地访问将不会被统计在内。由于所有从网络节点发出的网络流量的默认网关,负载均衡元件作为高可用性IP数据包转发器的要求变得至关重要。

RoutedMode.jpg

或者,第二种部署形式,通常称为单臂模式,使用源网络地址转换来强制回程流量路由到适当的负载均衡元件。源网络地址转换利用第4层源端口复用和特定的源IP地址来唯一标识属于特定负载均衡元件的网络流。这与许多家庭中用于向多个不可路由地址提供互联网路由所使用的基于端口的地址转换相同。源地址转换克服了回程路径路由问题,因为回程数据包被发送到转换后的地址,而不是原始客户端。源地址转换需要负载均衡元件支持多个IP源地址,通常在一个池中,以便复用的临时第4层源端口耗尽不会限制可以为服务建立的连接数量。此外,源网络地址转换使节点接收到的流量看起来好像来自属于负载均衡元件的转换后的IP地址,而不是原始客户端。除非可以使用更高层协议字段(如HTTP X-Forwarded-For标头)来提供此信息,否则这会模糊节点本身客户端网络地址的日志记录。或者,负载均衡元件通常为服务提供日志记录。

OneArmMode.jpg

如前所述,连接管理器通常不仅用于负载均衡,还用作专用的IP网络地址转换器。网络地址转换用作多租户网络地址空间重叠方案、安全机制以及通过使用不可路由地址来节省网络地址空间的一种手段。在Quantum L3路由和NAT网络节点中,记录在Quantum管理员指南中,就是一个这样的设备。虽然该扩展的目标是支持替换nova的网络服务,但它仍然是一个连接管理器,因为它在连接层跟踪状态。基本的基于连接的负载均衡是这种Quantum网络集成的自然补充。[关于术语的一点说明;在Quantum管理员指南中,目标网络地址(通常称为负载均衡器中的VIP或虚拟服务)被称为浮动IP地址。对于负载均衡行业而言,浮动IP地址通常是活动负载均衡元件响应ARP请求并且可以在HA元件之间迁移的IP地址。它提供IP移动性。这是文档中的一个细微差别。有关IP移动性地址的更多信息,请参阅HA要求部分。]

为了使Quantum支持路由模式下的提供商网络负载均衡服务,它必须支持为虚拟服务端点分配IP网络地址,以及为提供服务的节点分配来自不同网络子网的地址。此外,必须将默认网关地址提供给网络负载均衡元件,用于提供服务的节点。这要求网络负载均衡元件与网络节点在MAC层相邻。对于路由模式下的Quantum控制集成,只需将负载均衡元件配置在与节点相同的租户网络上,即可支持网络邻接要求。与Quantum中的L3路由和NAT扩展一样,假设默认网关IP地址意味着需要更改典型的DHCP设置以使用适当的负载均衡设备。

为了使Quantum支持单臂模式下的提供商网络负载均衡服务,它必须支持为虚拟服务端点分配IP网络地址,并支持一个或多个用于源网络地址转换的IP地址。用于虚拟服务端点和源网络地址转换的地址必须可以从提供服务的节点路由到。

有状态代理

为了将越来越多的应用程序部署复杂性卸载到负载均衡设备上,各种更高层次的代理变得必要。对于TCP WAN优化,双TCP堆栈的完整L4代理变得理想。对于客户端SSL卸载,需要会话和表示层代理。为了支持更高层次的消息基础负载均衡,需要完整的应用程序层代理。负载均衡设备成为内容缓存代理、安全网关、身份上下文强制和消息转换引擎。除了这种层面的“中间件”之外,数据平面集成的业务逻辑提供了高级流量引导、安全性和内容重写。这种层面的应用程序流控制已成为ISV企业软件部署的主力。

使用更高层次的代理具有与连接管理网关相同的MAC、网络和传输层依赖性。它们也同样以路由和单臂模式部署。除了有状态连接管理要求之外,有状态代理通常还需要额外的连接到外部服务。这通常包括存在互联网连接以进行数据和签名更新、信誉或身份服务查询以及呼叫家庭警报。完整的代理部署依赖于基于提供商的AAA系统、NTP、DNS以及许多被认为是现代企业应用程序基础设施的其他系统。

将有状态代理网络负载均衡器集成到Quantum网络中的网络依赖性与有状态连接管理网关相同,只是多了用于依赖服务的额外接口。由于这些附加服务可能属于未来OpenStack集成服务的范围,因此一种操作模式是负载均衡网关完全连接到Quantum管理员指南中说明的网络中的每个网络,包括提供商管理网络、共享公共网络以及租户的虚拟网络,这可能是所有完整代理部署的要求。

高可用性负载均衡集群

由于其任务的性质,负载均衡设备使用网络来实现高可用性和租户数据流量以及自身管理和控制平面的扩展。集成的Quantum网络需要支持负载均衡设备和集群使用的高可用性和扩展技术。本节将讨论负载均衡设备最常使用的可用性和集群技术。

附加网络接口

负载均衡集群需要额外的网络接口来处理控制平面流量。IP单播或多播通信的最佳实践,用于心跳、有状态镜像、配置同步和安全流量,都要求为这些功能使用专用网络。这样做是为了将这种高度敏感的集群流量与正在负载均衡的数据平面流量分开。在Quantum管理员指南中,设置了单独的管理网络,以允许服务间配置信息进行交换。这可能足以满足安全性和配置数据,但仍然可能需要将心跳和有状态镜像流量分离到专用网络接口。

对于管理平面流量,通常还会看到正在使用的浮动HA接口,以减少设备之间配置的多主复制的需求。这意味着每个集群成员都需要额外的网络寻址。通常要求此HA管理流量不能在与设备特定、非HA管理流量相同的子网上寻址。

对于数据平面流量,最佳实践部署建议网络堆栈的每一层都具有冗余和可扩展性。以下是与网络负载均衡设备常用的MAC和网络层冗余和高可用性技术的考虑。

MAC层冗余和高可用性

从以太网链路冗余和扩展开始,链路聚合是物理网络负载均衡设备的最佳实践功能。由于这是一种本地化机制,它可能超出了Quantum网络的范围,但需要在负载均衡设备的设置中加以考虑。

对于Quantum控制的虚拟化负载均衡设备,链路级别冗余功能通常位于超visor的联网堆栈和上行链路接口中。通常至少提供网络接口聚合,如果不是完全的链路聚合控制。对于允许虚拟机直接与硬件网络上下文通信的高级集成,例如SR-IOV部署,将需要某种形式的链路聚合支持。这将影响服务器及其网络接口的裸机设置。

在MAC和网络层之间,HA集群通常支持MAC地址移动的概念。这包括在集群成员之间移动MAC地址时通知网络的能力(通常显示为端口)。MAC移动性用于在集群内提供虚拟服务移动性和在发生故障时进行服务接管。MAC寻址通常从本地管理的MAC地址空间提供,并为需要这种移动性的每个集群组生成。每个MAC广播域可以有多个这样的本地管理的地址。通常,通知采用IPv4中的冗余ARP(GARP)和IPv6中的适当ICMPv6通知的形式。

在Quantum提供商网络中,MAC移动性在负载均衡设备和连接到它的本地网络设备之间处理。Quantum不会意识到此过程。

在Quantum控制的网络中,需要为负载均衡器分配许多不同的端口,最多每个移动MAC地址一个。负载均衡设备为此移动功能生成MAC地址。Quantum需要理解这些MAC地址并确保网络连接正常工作,以实现MAC移动性。值得一提的是,反向ARP技术(RARP)不再足够,因为硬件网络设备需要更新MAC、IP和端口信息以保证端口级别故障转移。负载均衡设备已经放弃了RARP并使用GARP。在Quantum控制的网络中,理解帧转发、MAC移动性和适当的GARP响应对于在网络负载均衡器中部署MAC移动性至关重要。

网络层高可用性

在网络层,集群通常涉及使用浮动或移动IP地址。每个集群成员通常在用于本地转发的每个IP子网中都有一个固定地址,然后集群将在其自身内部拥有几个可以在集群内移动的地址。这些移动地址可用于高可用性IP转发网关地址、源网络地址转换池、监视探测地址以及作为终止客户端网络连接的虚拟服务的端点。

由于Quantum与网络层的核心交互目前仅是充当地址管理解决方案,因此对于Quantum提供商网络或Quantum控制集成,主要关注点是为负载均衡设备和集群获取必要的IP地址。

每个逻辑网络的设备设置以及租户虚拟服务的配置都将涉及与Quantum的交互以提供所需的IP地址。一些设备集群需要连续寻址,但是这种情况已经不常见了。如果需要在子网中进行连续寻址,则必须在部署负载均衡设备之前知道可用的网络地址数量,并咨询Quantum以获取适当的地址。

在路由模式负载均衡部署中,浮动IP地址作为服务节点的默认网关的存在成为关键的网络组件,因为它是节点与本地网络之外通信的唯一方式。这意味着此IP地址必须高度可用。因此,必须支持MAC和网络层移动性的机制。

网络层冗余还可能包括Quantum网络中网络元素之间的动态路由更新的使用。Anycast寻址、路由健康注入(RHI)以及在负载均衡设备后方通告路由都是常见的。虽然Quantum网络目前不认为动态路由在其控制范围内,但该领域的任何附加扩展都必须考虑将动态路由更新作为服务集群高可用性的一种形式。

Quantum网络负载均衡连接要求

虽然可以通过删除解决方案中的冗余或HA功能来实现减少的要求,但所提出的内容是一组允许各种负载均衡解决方案在MAC和网络层集成其管理、控制和数据平面流量的要求。

部署本身与Quantum管理员指南中描述的网络设计相匹配。这包括以下概念

  • 用于服务间配置通信的管理网络
  • 共享网络,用于可以由一个或多个租户共享的提供的网络
  • 包含所有到提供服务的租户节点的流量的数据网络

负载均衡设备的所有其他网络要求都假定从数据网络拓扑部署。它们可能不用于租户数据流量,但将根据Quantum的理解从该拓扑空间支持。

负载均衡设备配置需求

每个负载均衡设备都需要来自管理网络的网络接口和一个 IP 地址。这将用于负载均衡设备特有的流程自动化。每个负载均衡设备可能需要配置网络依赖的管理服务,例如 DNS、NTP、AAA 服务和路由协议。

每个负载均衡设备都需要一个单独的网络接口和 IP 地址,用于集群间心跳、状态镜像和配置同步。这应该是一个与数据网络空间分离的独立网络。此外,设备可能需要在这些接口之间使用 IP 层组播。可能还需要配置适当的组播地址,并可能由 Quantum 管理。除了每个设备的地址外,还需要为集群分配一个或多个浮动或移动 IP 地址。这些地址为配置负载均衡设备集群提供主 HA 端点。

每个负载均衡器需要一个或多个接口,并在 MAC 层进行适当的聚合,以支持租户数据网络。这应该是一个从数据网络空间配置的接口。

Quantum 管理员指南 中,共享网络是单独定义的,因为地址和接口的配置不同。

每个共享网络都需要一个 VLAN、隧道或设备支持的任何 MAC 虚拟化。

对于每个共享网络,负载均衡集群需要为每个网络冗余组生成一个 MAC 地址。这是在 GARP 或 ICMPv6 过程中用于 MAC 移动的 MAC 地址。

每个共享网络都需要分配给共享子网中每个负载均衡设备的 IP 地址。

每个共享网络都需要为负载均衡集群分配每个网络冗余组的 IP 地址。

每个租户配置需求

对于每个定义的租户虚拟网络,每个负载均衡设备都需要在 MAC 层设置虚拟网络。这可以是 VLAN、隧道或负载均衡设备支持的任何 MAC 层虚拟化。

对于每个定义的租户虚拟网络,负载均衡集群需要为每个网络冗余组生成一个 MAC 地址。这是在 GARP 或 ICMPv6 过程中用于 MAC 移动的 MAC 地址。

对于每个定义的租户虚拟网络,每个负载均衡设备都需要从租户 IP 子网地址空间获取一个 IP 地址。

对于每个定义的租户虚拟网络,负载均衡集群需要为每个网络冗余组分配一个 IP 地址。该地址用于支持将集群用作高可用性转发网关。该地址也来自租户子网地址空间。

对于每个定义的租户虚拟网络,负载均衡器集群需要为用于终止该虚拟网络上的客户端连接的每个虚拟服务端点分配一个地址。这是 VIP 或虚拟服务地址。

Quantum Provider 网络负载均衡器连接需求

在 Provider 网络集成中使用物理或虚拟负载均衡设备涉及部署设备,其与网络的连接不是完全由 Quantum 管理的端口。这并不意味着它们不需要 Quantum 逻辑网络配置才能使服务对 OpenStack 租户虚拟机可用。

支持负载均衡设备集群意味着支持每个设备的管理地址和每个集群的 HA 管理地址。这很可能与 Quantum 和其他 OpenStack 服务使用的管理网络相同。此外,如果需要会话镜像,设备供应商的最佳实践可能要求为设备之间网络状态传输创建辅助管理网络。这意味着在自己的 Layer 2 域中拥有一个额外的独立管理网络。

在共享网络上定义的虚拟服务需要每个设备的接口、每个 HA 域的浮动地址用于路由以及每个定义的虚拟服务的浮动地址。该段必须支持动态 MAC 学习以及设备故障转移的动态生成 MAC 地址的使用。

最后,设备必须具有与 OpenStack 租户虚拟机本身的连接。这可能像使它们的地址空间可路由到负载均衡设备一样简单,或者像需要负载均衡设备为每个租户定义单独的 L2 邻接网络一样复杂。这些网络接口也需要动态 MAC 学习以及动态生成 MAC 地址用于租户虚拟机使用的负载均衡地址作为 Layer 3 转发网关的故障转移。

ProviderModeIntegration.jpg

Quantum 控制的网络负载均衡器连接需求

如果负载均衡设备本身受 Quantum 控制,就像今天的虚拟机一样,它们的网络连接将表示为 Quantum 端口。这并不意味着上述所有负载均衡设备的配置需求都被删除,只是它们将由 Quantum 管理。设备管理、共享网络用于虚拟服务 (VIP)、共享或租户网络上的 HA 功能以及状态镜像的连接仍然存在。

需要支持动态 MAC 地址或通过 GARP 进行故障转移的任何要求都需要考虑和支持,以便设备集群功能继续工作。此外,其他客户虚拟机要求,例如需要在不同 hypervisor 上运行某些负载均衡设备或同步和状态镜像接口的 QoS 性能要求,将需要更深入地集成到 OpenStack 服务(如 Nova)中,以确保满足负载均衡设备的需求。 ContolledModeIntegration.jpg

部署具有可路由共享网络的 Multi-Tenant 设备

单臂 Provider 网络

[关于 Provider 集成需求的文本]

OneArmedProviderNetworkTopology.jpg

单臂 Quantum 控制

[关于 Quantum 控制集成需求的文本]

部署具有共享和 Quantum 租户网络的 Multi-Tenant 设备

具有 Quantum 控制租户网络的单臂 Provider 网络

[插入文本]

OneArmedProviderVIPTenantSNAT.jpg

部署单个租户服务负载均衡器

单臂模式

[插入文本]

SingleTenantSNATTopology.jpg

将单租户设备作为 Quantum 租户网络的网关部署

路由模式

[插入文本]

单臂模式

[插入文本]

SingleTenantGatewayReplacement.jpg