返回介绍

最佳实践 36:NetScaler 基本负载均衡核心参数配置

发布于 2025-04-20 17:44:43 字数 3655 浏览 0 评论 0 收藏

本实践中所说的基本负载均衡,是相对于内容交换的,不通过应用层的内容来进行负载调度,仅仅通过 4 层的信息。

注意

NetScaler 支持 TCP 模式和 HTTP 模式。

在 TCP 模式中,NetScaler 的网络行为和 HAProxy 相似。

在 HTTP 模式中,虽然此处 NetScaler 使用了 4 层的信息,但其分析了应用层的内容,并可以进行重构等。

配置一个基本的 HTTP 模式的负载均衡的步骤如下。

1)添加后端服务器。使用的命令如下:

add server server-10.128.114.77 10.128.114.77

2)添加一个 HTTP 服务 service(后端服务器+端口,及属性)。使用的命令如下:

add service service-http-10.128.114.77 server-10.128.114.77 HTTP 80 -gslb NONE -maxClient 1000 -maxReq 1000 -cip ENABLED REALIP -usip NO -useproxyport YES -sp OFF -cltTimeout 10 -svrTimeout 20 -CKA YES -TCPB NO -CMP YES

各参数的含义如下。

- maxClient:NetScaler 向后端服务器打开的连接数的最大值。

- maxReq:持久连接上,NetScaler 可以向后端服务器通过一个连接可以发送的请求数量。

- cip:是否在 HTTP 中启用传递客户端 IP。在本例中,启用,使用 HTTP 的 Header REALIP 向后端服务器传递客户端来源 IP。

- usip:默认情况下,NetScaler 使用的代理模式,以本机的 MIP 作为源 IP 向后端服务器发起 TCP 连接。在某些业务场景中,可能需要直接以转发的方式向后端服务器发起请求,即不改变来源 IP 地址,以客户端 IP 作为源 IP 不变。

- useproxyport:在启用了 usip 时,是否以客户端来源的 TCP 端口作为源端口。

- sp:浪涌保护。一般建议关闭,后面有详细描述。

- cltTimeout、svrTimeout:关闭不活跃的 TCP 连接(分别和客户端、和服务器端)前保持的时间。

- CKA:客户端 Keep-Alive 是否打开,一般打开。

- TCPB:TCP buffer 特性,一般关闭。

- CMP:压缩,一般启用。

注意

usip 开启时,NetScaler 无法对后端服务器使用连接复用。在后端服务器上看到的 TCP 连接数一般比不开启的多 1 倍以上。

3)添加一个虚拟服务器 vserver。使用的命令如下:

add lb vserver vserver-http-x.y.z.139-80 HTTP x.y.z.139 80 -lbMethod  ROUNDROBIN -persistenceType COOKIEINSERT -persistenceBackup SOURCEIP -cltTimeout 10

各参数的含义如下。

- lbMethod:负载均衡算法。如轮询、最小连接数等。一般使用轮询即可。

- persistenceType:会话保持的方法。这个和 HAProxy 里面的 cookie 指令类似。可以选择让 NetScaler 插入 COOKIE(COOKIEINSERT)或者使用源地址保持(SOURCEIP)。

- persistenceBackup:同上,在第一种方法无法判断调度到哪个后端服务器时,使用该会话保持方法。

- cltTimeout:客户端超时时间。

4)vserver 和 service 绑定。使用的命令如下:

bind lb vserver vserver-http- x.y.z.139-80 service-http-10.128.114.77

5)监控后端服务的健康情况。使用的命令如下:

bind lb monitor http service-http-10.128.114.77

HTTP 模式的健康检查,是 NetScaler 内置的,其内容是:

show lb monitor http
1)   Name.......:           http  Type......:      HTTP   State....:   ENABLED
Standard parameters:
  Interval.........:            5 sec     Retries...........:                3
  Response timeout.:            2 sec      Down time.........:           30 sec 
  Reverse..........:               NO     Transparent.......:               NO
  Secure...........:               NO     LRTM..............:          ENABLED
  Action...........:   Not applicable     Deviation.........:            0 sec 
  Destination IP...:    Bound service
  Destination port.:    Bound service
  Iptunnel.........:               NO
  TOS..............:               NO     TOS ID............:                0
  SNMP Alert Retries:               0      Success Retries..:                1
  Failure Retries..:                0
Special parameters:
  HTTP request.....:"                     HEAD /" #使用 HEAD 方法
  Custom headers...:""
  Response codes...:
       200 #检查返回的状态码
 Done

可以自定义健康检查的方法,具体如下:

add lb monitor Unicms-Http-ecv HTTP-ECV -send "GET /UNSServices.asmx" -recv UNSServices -LRTM ENABLED -interval 3 -resptimeout 1 -downTime 20

各参数的含义如下。

- send:向后端服务器发送的请求。

- recv:后端服务器的响应中必须包含的字符串。

- LRTM:计算探测的响应时间。

- interval:探测间隔。

- resptimeout:判断响应超时的时间。

- downTime:当后端服务器被探测为 DOWN 的时候,等待该时间后再发起探测请求。

另外,可以使用 customHeaders 这个参数来向后端服务器发送额外的 HTTP 的 Header。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。