我正在寻找一个可以静默处理服务器错误的 HTTP 负载平衡器。我想要的是对每个请求进行负载平衡,以便在最坏的情况下有一点超时。
如果工作网络节点返回 HTTP 500 服务器错误,负载均衡器将不得不使用另一个网络节点重试请求。如果第二个节点确实返回另一个 500 错误,则对最后一个节点执行相同的操作(我假设有 3 个节点)。如果最后一个节点返回 500 错误,则将其显示给最终用户。
如果服务器节点超时(响应时间超过 1 或 2 秒),则必须将请求路由到另一台服务器,客户端应在 2 秒以上的时间内收到良好的响应。
Kri*_*aps 12
您可以使用HttpProxyModule(它是非常标准的模块,通常在 nginx 内部)来实现这样的负载均衡器。
Nginx 是轻量级的、快速的并且有很多功能(你甚至可以在其中嵌入 lua 代码)。
您的用例的示例配置是
upstream backend {
server 10.0.0.1;
server 10.0.0.2;
server 10.0.0.3;
}
server {
listen 80;
server_name _;
location / {
proxy_pass http://backend;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud)
秘诀是proxy_next_upstream指令,它确定在什么情况下请求将传输到下一个服务器。可能的值为:
归档时间: |
|
查看次数: |
7526 次 |
最近记录: |