2010-07-29 41 views
3

这是我从未见过的事情,而且我没有在研究中发现,但我的老板对这个想法很感兴趣。我们正在寻找一些负载平衡选项,并且怀疑是否可以在多个服务器上安装apache和php,由负载均衡器管理,但在一台服务器上拥有所有实际的php代码,并且各种apache服务器指向一个中心代码库?从Apache的单独服务器上的PHP代码?

回答

4

例如NFS挂载当然是可能的,但我不会推荐它。负载平衡的许多优点都会丢失,并且您将重新引入单点故障。在同步代码时,rsync cronjob可以很好地处理自身,或者可以完成部署上的手动rsync。

什么原因你会希望这个中心的代码库?我大约有99%的人确信有一个更好的解决方案,然后一台服务器抛出代码。

+0

甚至从版本控制系统结帐。 NFS并不是网络文件系统考虑的唯一选择。 – 2010-07-29 23:30:51

+0

你说得对,一个NFS共享只是一个例子。 – Wrikken 2010-07-29 23:32:29

0

我相信这是可能的。为了补充Wrikken的回答,我可以想象NFS可能是一个不错的选择。但是,有一些缺点和警告。首先,当Apache尝试访问已经消失的NFS共享文件(连接断开,主机失败等)非常差事情发生。 Apache锁定并继续尝试检索文件。无论出于何种原因,尝试访问共享的进程都不会死机,并且需要重新启动服务器。

如果风这样做,我会建议操作码缓存,如APC。 APC将在本地缓存预处理的php,并消除您的存储的往返行程。只要准备清除每当更新应用程序的操作码缓存/

+0

根据我的经验,APC是一个很好的缓存,但是会检查文件的更新时间,因此在更新文件时不需要清除,如果文件不在那里,也同样会失败。或者我错过了一些APC设置? – Wrikken 2010-07-30 12:02:43

+0

当然,apc.stat默认设置为1,不包含在默认的apc.ini文件中。如果设置为0,APC将不检查更新的php文件的日期,并保留预处理版本,直到操作码缓存被清除。性能增加设置为0是相当巨大的,顺便说一句。 – 2010-07-30 16:45:15

0

PHP有东西下运行充当网络处理器,Apache是​​最流行的。我已经完成跨服务器NFS挂载没有问题。如果NFS停机,网络就会停止运行。但是,跨服务器执行rsync复制文件并不需要很长时间,而且确实是一个更好的主意。

我不知道你的内容是什么样子,但使他们自己的服务器上,你可以单独像JavaScript,CSS静态文件和图像。 lighttpd是一个很好的,轻量级的Web服务器,用于这样的事情。然后你最终得到一个“专用”的PHP服务器。您甚至不需要此设置的负载平衡器。

请记住,PHP中的本地文件系统上存储会话。因此,如果您使用会话,则需要确保用户始终返回到同一台服务器。否则,你需要做一些事情,比如在memcache中存储会话。