如何加载平衡php应用程序?

时间:2011-02-23 00:08:06

标签: php linux

我正在寻找有关如何平衡php应用程序的指南,建议或示例。我的设置是Ubuntu 10.04和PHP 5.3。我之前从未加载过平衡的服务器,我正在寻找所提供的任何帮助。

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

2 个答案:

答案 0 :(得分:15)

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

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

例如,如果这是现有应用程序的问题,您可以通过在Load Balancer上设置关联来解决此问题,这意味着来自特定用户的所有请求都将由同一服务器提供。显然,这种方法的缺点是使您的应用程序的可扩展性降低,因为一台服务器可以获得比另一台服务器更多的处理能力。

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

希望它有所帮助!

答案 1 :(得分:1)

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

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

我会在前端服务器上放置类似nginx的东西,并将其用于负载平衡。在这之后你可以拥有两个Web服务器甚至使用nginx来提供静态内容。

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

我设计了一些接收速度超过1,000 / imp / sec的网络并开始使用它进行网络设计。在流量增加之后,我通常只是扩展基础设施,从那里添加更多的网络服务器和更多的只读数据库,并用一对F5交换nginx。