Centos下Nginx+Apache+Mysql+Memcache实现多负载均衡与Session共享

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服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值