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。