Citrix ADC

定制加载方式

对服务器参数(如 CPU 使用率、内存和响应时间)执行自定义负载平衡。使用自定义加载方法时,Citrix ADC 设备通常会选择不处理任何活动事务的服务。如果负载平衡设置中的所有服务都在处理活动事务,则设备会选择负载最小的服务。一种特殊类型的监视器(称为负载监视器)计算网络中每个服务的负载。负载监视器不会标记服务的状态,但是当这些服务不是 UP 时,它们会从负载平衡决策中取出服务。

有关负载监视器的更多信息,请参阅了解负载监视器。下图说明了负载监视器的工作方式。

图 1. 负载监视器的操作方式

CustomLoad_working

负载监视器使用简单网络管理协议 (SNMP) 探测器通过向服务发送 SNMP GET 请求来计算每个服务的负载。此请求包含一个或多个对象 ID (OID)。该服务通过 SNMP GET 响应进行响应,其衡量指标与 SNMP OID 相对应。负载监视器使用响应指标(如下所述)来计算服务上的负载。

负载监视器使用以下参数计算服务上的负载:

  • 通过 SNMP 探测检索的衡量指标值,这些探测作为 Citrix ADC 设备中的表存在。
  • 为每个指标设置阈值。
  • 分配给每个指标的权重。

例如,假设三种服务,即 Service-HTTP-1、Service-HTTP-2 和 Service-HTTP-3。

  • Service-HTTP-1 正在使用 20 兆字节 (MB) 的内存。
  • Service-HTTP-2 正在使用 70 MB 的内存。
  • Service-HTTP-3 正在使用 80 MB 的内存。

负载平衡的服务器可以将 CPU 和内存使用率等衡量指标导出到服务,从而将这些指标提供给负载监视器。负载监视器向服务部门发送一份包含 OID 1.3.6.1.4.1.5951.4.1.1.41.1.5、1.3.6.1.4.1.5951.4.1.1.41.1.4 和 1.3.6.1.4.1.5951.4.1.1.41.1.3 的 SNMP GET 请求。不支持字符串类型的 SNMP OID,因为您无法通过使用字符串 OID 计算负载。可以使用其他数据类型(例如 INT 和 gauge32)来计算载荷。这三个服务对请求作出响应。Citrix ADC 设备比较导出的指标,然后选择 Service-HTTP-1,因为它具有更多的可用内存。下图说明了此过程。

图 2. 自定义加载方法的工作原理

custom_working2

如果每个请求使用 10 MB 内存,Citrix ADC 设备将按以下方式传递请求:

  • Service-HTTP-1 接收第一、第二、第三、第四和第五个请求,因为此服务的 N 值最低。
  • Service-HTTP-1 和 Service-HTTP-2 现在具有相同的负载,因此虚拟服务器将恢复为这些服务器的轮询方法。因此,Service-HTTP-2 接收第六个请求,Service-HTTP-1 接收第七个请求。
  • 由于 Service-HTTP-1、Service-HTTP-2 和 Service-HTTP-3 a 现在都具有相同的负载,虚拟服务器也会恢复到 Service-HTTP-3 的轮询方法。因此,Service-HTTP-3 接收第八个请求。

下表汇总了 N 的计算方式。

已收到请求 已选择的服务 当前 N 值(活动交易数量) 备注
Request-1 Service-HTTP-1; (N = 20) N = 30 Service-HTTP-3 具有最低的 N 值。
Request-2 Service-HTTP-1; (N = 30) N = 40 -
Request-3 Service-HTTP-1; (N = 40) N = 50 -
Request-4 Service-HTTP-1; (N = 50) N = 60 -
Request-5 Service-HTTP-1; (N = 60) N = 70 -
Request-6 Service-HTTP-1; (N = 70) N = 80 Service-HTTP-2 和 Service-HTTP-3 具有相同的 N 值。
Request-7 Service-HTTP-2; (N = 70) N = 80 Service-HTTP-3 具有相同的 N 值。
Request-8 Service-HTTP-1; (N = 80) N = 90 Service-HTTP-1、Service-HTTP-2 和 Service-HTTP-3 具有相同的 N 值。

如果为服务分配了不同的权重,则自定义负载算法会考虑每个服务上的负载和分配给每个服务的权重。它通过使用以下表达式中的值 (Nw) 来选择服务:

Nw = (N) * (10000/重量)

与前面的示例一样,假设为 Service-HTTP-1 分配了权重 4,为 Service-HTTP-2 分配了权重 3,为 Service-HTTP-3 分配了权重 2。如果每个请求使用 10 MB 内存,Citrix ADC 设备将按以下方式传递请求:

  • Service-HTTP-1 接收第一、第二、第三、第四、第五、第六、第七和第八个请求,因为此服务的 Nw 值最低。
  • Service-HTTP-2 接收第九个请求,因为此服务的 Nw 值最低。

Service-HTTP-3 具有最高的 Nw 值,因此不考虑进行负载平衡。

下表汇总了 Nw 的计算方式。

|已收到请求|已选择的服务|当前 NW 值 (活动事务数量) * (10000/重量)|备注 |-|-|-|-| |Request-1|Service-HTTP-1; (Nw = 50000)|Nw = 75000|Service-HTTP-1 具有最低的 Nw 值。 |Request-2|Service-HTTP-1; (Nw = 5000)|Nw = 100000|-| |Request-3|Service-HTTP-1; (Nw = 15000)|Nw = 125000|-| |Request-4|Service-HTTP-1; (Nw = 20000)|Nw = 150000|-| |Request-5|Service-HTTP-1; (Nw = 23333.34)|Nw = 175000|-| |Request-6|Service-HTTP-1; (Nw = 25000)|Nw = 200000|-| |Request-7|Service-HTTP-1; (Nw = 23333.34)|Nw = 225000|-| |Request-8|Service-HTTP-1; (Nw = 25000)|Nw = 250000||-| |Request-9|Service-HTTP-2; (Nw = 233333.34)|Nw = 266666.67|Service-HTTP-2 has the lowest Nw value.

当 Service-HTTP-1 完成其活动事务或其他服务(Service-HTTP-2 和 Service-HTTP-3)时的 Nw 值等于 400000 时,将选择 Service-HTTP-1 进行负载平衡。

下图说明了 Citrix ADC 设备在分配权重时如何使用自定义加载方法。

图 3. 分配权重时自定义加载方法的工作原理

customload-weights

要配置自定义加载方法,请参阅配置不包括策略的负载平衡方法

定制加载方式