heshao2005 发表于 2018-12-25 09:35:38

Memcached session共享案例

案例环境:
背景:由于php-fpm运行在不同的服务器上,然而默认的php的session数据是在各个服务器上分别存放的。如果在某一次php请求过后,nginx将php请求发送到一台php-fpm服务器上,就会导致session的丢失。那么接下来就需通过memcached统一存储session来解决这样的问题。
http://s3.运维网.com/wyfs02/M00/72/F3/wKioL1Xw6WChdS0cAAFIHnvGQCM181.jpg
第一步:基础环境搭建
1、完成nginx+php-fpm与mysql分离的基础环境搭建(mysql注意分别授权给web服务器)
2、php扩展memcache
3、Memcached服务端的部署
4、Heartbeat环境的部署(heartheat启动服务时,服务必须在/etc/init.d/下)
5、测试保障能够通过IP地址192.168.1.123能够正常访问


第二步:安装如上的环境搭建后,不共享session,见web1和web2存放在相应的web目录下。测试代码如下
Web1上的测试代码web1.php

测试结果:
http://s3.运维网.com/wyfs02/M00/72/F3/wKioL1Xw6l6ifZ1XAABWsqIR_yA156.jpg
Web2上的测试代码web2.php(测试前,通过关闭web1的heartbeat服务(/etc/init.d/heartbeat stop),让服务切换到web2上)

测试结果:
http://s3.运维网.com/wyfs02/M01/72/F3/wKioL1Xw6mfh6rRCAABvmnV99h0691.jpg

说明:在web1中,给TEST session赋值为“session value test”,那么web1肯定能够输出其内容,那web2却不能输出,其原因在于,session默认是保存在自己的web服务器上的。基于这样的问题,如下,我们将通过session共享的方式解决这样的问题

第三步:session共享测试

1、在192.168.1.121上启动memcached
   memcached -d -m 100 -l 192.168.1.121 -p 11211 -u root
2、分别的web1和web2上的php.ini(/usr/local/php/lib目录下)文件中,配置如下内容

session.save_handler = “memcache”
session.save_path = “tcp://192.168.1.121:11211”

说明:作用就是通过memcached来处理session,保存路径为tcp://192.168.1.121:11211

3、完成后,重新启动php-fpm服务器
# ps -aux | grep php-fpm
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root      19330.00.5410042768 ?      Ss   06:32   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
# kill -QUIT 1933
# ./php-fpm
# ps -aux | grep php-fpm
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root      14930.00.5410042748 ?      Ss   06:33   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
# kill -QUIT 1493
# ./php-fpm

4、phpinfo中,需包含如下内容
http://s3.运维网.com/wyfs02/M01/72/F6/wKiom1Xw6EawNPNbAABTmtVwFZo243.jpg
5、再测试web1.php和web2.php的结果
Web1:
http://s3.运维网.com/wyfs02/M02/72/F6/wKiom1Xw6F-yp4WEAABOSw1jzCg344.jpg
Web2:
http://s3.运维网.com/wyfs02/M00/72/F6/wKiom1Xw6GeC6Fi3AABQthWmS5s423.jpg
说明:session共享成功
  




页: [1]
查看完整版本: Memcached session共享案例