前段时间做了一个php负载均衡试验,上网找了好的资料,不过中文资料实在是匮乏,好不容易找到的还存在很多问题,为了下次用到的时候少走弯路,做个笔记,记录一下。
试验中前端为Nginx,Lighttpd下也可以,可以根据需要调整。具体情况如下:
服务器三台,都具有两块网卡,分别为A、B、C,内网IP地址分别是192.168.0.1,192.168.0.2,192.168.0.3。A运行Nginx作为前端,B、C主要分担运算压力。数据库部分不予考虑。系统: CentOS 5.5 64位Nginx:0.6以后的所有版本都适用。PHP: 版本5.2.14,使用同一份编译,分别复制到每台服务器上。网站目录:/www/lcuc/web一、修改fpm配置
默认情况下fpm监听在 127.0.0.1:9000 并且只允许来自本机的连接。为了能让其它机器访问,需要修改 php-fpm.conf中的配置。注意:php 5.3.3已经默认集成了fpm并使用ini文件方式进行配置,请注意区分。<value name="listen_address">192.168.0.2:9000</value>
<value name="allowed_clients">192.168.0.1,192.168.0.2,192.168.0.3</value>
二、同步php文件
fastcgi负载均衡的时候每次执行的php只能是本地的,所以务必保存程序放置的路径,权限等要一致。可以使用自己的方法进行同步,rsync、NFS、samba选择合适自己的行。我使用的是NFS方案,文件集中存储。还可以把session放在NFS上,实现session共享。三、配置nginx
在http段加入,如果机器性能不均衡可以调整weight,数值越大,分配的请求越多。upstream fastcgi { server 192.168.0.1:9000 weight=1;server 192.168.0.2:9000 weight=2;server 192.168.0.3:9000 weight=2;}
location ~ .*\.php$ { fastcgi_pass fastcgi;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /www/lcuc/web$fastcgi_script_name;include fastcgi.conf;}
OK,搞定,重启nginx生效。