对于 Apache/PHP 环境来说,最佳的可扩展架构是什么?我想使用单个 Apache 实例并将请求卸载到 N 个 Web 应用程序 (PHP) 服务器;这通常如何实现?
答案1
我正在使用 fastcgi 和 php-fpm,这样您可以在不同的机器上拥有多个 php-fpm 守护程序。
请记住,php-fpm 需要访问您的文档根目录,因此在使用多台机器时需要某种共享存储。
答案2
这个问题有多种解决方案,但如果你已经熟悉 Apache,那么最简单的解决方案就是确保在你的 Apache 构建上启用了 mod_proxy_http 和 mod_proxy_balancer:
$ [...]/httpd -t -D DUMP_MODULES |grep proxy
然后参考mod_proxy和mod_proxy_balancer文档,但你可能想要做这样的事情:
ProxyRequests Off
<Proxy balancer://myphpapp>
BalancerMember http://server1.backend.php:8000
BalancerMember http://server2.backend.php:8000
</Proxy>
ProxyPass / balancer://myphpapp/
ProxyPassReverse / balancer://myphpapp/
(ProxyRequests Off
看起来很奇怪,但这是关闭正向代理,因为此设置将是反向代理。如果您使用 SSL,您可能还需要添加SSLProxyEngine On
以保持流程畅通。)
当然,这只是第一步。它将在您定义的平衡器集成员之间循环请求。如果您想要粘性会话、负载比率、基于用户代理、cookie 或 IP 地址的过滤等,请查看链接的文档,当然,请发布更多问题。