我有一个包含多个模块的应用程序
Web浏览器仅与apache服务器通信,后者将请求路由到这些应用程序(使用虚拟主机和重定向)。
For more clarity, here's a graphic explanation of this distribution
这里是后端的虚拟主机配置
<VirtualHost *:80>
ServerName api.myapp.com
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
我只需要为后端应用程序保持实现HA (仅)HA(即,我无法添加新的apache专用实例进行平衡)。
我不知道该怎么做,我阅读的教程介绍了如何将整个apache实例转换为负载均衡器,但是我只需要将HA置于一个虚拟主机(后端服务)中,以保持软件实例不变现在。
我将不胜感激。
谢谢
致谢
答案 0 :(得分:0)
httpd文档乍一看非常令人困惑,它不会合并概念,例如,虚拟主机与Balancer。但是我仍然从他们的docs中提取了很多信息。
一种基本方法是设置一个平衡器及其成员,然后将所有内容代理给它。
要完成此操作,我们将需要安装一些模块:sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests
必须足够,否则,请检查日志中是否缺少模块或建议。
然后,填补虚拟主机中的空白:
<VirtualHost *:80>
ServerName api.myapp.com
ProxyPreserveHost On
ProxyRequests Off
#Your balanced backends
<Proxy balancer://backend-cluster>
BalancerMember http://localhost:3000
BalancerMember http://localhost:9000
ProxySet lbmethod=byrequests
</Proxy>
#Balancer admin interface for localhost access
<Location /balancer-manager>
SetHandler balancer-manager
Order allow,deny
allow from localhost
</Location>
ProxyPass /balancer-manager !
#Proxying everything to your backends
ProxyPass / balancer://backend-cluster/
</VirtualHost>
Httpd还提供了一些其他算法来平衡您的请求。如您所见,提供的示例与 byrequest 保持平衡(简而言之,成员之间共享请求)。其余的是(我鼓励您阅读文档):
此最小配置必须足以实现最小的HA后端服务。