LAMP因其成熟和诸多扩展,依旧是网站建站的首选,但是基于SELECT模型的Apache在处理并发上有劣势,因此在前端使用并发数更高的Nginx实现负载均衡。
整个网站架构如下:
Mysql集群(10.10.10.101-10.10.10.199)
||
多台Apache服务器(10.10.10.11-10.10.10.99) == Memcache服务器(NFS)(10.10.10.222)
||
Nginx服务器(10.10.10.201)==静态服务器(10.10.11.11-10.10.11.249)
||
用户浏览器
用户访问网站,首先通过Nginx服务器进行负载均衡。其对应后端多台Apache服务器,因为分发的不确定性,登录后的用户分发到其他服务器上则需要重新登录,因为需要将Session进行共享,避免用户再次访问Session丢失的问题,也可以通过NFS文件共享方式将Session文件保存到同一台服务器当中,Apache服务器通过文件共享Session。
一、安装LAMP的Apache、Mysql、PHP。
安装Mysql
yum install mysql mysql-server
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
安装Apache
yum install httpd
chkconfig --levels 235 httpd on
/etc/init.d/httpd start
安装PHP
yum install php
/etc/init.d/httpd restart
到/var/www/html/中新建phpinfo.php
<?php
phpinfo();
?>
访问网址http://10.10.10.11/phpinfo.php查看网站是否正常运行。安装多台Apache服务器一样。
二、安装Nginx
在10.10.10.201上安装Nginx。安装最新的1.7.3版本
wget http://nginx.org/download/nginx-1.7.3.tar.gz gunzip nginx-1.7.3.tar.gz tar xvf nginx-1.7.3.tar ./configure --prefix=/usr/local/nginx make make install /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ps -ef | grep nginx
在ngnix.conf上配置负载均衡upstream apacheServers{ server 10.10.10.11:80; server 10.10.10.12:80; } server { location / { proxy_pass http://apacheServers; #这里的名字和上面的cluster的名字相同 proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
重启Nginx,访问
http://10.10.10.201/phpinfo.php即可访问到两台Apache服务器的phpinfo.php文件
三、安装Memcached。
yum install memcached
yum install php-pecl-memcache
/usr/bin/memcached -p 11211 -m 1024M -u nobody -d
php -m
四、配置php.ini中的Session为memcache方式。
session.save_handler = memcache
session.save_path = "tcp://10.10.10.222:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
测试memcache可用性
在Apache服务器上新建
/var/www/html/memcache.php文件。
<?php
session_start();
if (!isset($_SESSION['session_time']))
{
$_SESSION['session_time'] = time();
}
echo "session_time:".$_SESSION['session_time']."<br />";
echo "now_time:".time()."<br />";
echo "session_id:".session_id()."<br />";
?>
访问
网址http://10.10.10.201/memcache.php
可以查看
session_time是否都是为memcache中的Session,同时可以在不同的服务器上修改不同的标识查看是否为不同的服务器上的。
五、memcache安全配置
因为memcache不进行权限控制,因此需要通过iptables将memcache仅开放个Apache服务器。