我有 8 台服务器,它们由 NetScaler VPX (10) 进行负载平衡。如果上一台服务器响应 502 状态,如何让 NetScaler 负载平衡器将请求重新发送到下一台服务器?
答案1
这一切都取决于您的配置。但是,在所有情况下,都不是 NetScaler 设备本身会重试到下一个服务器。您必须在配置中创建一个构造,以便当后端服务器返回 HTTP 502 时,重写对客户端的响应以让客户端重试请求。此时必须识别进入 NetScaler 的新请求,因此您可以强制使用后端服务器来处理该请求。
一个选项是使用服务器 ID 配置服务器组的成员,并使用该服务器 ID 执行显式负载平衡。初始失败响应必须返回包含服务器 ID 的 cookie。
如果第二个请求中存在该 cookie,且其包含有效的服务器 ID,那么就会使用该后端服务器。
简而言之,您必须在 NetScaler 上使用以下组件:
- 内容切换(请求是否有服务器 ID Cookie)
- 使用每个服务组绑定的服务器 ID 定义进行负载平衡
- 重写初始请求的响应。
如果您的应用程序不支持重定向,那么您就倒霉了,因为 NetScaler 无法根据第一台服务器的原始响应重试原始请求。
欢呼吧,Jan
答案2
您可以根据此链接使用 HTTP 调用策略