PHP共享SESSION之NFS篇
admin 发布于:2014-1-9 15:50 分类:系统架构 有 2295 人浏览,获得评论 0 条 标签: nfs session
1.环境3台机器 192.168.1.10(负载均衡机器) 192.168.1.11(NFS服务器) 192.168.1.20(WEB服务器1) 192.168.1.30(WEB服务器2) 2. 负载均衡机器配置 http { upstream test{ server 192.168.1.20:80 weight=2; server 192.168.1.30:80; server 192.168.1.50:80 backup; } location / { proxy_pass http://test; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 3. NFS服务器配置 vi /etc/exports /var/www/session/ 192.168.1.*(rw,no_root_squash) //设置共享目录 4. 配置WEB1服务器 4.1 挂载NFS目录 mount -t nfs 192.168.1.11:/var/www/session/ /mnt/session/ 4.2 编写session测试程序。(Session赋值) vi /var/www/html/session.php <?php session_start(); //开始记录SESSION。 session_save_path('/mnt/session/'); //设置SESSION存储路径为NFS方式 echo "SessionID=".session_id()."<br>"; //输出SessionID $_SESSION['myip']='192.168.1.20'; //设置Sesssion值 var_dump($_SESSION); //输出Sesssion值 ?> 5. 配置WEB2服务器 5.1 挂载NFS目录 mount -t nfs 192.168.1.11:/var/www/session/ /mnt/session/ 5.2 编写session测试程序。(仅仅用来读数据) vi /var/www/html/session.php <?php session_start(); //开始记录SESSION。 session_save_path('/mnt/session/'); //设置SESSION存储路径为NFS方式 echo "SessionID=".session_id()."<br>"; //输出SessionID var_dump($_SESSION); //输出Sesssion值 ?> 6. 注意权限问题(nginx可写可读) chown -R nginx:nginx /mnt/session/ chmod 0777 -R /mnt/session/ 7. 测试成果. 7.1 不共享SESSION方案 在测试代码中 //session_save_path('/mnt/session/'); 表示不共享SESSION。 测试结果: WEB1服务器结果:SessionID=cb3cud0jv5m2949ljapib2sgo3 array(1) { ["myip"]=> string(12) "192.168.1.20" } WEB2服务器结果:SessionID=cb3cud0jv5m2949ljapib2sgo3 array(1) {} 7.2 共享SESSION方案 session_save_path('/mnt/session/'); 表示共享SESSION,把两个服务器的SESSION都激励在NFS服务器上。 测试结果: WEB1服务器结果:SessionID=cb3cud0jv5m2949ljapib2sgo3 array(1) { ["myip"]=> string(12) "192.168.1.20" } WEB2服务器结果:SessionID=cb3cud0jv5m2949ljapib2sgo3 array(1) { ["myip"]=> string(12) "192.168.1.20" } 7.3 测试总结: 采用方案2,即可实现集群共享SESSION。