ADC

自定义加载方法

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

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

图 1. 负载监视器的工作原理

CustomLoad_working

负载监视器使用 SNMP 探测器通过向服务发送 SNMP GET 请求来计算每项服务的负载。此请求包含一个或多个对象 ID (OID)。该服务通过 SNMP GET 响应进行响应,其衡量指标与 SNMP OID 相对应。负载监视器使用响应指标来计算服务的负载。

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

  • 通过 SNMP 探测器检索的指标值,这些值在 NetScaler 设备中以表格形式存在。
  • 为每个指标设置的阈值。
  • 为每个指标分配的权重。

例如,假设三种服务,即 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.4.1.4.1.4.1.5、1.3.6.1.4.1.1.1.1.1.5、1.3.6.1.1.4.1.4.1.1.4 和 1.3.6.1.4.1.4.1.1.4 和 1.3.6.1.4.1.1.3 的 SNMP GET 请求。不支持 STRING 类型的 SNMP OID,因为您无法使用字符串 OID 来计算负载。可以使用其他数据类型来计算载荷,例如 INT 和 gauge32。这三个服务对请求作出了回应。NetScaler 设备比较导出的指标,然后选择 Service-HTTP-1,因为它有更多的可用内存。下图说明了这个过程。

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

custom_working2

如果每个请求使用 10 MB 内存,则 NetScaler 设备会按以下方式发送请求:

  • Service-HTTP-1 接收第一、第二、第三、第四和第五个请求,因为此服务的 N 值最低。
  • Service-HTTP-1 和 service-HTTP-2 现在具有相同的负载,因此虚拟服务器将恢复为这些服务器的循环方法。因此,Service-HTTP-2 接收第六个请求,Service-HTTP-1 接收第七个请求。
  • 由于 ServerHTTP-1、SeverHTTP-2 和 SeverHTTP-3 现在都具有相同的负载,因此虚拟服务器也会恢复到 ServerHTTP-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 内存,则 NetScaler 设备会按以下方式发送请求:

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

Service-HTTP-3 的 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 值等于 400,000 时,会选择 Service-HTTP-1 进行负载平衡。

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

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

自定义负载重量

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

自定义加载方法