ADC

负载平衡的工作原理

在基本的负载平衡设置中,客户端将其请求发送到在 Citrix ADC 设备上配置的虚拟服务器的 IP 地址。虚拟服务器根据称为负载平衡算法的预设模式将它们分发到负载平衡应用程序服务器。有时,您可能需要为负载平衡虚拟服务器分配一个通配符地址,而不是特定的 IP 地址。有关在设备上指定全局 HTTP 端口的说明,请参阅 全局 HTTP 端口

负载平衡基础知识

负载平衡设置包括负载平衡虚拟服务器和多个负载平衡的应用程序服务器。虚拟服务器接收传入的客户端请求,使用负载平衡算法选择应用程序服务器,然后将请求转发到选定的应用程序服务器。以下概念图说明了典型的负载平衡部署。另一种变体涉及分配全局 HTTP 端口。

图 1. 负载平衡体系结构

负载平衡架构

负载平衡虚拟服务器可以使用多种算法(或方法)来确定如何在其管理的负载平衡服务器之间分配负载。默认负载平衡方法是连接最少的方法,在这种方法中,Citrix ADC 设备将每个传入客户端连接转发到当前具有最少活动用户连接的负载平衡应用程序服务器。

您在典型的 Citrix ADC 负载平衡设置中配置的实体是:

  • 负载平衡虚拟服务器。客户端向特定负载平衡网站或应用程序发送连接请求的 IP 地址、端口和协议组合。如果应用程序可以从 Internet 访问,则虚拟服务器 IP (VIP) 地址为公有 IP 地址。如果只能从局域网或广域网访问该应用程序,则 VIP 通常是私有(ICANN 不可路由)IP 地址。
  • 服务。用于将请求路由到特定负载平衡应用程序服务器的 IP 地址、端口和协议组合。服务可以是应用程序服务器本身的逻辑表示形式,也可以是托管多个应用程序的服务器上运行的应用程序的逻辑表示形式。创建服务后,将其绑定到负载平衡虚拟服务器。
  • 服务器对象。一种虚拟实体,使您能够为物理服务器分配名称,而不是通过其 IP 地址来识别服务器。如果您创建服务器对象,则可以在创建服务时指定其名称而不是服务器的 IP 地址。否则,在创建服务时必须指定服务器的 IP 地址,此 IP 地址将成为服务器的名称。
  • 监视器。Citrix ADC 设备上的一个实体,用于跟踪服务并确保其正常运行。监视器会定期探测(或执行运行状况检查)您分配给它的每项服务。如果服务在超时指定的时间内没有响应,并且指定数量的运行状况检查失败,则该服务将被标记为关闭。然后,Citrix ADC 设备在执行负载平衡时会跳过该服务,直到导致服务停止响应的问题得到解决。

负载平衡设置中的虚拟服务器、服务和负载平衡应用程序服务器可以使用 Internet 协议版本 4 (IPv4) 或 Internet 协议版本 6 (IPv6) IP 地址。您可以在单个负载平衡设置中混合 IPv4 和 IPv6 地址。

有关负载平衡设置的变体,请参阅以下用例:

了解拓扑

在负载平衡设置中,负载平衡服务器在逻辑上位于客户端和服务器群之间,用于管理流向服务器群中服务器的流量。在 Citrix ADC 设备上,应用服务器由称为服务的虚拟实体表示。下图显示了基本负载平衡配置的拓扑。

图 2. 基本负载平衡拓扑

负载平衡拓扑

在逻辑示意图中,负载平衡用于管理流向服务器的流量。虚拟服务器选择服务,然后指定该服务处理客户端请求。假设创建服务 service-HTTP-1 和 service-HTTP-2 并将其绑定到名为 vserver-LB-1 的虚拟服务器的场景。vserver-LB-1 将客户端请求转发到 service-HTTP-1 或 service-HTTP-2。Citrix ADC 设备使用连接最少的负载平衡方法为每个请求选择服务。下表列出了必须在设备上配置的基本实体的名称和值。

实体 名称 IP 地址 端口 协议
虚拟服务器 Vserver-LB-1 10.102.29.60 80 HTTP
服务 Service-HTTP-1 10.102.29.5 80 HTTP
Service-HTTP-2 10.102.29.6 80
显示器 默认值

下图显示了上表中描述的负载平衡示例值和强制参数。

图 3. 负载平衡实体模型

负载平衡实体模型

使用通配符而不是 IP 地址和端口

有时,您可能需要使用通配符作为虚拟服务器的 IP 地址或端口或服务端口。以下情况可能需要使用通配符:

  • 如果 Citrix ADC 设备配置为透明传递,则无论其发送到哪个 IP 或端口,都必须接受发送到它的所有流量。
  • 如果一个或多个服务监听不为人知的端口。
  • 如果一项或多项服务会随着时间的推移而更改它们所监听的端口。
  • 如果您达到可在单台 Citrix ADC 设备上配置的 IP 地址和端口数量的限制。
  • 如果要创建侦听特定虚拟 LAN 上所有流量的虚拟服务器。

