- 前言
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第 1 篇 高性能网站构建
- 第 1 章 深入理解 DNS 原理与部署 BIND
- 第 2 章 全面解析 CDN 技术与实战
- 第 3 章 负载均衡和高可用技术
- 第 4 章 配置及调优 LVS
- 第 5 章 使用 HAProxy 实现 4 层和 7 层代理
- 第 6 章 实践 Nginx 的反向代理和负载均衡
- 第 7 章 部署商业负载均衡设备 NetScaler
- 第 8 章 配置高性能网站
- 第 9 章 优化 MySQL 数据库
- 第 2 篇 服务器安全和监控
- 第 10 章 构建企业级虚拟专用网络
- 第 11 章 实施 Linux 系统安全策略与入侵检测
- 第 12 章 实践 Zabbix 自定义模板技术
- 第 13 章 服务器硬件监控
- 第 3 篇 网络分析技术
- 第 14 章 使用 tcpdump 与 Wireshark 解决疑难问题
- 第 15 章 分析与解决运营商劫持问题
- 第 16 章 深度实践 iptables
- 第 4 篇 运维自动化和游戏运维
- 第 17 章 使用 Kickstart 完成批量系统安装
- 第 18 章 利用 Perl 编程实施高效运维
- 第 19 章 精通 Ansible 实现运维自动化
- 第 20 章 掌握端游运维的技术要点
- 第 21 章 精通手游运维的架构体系
最佳实践 36:NetScaler 基本负载均衡核心参数配置
本实践中所说的基本负载均衡,是相对于内容交换的,不通过应用层的内容来进行负载调度,仅仅通过 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。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论