Nginx-负载均衡-phpMyAdmin&redis会话共享【实践】

Nginx-学习目录

1、会话共享基础

1.1、什么是会话保持

当用户登陆一个网站服务器,网站服务器会将用户的登陆信息存储下来(存储下来的内容叫Session ) ,以保证我们能够一直处于"登陆在线"状态。

1.2、为什么需要会话保持

由于我们使用的是负载均衡轮询机制,会导致用户请求分散在不同的节点,从而造成会话无法保持。
假设用户A,通过负载均衡登陆了网站,此时会话信息存储在A节点,那么当它一刷新,负载均衡会将请求分发给B节点,那么B节点没有用户A的登陆信息,就会提示用户A登陆,当A用户点击登陆时又会将请求分发给C节点,从而造成用户A无法实现会话保持。

1.3、 如何实现会话保持

1、粘性session   ︰指Ngnix每次都将同一用户的所有请求转发至同一台服务器上,及Nginx的ip_hash。
2、session复制   :每次session发生变化,就广播给集群中的服务器,使所有的服务器上的session相同。
3、session共享   :缓存session至内存数据库中,使用redis,memcached实现。
4、session持久化 :将session存储至数据库中,像操作数据一样操作session。

2、部署phpMyAdmin

2.1、部署节点

web01 192.168.10.5
web02 192.168.10.7

2.2、部署教程

2.3、确认web01和web02能正常访问phpMyAdmin

2.4、此时由于会话没有共享,要分别登陆各自的 

3、Nginx-配置负载均衡

3.1、配置nginx

cat >/etc/nginx/conf.d/phpadmin.cyc.com.conf<<'EOF'
upstream phpadmin {
  server 192.168.10.5:80;
  server 192.168.10.7:80;
}
server{
  listen 80;
  server_name phpadmin.cyc.com;
  location / {
    proxy_pass http://phpadmin;
    include proxy_params;
  }
}
EOF

# 需要配置会话共享,不然会导致登陆成功,又要登陆一次

4、安装redis

4.1、安装

yum install redis -y

4.2、修改配置

sed -i '/^bind/c bind 0.0.0.0' /etc/redis.conf

4.3、启动redis

systemctl enable redis
systemctl start redis

5、PHP配置

主要修改php web01 \ web02

5.1、php安装redis插件

5.2、修改会话共享至redis

php.ini
]# vi /usr/local/php/etc/php.ini session.save_handler = redis session.save_path = "tcp://192.168.10.8:6379" # 如果redis设置密码配置方法 # session.save_path = "tcp://192.168.10.8:6379?auth=password"
php
-fpm 如果有配置的话,就注释掉即可 ]# vi /usr/local/php/etc/php-fpm.d/www.conf ;session.save_handler = file ;session.save_path = "/tmp"

5.3、重启php-fpm

systemctl restart php-fpm

6、测试集群会话共享

6.1、登陆phpMyAdmin

6.2、查询redis数据

]# redis-cli 
127.0.0.1:6379> KEYS *
1) "PHPREDIS_SESSION:b4bc0698t844sb6d8g7kh7ld9j"

 

6.3、小结

Cookie的值与redis的值一致,说明会话已经共享成功

 

posted @ 2023-05-01 17:37  小粉优化大师  阅读(155)  评论(0编辑  收藏  举报