我在负载均衡器上安装了 Pound。它似乎工作正常,只是它会随机分配后端服务器来转发请求。我让一台后端机器承受了如此多的负载,以至于它开始使用交换,我甚至无法通过 ssh 进入它来测试这种情况。我希望负载均衡器能够意识到机器超载,并将其发送到另一台后端机器。但是它没有。我读过手册页,似乎指令“DynScale 1”可以监控这一点,但它仍然重定向到超载的服务器。我还在后端输入了“HAport 22”,因为我无法通过 ssh 进入,所以负载均衡器也不能,它会认为后端服务器已经死机,直到它摆脱负载并做出响应,但这也无济于事。
如果有人能帮忙,我将不胜感激。我当前的配置如下。
###################################################################### ## 全局选项: 用户“www-data” 组“www-data” #RootJail “/chroot/pound” ## 日志记录:(默认进入系统日志) ## 0 无日志 ## 1 正常 ## 2 扩展 ## 3 Apache 风格(通用日志格式) 日志级别 3 ## 每X秒检查一次后端: 活着 5 DynScale 1 客户端 1200 超时 1500 # poundctl 控制套接字 控制“/var/run/pound/poundctl.socket” ###################################################################### ## 监听、重定向并...至: ## 将端口 80 上的所有请求重定向到 SSL 监听HTTP 地址 192.168.1.XX 端口 80 服务 重定向“https://xxx.com/” 结尾 结尾 监听HTTPS 地址 192.168.1.XX 端口 443 证书“/files/www.xxx.com.pem” 服务 后端 地址 192.168.1.1 端口 80 HAport 22 结尾 后端 地址 192.168.1.2 端口 80 HAport 22 结尾 结尾 结尾
答案1
根据您的timeout
设置,Pound 会等待 25 分钟才能收到后端的响应。在测试期间将其设置为较低的时间,例如默认的 15 秒。
答案2
我听到过很多关于其功效的不同意见DynScale
。我们选择不使用它。我们所做的是Priority
为每个部分设置一个 val BackEnd
。从手册页中:
优先级值
此后端的优先级(介于 1 和 9 之间,默认值为 5)。优先级较高的后端将比优先级较低的后端使用得更频繁,因此您应该为功能更强大的服务器定义更高的优先级。
您的新ListenHTTPS
部分应如下所示:
ListenHTTPS
Address 192.168.1.XX
Port 443
Cert "/files/www.xxx.com.pem"
Service
BackEnd
Address 192.168.1.1
Port 80
Priority 7
End
BackEnd
Address 192.168.1.2
Port 80
Priority 3
End
End
End
Priority
尝试每个不同的值,BackEnd
直到您对其分配负载的方式满意为止。
DynScale
您应该在使用时将其关闭Priority
,否则 Pound 将尝试根据实际使用情况为您调整值。
另外,您可能应该将其设置Alive
为更高的时间,例如 30 秒。如果您的服务器承受的负载超出其处理能力,您不会希望 Pound 每 5 秒启动一次以查看它是否再次恢复。
最后,我同意@Andrew。你的Timeout
价值应该低得多。选择适中的值,比如 300(5 分钟)。
答案3
如果您“直接”将负载流量发送到一台后端机器(即不经过 Pound),它将无法检测到负载。
Pound 将简单地尝试后端的端口 80(它实际上将响应初始 TCP 握手、SYN/ACK 等,但仅此而已)并等待直到您指定的超时。
尝试通过 Pound 发送负载流量,并试验后端优先级和 DynScale。Pound 使用与后端的开放、持续连接数来计算负载平衡。
另外,检查“poundctl”命令来查看服务/后端的一些统计数据。