zoukankan      html  css  js  c++  java
  • 会话共享

    会话共享

    1.什么是会话保持?

    简单来说就是用户登录百度网站后,然后关闭浏览器,当下次在打开百度时,会发现还是处于登录状态,这个就可以理解为是会话保持功能.

    2.为什么要做会话保持?

    http协议是无状态时,在同一个连接中,两个执行成功的请求之间是没有关系的.这就带来了一个问题,用户没有办法在同一个网站中进行连续的交互,比如在一个电商网站里,用户把某个商品加入到购物车,切换一个页面后再次添加了商品,这两次添加商品的请求之间没有关联,浏览器无法知道用户最终选择了哪些商品.

    3.会话保持实现的原理.

    1)cookie:一般存放在浏览器的Cookies中.主要存放信息(sessionID)

    2)session:一般存放在服务端.主要存放信息有:(sessionID对应的用户名,登录信息等)

    2.基于负载均衡的会话保持 session和cookie

    1.nginx ip_hash
    2.基于服务端的session共享

    1.下载phpmyadmin

    wget https://files.phpmyadmin.net/phpMyAdmin/4.8.5/phpMyAdmin-4.8.5-all-languages.zip
    unzip phpMyAdmin-4.8.4-all-languages.zip	
    	
    [root@web01 code]# cat /etc/nginx/conf.d/php.conf
    server {
    	listen 80;
    	server_name php.oldboy.com;
    	root /code/phpmyadmin;
    	
    	location / {
    		index index.php index.html;
    }
    
    	location ~ .php$ {
    		fastcgi_pass 127.0.0.1:9000;
    		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    		include fastcgi_params;
    	}
    }
    
    [root@web01 phpmyadmin]# cp config.sample.inc.php  config.inc.php
    [root@web01 phpmyadmin]# vim config.inc.php 
    /* Server parameters */
    $cfg['Servers'][$i]['host'] = '172.16.1.51';
    
    [root@web01 code]# chown -R www.www /var/lib/php/	
    
    在web02上部署
    
    scp -rp phpMyAdmin-4.8.4-all-languages 172.16.1.8:/code/
    
    scp -rp /etc/nginx/conf.d/php.conf 172.16.1.8:/etc/nginx/conf.d/
    
    ln -s /code/phpMyAdmin-4.8.4-all-languages/ /code/phpmyadmin
    
    chown -R www.www /var/lib/php/
    
    代理配置如下
    [root@lb01 conf.d]# cat proxy_php.oldboy.com.conf 
    upstream php_pools {
    	server 172.16.1.7:80;
    	server 172.16.1.8:80;
    }
    
    server {
    	listen 80;
    	server_name php.oldboy.com;
    	location / {
    		proxy_pass http://php_pools;
    		include proxy_params;
    	}
    }
    [root@lb01 conf.d]# systemctl restart nginx
    
    解决session共享问题:使用Redis
    lb01 172.16.1.5
    web01 172.16.1.7
    web02 172.16.1.8
    redis 172.16.1.51
    mysql 172.16.1.51
    

    1.在172.16.1.51服务器上安装redis,并启用redis

    yum install redis -y
    
    sed -i 's#^bind.*#bind 172.16.1.51 127.0.0.1#g' /etc/redis.conf
    
    systemctl start redis
    
    systemctl enable redis
    

    2.配置应用服务器,连接redis,将session的信息存储至redis数据库中(7 8) php->redis

    vim /etc/php.ini 
    
    session.save_handler = redis
    session.save_path = "tcp://172.16.1.51:6379"
    
    vim /etc/php-fpm.d/www.conf
    
    ;php_value[session.save_handler] = files
    ;php_value[session.save_path]    = /var/lib/php/session
    
    systemctl restart php-fpm
    
    [root@web01 code]# ll /var/lib/php/session/
    total 8
    -rw------- 1 www www 49 Jun  9 12:02 sess_39f67be9f5e28b0051a4974116abc72b
    -rw------- 1 www www 49 Jun  9 14:08 sess_f177c8cbff71809b00e77bfcc8ab6d49
    
    [root@web01 code]# rm -f /var/lib/php/session/*
    刷新一下网站
    [root@web01 code]# ll /var/lib/php/session/
    total 0
    到redis查看
    
    查看内存数据库信息
    [root@db01 ~]# redis-cli 
    127.0.0.1:6379> keys *
    1) "PHPREDIS_SESSION:2a3b1db62803ee562236be8f1c7e5665"
    127.0.0.1:6379> 
    
  • 相关阅读:
    CODING x 百果园 _ 水果零售龙头迈出 DevOps 体系建设第一步
    Nocalhost 亮相 CD Foundation 国内首届 Meetup,Keith Chan 将出席致辞
    做云原生时代标准化工具,实现高效云上研发工作流
    打造数字化软件工厂 —— 一站式 DevOps 平台全景解读
    WePack —— 助力企业渐进式 DevOps 转型
    CODING Compass —— 打造行云流水般的软件工厂
    Nocalhost —— 让云原生开发回归原始而又简单
    CODING 代码资产安全系列之 —— 构建全链路安全能力,守护代码资产安全
    Nocalhost:云原生开发新体验
    使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller
  • 原文地址:https://www.cnblogs.com/longren/p/11018850.html
Copyright © 2011-2022 走看看