当通配符配置的虚拟服务器或服务接收流量时,Citrix ADC 设备将确定实际的 IP 地址或端口,并为该服务和关联的负载平衡应用程序服务器创建记录。这些动态创建的记录称为动态学习的服务器和服务记录。

例如,防火墙负载平衡配置可以对 IP 地址和端口使用通配符。如果将通配符 TCP 服务绑定到这种类型的负载平衡虚拟服务器,则虚拟服务器将接收并处理与任何其他服务或虚拟服务器不匹配的所有 TCP 流量。

下表介绍了一些不同类型的通配符配置以及必须使用每种配置的时间。

IP 端口 协议 说明
* * TCP 接受发送到 Citrix ADC 设备上任何 IP 地址和端口的流量的通用通配符虚拟服务器。使用通配符虚拟服务器时,设备会动态学习每项服务的 IP 和端口,并在处理流量时创建必要的记录。
* * TCP 防火墙负载平衡虚拟服务器。您可以将防火墙服务绑定到该虚拟服务器,然后 Citrix ADC 设备会将流量通过防火墙传送到目的地。
IP 地址 * TCP、UDP 和任何 接受发送到指定 IP 地址的所有流量的虚拟服务器,无论端口如何。您必须将流量重定向到的服务显式绑定到此类虚拟服务器。它不能动态学习它们。
* port SSL、SSL_TCP 接受发送到特定端口上任何 IP 地址的所有流量的虚拟服务器。用于全局透明 SSL 卸载。通常为相同协议类型的服务执行的所有 SSL、HTTP 和 TCP 处理都应用于定向到此特定端口的流量。设备使用端口动态了解必须使用的服务的 IP。如果未指定明文,Citrix ADC 设备将使用端到端 SSL。
* port 不适用 所有其他可以接受到端口流量的虚拟服务器。您不会将服务绑定到这些虚拟服务器。Citrix ADC 设备动态学习它们。

注意:如果您已将 Citrix ADC 设备配置为使用全局(通配符)端口的透明通道,则可能需要打开边缘模式。 有关更多信息,请参阅“配置边缘模式”。“

Citrix ADC 设备通过首先尝试完全匹配来尝试定位虚拟服务器和服务。如果未找到任何匹配项,它将继续按以下顺序根据通配符搜索匹配项:

  1. 特定 IP 地址和特定端口号
  2. 特定 IP 地址和*(通配符)端口
    • (通配符)IP 地址和特定端口
    • (通配符)IP 地址和 *(通配符)端口

如果设备无法按 IP 地址或端口号选择虚拟服务器,它会根据请求中使用的协议按以下顺序搜索虚拟服务器:

  1. HTTP
  2. TCP
  3. 任何

配置全局 HTTP 端口

您无需为全局 HTTP 端口配置服务或虚拟服务器。相反,您可以使用 set ns param 命令配置特定端口。配置此端口后,Citrix ADC 设备会接受与该端口号匹配的所有流量,并将其作为 HTTP 流量进行处理,动态学习该流量并为该流量创建服务。

您可以将多个端口号配置为全局 HTTP 端口。如果您在单个 set ns param 命令中指定多个端口号,请用单个空格分隔端口号。如果已经将一个或多个端口指定为全局 HTTP 端口,并且您想在不删除当前配置的端口的情况下添加一个或多个端口,则必须在命令中指定所有端口号,包括当前和新的端口。在添加端口号之前,使用 show ns param 命令查看当前配置的端口。

使用命令行界面配置全局 HTTP 端口

在命令提示符处,键入以下命令以配置全局 HTTP 端口并验证配置:

set ns param –httpPort <port>

show ns param
<!--NeedCopy-->

示例 1:将端口配置为全局 HTTP 端口

在此示例中,端口 80 被配置为全局 HTTP 端口。

set ns param -httpPort 80
Done
show ns param
         Global configuration settings:
                          HTTP port(s): 80
                       Max connections: 0
           Max requests per connection: 0
                   Client IP insertion: DISABLED
                        Cookie version: 0
        Persistence Cookie Secure Flag: ENABLED
        ...
        ...
<!--NeedCopy-->

示例 2:在已配置一个或多个全局 HTTP 端口时添加端口**

在此示例中,端口 8888 被添加到全局 HTTP 端口列表中。端口 80 已配置为全局 HTTP 端口。

> show ns param
        Global configuration settings:
                          HTTP port(s): 80
                       Max connections: 0
           Max requests per connection: 0
                   Client IP insertion: DISABLED
                        Cookie version: 0
        Persistence Cookie Secure Flag: ENABLED
                          Min Path MTU: 576
        ...
        ...
 Done
> set ns param -httpPort 80 8888
 Done
>  show ns param

        Global configuration settings:
                          HTTP port(s): 80,8888
                       Max connections: 0
           Max requests per connection: 0
                   Client IP insertion: DISABLED
                        Cookie version: 0
        Persistence Cookie Secure Flag: ENABLED
                          Min Path MTU: 576

        ...
        ...
 Done
>
<!--NeedCopy-->

使用配置实用程序配置全局 HTTP 端口

  1. 导航到“系统”>“设置”>“更改 HTTP 参数”,然后添加 HTTP 端口号。
负载平衡的工作原理