如何水平扩展php应用服务器?
我使用 lighttpd 作为 php 应用程序服务器的网络服务器。平均。该服务器上的负载约为 2-3。 MySQL 数据库被分离到另一台服务器(负载约为 0.4)。如何扩展 php 应用程序服务器?
谢谢。
I'm using lighttpd as webserver for php application server. The avg. load on this server is about 2-3. MySQL database is separated to another server (it's load ~0.4). How could I scale php application server?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
简而言之,一般来说,解决方案是:
负载均衡服务器可以是一些专门的硬件;或使用 Apache 的反向代理(参见
mod_proxy_balancer< /code>
例如),nginx (参见 例如使用 Nginx 进行负载平衡),varnish,...
当使用多个 PHP 服务器而不是 PHP 服务器时,您通常会遇到的最重要的问题与文件系统有关:对于多个服务器,每个服务器都有自己的磁盘和文件系统。
例如,如果用户在服务器 1 上随机平衡一个页面,在服务器 2 上随机平衡另一个页面,则不能使用基于文件的会话:会话将在服务器 1 上创建,但稍后在服务器 2 上找不到。
在这种特定情况下,您必须使用另一种机制来存储会话 - 例如,将它们存储在数据库或 memcached 中。
与图像相同的事情(例如,由用户上传):您必须:
在评论后编辑:对于部署,使用多台服务器,我通常会按照只有一台服务器的方式进行部署。
有关我经常使用的流程类型的更多信息,您可以查看我不久前对此问题给出的答案:无需任何停机即可更新网络应用。
这里给出的解释是针对一台服务器的,但要在多台服务器上执行相同的操作,您可以:
(我已经为一个应用程序使用多达 7 台服务器完成了此操作,并且从未遇到任何问题)
In a few words, a solution, generally speaking, is to :
The load-balancing server can be some specialized hardware ; or a reverse-proxy, using Apache (see
mod_proxy_balancer
for example), nginx (see Load Balancing with Nginx, for example), varnish, ...The most important problems you'll generally face when using several PHP servers instead of ones are related to the filesystem : with several servers, each server has its own disks and filesystem.
For example, if a user is randomly balanced on server 1 for one page, and server 2 for another page, you cannot use file-based sessions : the session will be created on server 1, but will not be found on server 2, later.
In this specific case, you'll have to use another mecanism to store sessions -- store them in a database, or memcached, for example.
Same things with images (uploaded by users, for example) : you'll have to either :
Edit after the comment : For the deployment, with several servers, I generally do exactly as I would with only one server.
For more informations on the kind of process I often use, you can take a look at the answer I gave a while back on this question : Updating a web app without any downtime.
The explanation given there is for one server, but to do the same thing on several servers, you can :
(I've done this with up to 7 servers, for one application, and never had any problem)