美文网首页already
Session共享以及memcached的部署

Session共享以及memcached的部署

作者: 郭不戳 | 来源:发表于2022-09-16 08:05 被阅读0次

    Session共享目的

    解决集群主机过多而导致用户重复登陆网站的问题
    在一个集群中,如果网站需要用户输入用户名和密码登陆之后才能继续问,那么当用户登陆其中一台集群主机之后随着继续访问页面,请求可能被代理服务器轮询到另外一台服务器上,那么对于另外一台服务器来说用户并没有登陆,想查看登陆之后的页面还需要再次登陆,这样集群主机越多需要客户重复登陆的次数就越多

    Session与Cookie

    Session 存储在服务器端,保存用户名、登录状态等信息
    Cookies 由服务器下发给客户端,保存在客户端的一个文件,保存的主要内容是sessionID

    环境准备

    百度文库提取压缩包传入到以下三台服务器中进行部署
    链接:https://pan.baidu.com/s/14Zv1eoCKAlOa7yoc4EWHew?pwd=3k3s
    提取码:3k3s

    主机名 IP地址 部署服务
    proxy 192.168.99.5 nginx
    web3 192.168.99.100 lnmp
    web2 192.168.99.200 lnmp

    Session共享

    web1主机:

    yum -y install gcc make pcre-devel openssl-devel
    [root@web1 ~]# tar -xf lnmp_soft.tar.gz
    [root@web1 ~]# cd lnmp_soft/
    tar -xf nginx-1.17.6.tar.gz
    cd  nginx-1.17.6/
    ./configure   //配置
    make   //编译
    make  install   //安装
    yum -y install mariadb mariadb-server mariadb-devel   //安装数据库
    相关软件包
    yum -y install php php-mysql php-fpm   //安装php相关软件包
    systemctl start mariadb
    systemctl start php-fpm
    

    修改配置文件

    [root@web1 nginx]# vim conf/nginx.conf  //修改配置文件,实现动静分离,
    修改65~71行为以下状态
    vim conf/nginx.conf    //修改配置文件,实现动静分离,修改65~71行为以下状态
            location ~ \.php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
            #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi.conf;
            }
    

    配置好lnmp之后

    cd  ~/lnmp_soft/php_scripts/
    tar -xf php-memcached-demo.tar.gz    //释放带登录功能的网页
    cp -r php-memcached-demo/* /usr/local/nginx/html/   //拷贝页面
    

    到nginx中使用火狐浏览器访问http://192.168.99.100/index.php 可以
    看到有登录界面的网页
    web1配置好之后,web2也按照一模一样的过程配置,防火墙都要关闭

    proxy主机配置集群

    upstream web {     //在默认的虚拟主机上面添加集群
            server 192.168.99.100:80;
            server 192.168.99.200:80;
    }
    
    
    location  /  {
         proxy_pass http://web;  //然后在默认的虚拟主机中的location里调用集群
    
    
    sbin/nginx -s reload  //重新加载配置文件
    http://192.168.99.5/index.php  //之后测试效果,不断刷新页面,会看到web1与
    

    web2的登录界面(需要提前在web1与web2的index.php页面进行标记),以便于区分
    客户 Cookies ------ proxy ------ web1 Session
    ------ web2 Session

    目前环境搭建好之后可以按以下步骤测试:
    删除web1与web2的session文件
    rm -rf /var/lib/php/session/*
    删除火狐浏览器的历史记录(主要是cookies文件)
    http://192.168.99.5/index.php //登录2次才能成功,目前登录2次是正常现象!!

    部署memcached

    上述实验由于web1与web2都是在各自的/var/lib/php/session目录中存储session,所以造成客户需要重复登录,为了统一session存储的位置(该存储方式通常被称为session共享),需要安装专门的数据库工具
    memcache 可以利用内存读写数据的数据库服务

    部署流程

    proxy主机

    yum  -y  install  memcached  telnet    //安装软件包
    systemctl  start  memcached   //开启服务
    telnet  127.0.0.1  11211   //连接memcache,进行检测
    

    测试memcached:

    set abc 0 200 3     //创建变量abc(如果abc已经存在就是覆盖),0是不压
    缩数据,数据存储时间200秒,存3个字符,回车之后比如输入xyz就是存储
    这3个字符
    get abc    //获取变量abc
    replace abc 0 200 3   //覆盖abc,此时变量abc必须存在
    delete abc   //删除abc
    add abc 0 200 3  //添加abc变量,如果abc已经存在则会添加失败
    flush_all   //删除所有数据
    quit  //退出
    

    web1,web2主机

    修改session文件的位置

    到web1与web2主机修改存储session文件的位置
    vim  /etc/php-fpm.d/www.conf   //到最后一页
    php_value[session.save_handler] = memcache  //这里改成memcache,表示session
    的存储不在是本地的普通文件,而是去找memcache
    php_value[session.save_path] = tcp://192.168.99.5:11211   //这里的路径修改为
    安装了memcache服务的服务器地址与端口
    
    yum -y install php-pecl-memcache   //安装php与memcached服务关联的软件包
    yum -y install php-pecl-memcache
    

    所有主机关闭防火墙和selinux
    最后清空浏览器的历史记录,再访问http://192.168.99.5/index.php仅仅登录一次即
    可成功

    相关文章

      网友评论

        本文标题:Session共享以及memcached的部署

        本文链接:https://www.haomeiwen.com/subject/esfjortx.html