• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

【Linux运维架构】LNMP企业架构之使用redis实现session共享

Linux架构 lixian 4年前 (2020-03-05) 1188次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、负载均衡会话保持

当用户访问页面登录后,会在服务器上生成一个session文件,并且返回给浏览器一个session_id内容的cookie,cookie会存在浏览器中,下一次访问cookie会携带session_id来到服务器验证,没有变化则说明是登录状态,不需要重新登录。
在搭建phpmyadmin配置负载均衡的时候,会出现cookie被占用的情况,那是因为session不在一个文件。下面来说说解决方法。
【Linux运维架构】LNMP企业架构之使用redis实现session共享

1.seesion共享的方法

1.把seesion文件保存在本地的nfs挂载目录
2.通过程序将seesion写入数据库
3.通过程序将seesion存入redis

2.搭建phpmyadmin

这里搭建phpmyadmin的过程就不多说了,并且两个web服务器配置要一模一样。
这里要注意以下几个地方:

1)配置连接数据库代码,搭建完phpmyadmin要配置数据库为远程的数据库(不能在本地,因为我们要多台服务器共享)

[root@web01 code]# cd phpmyadmin/
[root@web01 phpmyadmin]# cp config.sample.inc.php config.inc.php
[root@web01 phpmyadmin]# vim config.inc.php
$cfg['Servers'][$i]['host'] = '172.16.1.52';

注意:远程数据库要授权

MariaDB [(none)]> grant all on *.* to root@'172.16.1.%' identified by '123456';

2.给session文件授权

[root@web01 conf.d]# chown -R www.www /var/lib/php/session

二、使用redis实现session共享

1.安装redis

[root@db01 ~]# yum install -y redis

2.配置redis

[root@db01 ~]# vim /etc/redis.conf
bind 127.0.0.1 172.16.1.51

3.启动redis

[root@db01 ~]# systemctl start redis

4.配置php服务将session存到redis

[root@web01 conf.d]# vim /etc/php.ini
#原内容 session.save_handler = files
需要改为:session.save_handler = redis
#原内容 ;session.save_path = "/tmp"
需要改为:session.save_path = "tcp://172.16.1.51:6379"
[root@web01 conf.d]# vim /etc/php-fpm.d/www.conf
#注释原内容 
;php_value[session.save_handler] = files
;php_value[session.save_path]    = /var/lib/php/session

5.同步配置至web02

因为两台web服务器要一模一样所以要scp推过去(最好不要再配置一遍,防止出错)

[root@web01 conf.d]# scp /etc/php.ini 172.16.1.8:/etc/
root@172.16.1.8's password: 
php.ini                                                                                              100%   61KB   1.2MB/s   00:00    
[root@web01 conf.d]# scp /etc/php-fpm.d/www.conf 172.16.1.8:/etc/php-fpm.d/
root@172.16.1.8's password: 
www.conf                                                                                             100%   18KB   1.1MB/s   00:00    
[root@web01 conf.d]# 

6.重启php

[root@web01 conf.d]# systemctl restart php-fpm
[root@web02 conf.d]# systemctl restart php-fpm

7.查看redis里面的session

[root@db01 ~]# redis-cli 
127.0.0.1:6379> 
127.0.0.1:6379> keys *
1) "PHPREDIS_SESSION:1c222f693e1ab3ae2b9a688f00a40531"
127.0.0.1:6379> 

本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:【Linux运维架构】LNMP企业架构之使用redis实现session共享
喜欢 (0)

您必须 登录 才能发表评论!