首页 > 解决方案 > 在具有多个后端的 apache 反向代理中请求需要很长时间

问题描述

我使用 Apache 2.2.34 作为反向代理服务器。有10多个后端。在给定时间,只有一个后端服务器工作,并且它们都以循环方式工作/启用。vhost 配置类似于以下内容。

<Proxy balancer://AWSELB>
BalancerMember https://backendEC2_1:443/ retry=60
BalancerMember https://backendEC2_2:443/ retry=60
BalancerMember https://backendEC2_3:443/ retry=60
BalancerMember https://backendEC2_4:443/ retry=60
BalancerMember https://backendEC2_5:443/ retry=60
BalancerMember https://backendEC2_6:443/ retry=60
BalancerMember https://backendEC2_7:443/ retry=60
BalancerMember https://backendEC2_8:443/ retry=60
BalancerMember https://backendEC2_9:443/ retry=60
BalancerMember https://backendEC2_10:443/ retry=60    
</Proxy>
ProxyPass / balancer://AWSELB/ forcerecovery=Off timeout=5
ProxyPassReverse / https://backendEC2_1:443/
ProxyPassReverse / https://backendEC2_2:443/
ProxyPassReverse / https://backendEC2_3:443/
ProxyPassReverse / https://backendEC2_4:443/
ProxyPassReverse / https://backendEC2_5:443/
ProxyPassReverse / https://backendEC2_6:443/
ProxyPassReverse / https://backendEC2_7:443/
ProxyPassReverse / https://backendEC2_8:443/
ProxyPassReverse / https://backendEC2_9:443/
ProxyPassReverse / https://backendEC2_10:443/

目前我已经在虚拟工作者中设置了上述参数并使用了重试参数。使用这些设置,请求会被切断,但大多数情况下需要 15 分钟才能提供一个页面。
给定场景的最佳虚拟主机配置是什么?

标签: apachereverse-proxyvhosts

解决方案


以下配置对我有用。

<Proxy balancer://AWSELB>
BalancerMember https://backendEC2_1:443 connectiontimeout=1
BalancerMember https://backendEC2_2:443 connectiontimeout=1
BalancerMember https://backendEC2_3:443 connectiontimeout=1
BalancerMember https://backendEC2_4:443 connectiontimeout=1
BalancerMember https://backendEC2_5:443 connectiontimeout=1
BalancerMember https://backendEC2_6:443 connectiontimeout=1
BalancerMember https://backendEC2_7:443 connectiontimeout=1
BalancerMember https://backendEC2_8:443 connectiontimeout=1
BalancerMember https://backendEC2_9:443 connectiontimeout=1
BalancerMember https://backendEC2_10:443 connectiontimeout=1
</Proxy>

ProxyPass / balancer://AWSELB/
ProxyPassReverse / balancer://AWSELB/

使用connectiontimeout参数,如果在 1 秒内没有与后端建立连接,则选择下一个工作人员,依此类推,直到找到一个健康的工作人员。

请注意,maxattempt、timeout 等设置将具有Apache 2.2 文档中所述的默认值


推荐阅读