nginx负载均衡会话保持

  • 什么是会话保持?
  • 实现会话保持有哪些方法?
  • 推荐
  • 不推荐
  • nginx+php实现redis 会话保持


什么是会话保持?

会话保持就是固定用户的请求节点。 因为负载均衡的调度机制是轮询调度,所以会导致请求分散在不同节点,如果用户通过A请求,那么下次可能是B,这样会导致用户失去上一次请求的记录,重新建立请求。 这种称之为会话中断,那么要解决问题,就需要会话保持。

实现会话保持有哪些方法?

推荐

  1. cookie植入来解决 会话中断的问题,就给来访的用户标记一个cookie字符串,鉴定身份,后续请求根据cookie来判断 往哪个节点分配;Haproxy中有这种算法
  2. 会话共享,缓存会话到内存数据库。使用redis,memcached实现。

不推荐

  1. 粘性会话=ip_hash 会造成某一节点压力过大,负载不均衡,不推荐。
  2. 会话复制,每次会话发生变化就像会话同步到其他服务器,保证会话不中断。不推荐
  3. 会话持久化,就是会话存储在数据库中,存在数据库占用大量资源,还要定时清理。不推荐

nginx+php实现redis 会话保持

  1. 在客户端下载phpmyadmin(php实现redis的工具) phpmyadmin方网站
  2. 解压到指定目录后建议为phpmyadmin创建软连接,这样版本更替可以直接替换。
  3. 修改文件名修改连接本机redis的host地址。
cp cp /code/phpmyadmin/config.sample.inc.php /code/phpmyadmin/config.inc.php
vim /code/phpmyadmin/config.inc.php

将host改为redis的本地ip地址

redis中存放session redis 会话保持_redis中存放session

  1. 确认节点服务内 该目录的用户身份
ll -d /var/lib/php/session/

5.在服务端下载redis,并修改配置文件

  1. yum install epel-release (如果没有则先添加仓库,如果有则从第二步开始执行。)
  2. yum install redis -y
  3. vim /etc/resdis.conf 修改监听==(listen)==地址,修改为 本机的本地ip,也可以在后面添加。
  4. 加入开机自启。
  5. 启动redis
  6. 查看运行端口 netstat -lntp
  7. 客户端配置php连接redis

vim/etc/php.d/redis.ini 复制下图的两行到 vim/etc/php.ini

redis中存放session redis 会话保持_devops_02

vim/etc/php.ini

redis中存放session redis 会话保持_负载均衡_03

  1. vim /etc/php-fpm.d/www.conf 翻到最下面
  2. 有几台客户端就要配置几台相同的配置。
  3. 在redis服务器连接 连接 redis服务
redis-cli  进入redis
keys * 查看会话缓存