2011-02-23 82 views
7

我正在寻找指导,建议或如何负载平衡php应用程序的示例。我的设置是Ubuntu 10.04和PHP 5.3。我以前从未加载过均衡的服务器,我正在寻找任何提供的帮助。如何负载平衡一个PHP应用程序?

更新:
这是一个Web应用程序,预计有几百个用户在同一时间使用它。 MySQL将成为数据库。会有会话用于用户,但我听说会话不能通过多个服务器进行。将会有非常频繁的内容更新。会有文件,但我会为这些使用CDN。

+1

也许增加一些上下文,为什么你首先需要这个,你将运行什么样的应用程序和它们做什么(它使用数据库,文件,会话......是否有频繁的内容更新?等等) – 2011-02-23 00:16:21

回答

13

负载均衡Web应用程序与应用程序本身没有多大关系,但更多的是托管和基础架构。不过,在构建应该负载均衡的应用程序时,仍然需要注意一些关键点。这里有一些:

  • 不要使用状态服务器。这意味着您不能使用传统会话对象,因为它存储在本地计算机的内存中,因此一个对象可能在一台服务器上可用,但不在另一台服务器中。不要使用磁盘存储任何内容。与上述相同的原因。您可能会将文件写入服务器1磁盘并尝试读取服务器2中的内容
  • 底线应避免任何与服务器相关的资源。如果你需要使用这样的(状态服务器,磁盘等),你应该存储的共享资源,因此所有负载均衡机访问

如果这是一个现有的应用程序的问题,例如,你可以通过在Load Balancer上设置亲和力来解决此问题,这意味着来自特定用户的所有请求都将由同一台服务器提供服务。很明显,这种方法会让你的应用程序的可伸缩性降低,因为一台服务器可以获得比另一台更高的处理能力。

因此,关于做负载均衡器的软件,我不是一个Linux的家伙,但我看到很多人在讨论Apache作为WebServer和HAProxy作为负载平衡器的应用程序。

希望它有帮助!

1

有PHP类允许您将会话存储在MySQL中。

http://php.net/manual/en/function.session-set-save-handler.php

我会把像nginx的前端服务器上,并使用您的负载均衡。在这之后你可以拥有两台Web服务器,甚至可以使用nginx来为你的静态内容提供服务。

在你的网络服务器后面你会有你的mysql数据库。

我设计了几个网络,收到刚刚超过1000/imp/sec,并开始网络设计。流量增加之后,我通常只是从那里扩展基础架构,添加更多的Web服务器和更多只读数据库,并用一对F5交换nginx。