Memcached session共享案例

案例环境:

背景:由于php-fpm运行在不同的服务器上,然而默认的php的session数据是在各个服务器上分别存放的。如果在某一次php请求过后,nginx将php请求发送到一台php-fpm服务器上,就会导致session的丢失。那么接下来就需通过memcached统一存储session来解决这样的问题。

第一步:基础环境搭建

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

<?php

session_start();

$_SESSION[‘TEST‘]=”session value test ”;

echo $_SESSION[‘TEST‘]

?>

测试结果:

Web2上的测试代码web2.php(测试前,通过关闭web1的heartbeat服务(/etc/init.d/heartbeat stop),让服务切换到web2上)

<?php

session_start();

echo $_SESSION[‘TEST‘]

?>

测试结果:

说明:在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]

session.save_handler = “memcache”

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

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

3、完成后,重新启动php-fpm服务器

[[email protected] sbin]# ps -aux | grep php-fpm

Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ

root      1933  0.0  0.5  41004  2768 ?        Ss   06:32   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

[[email protected] sbin]# kill -QUIT 1933

[[email protected] sbin]# ./php-fpm

[[email protected] lib]# ps -aux | grep php-fpm

Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ

root      1493  0.0  0.5  41004  2748 ?        Ss   06:33   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

[[email protected] lib]# kill -QUIT 1493

[[email protected] sbin]# ./php-fpm

4、phpinfo中,需包含如下内容

5、再测试web1.php和web2.php的结果

Web1:

Web2:

说明:session共享成功

时间: 2024-07-31 19:21:36

Memcached session共享案例的相关文章

Nginx + tomcat + Memcached(session共享)

Nginx + tomcat + Memcached(session共享) 实验拓扑 nginx   实现负载 tomcat   实现web功能 memcached 实现会话共享 安装Nginx [[email protected] ~]# yum -y install pcre pcre-devel [[email protected] ~]# tar -zxvf nginx-1.0.5.tar.gz [[email protected] ~]# cd nginx-1.0.5 [[email 

tomcat + memcached session共享session

开发快报: websocket 强制下线功能,玩转websocket技术 ------------------------------------------------------------------------------------------------------------------------- A 代码生成器(开发利器);   增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成 就不用写搬砖的

nginx+tomcat8+memcached实现session 共享

操作环境: iP地址 角色 安装软件 10.43.2.135 nginx方向代理 memcached服务器 nginx   memcached 10.43.2.134 tomcat服务器 2个tomcat(端口分别为8080 8081) 实验中使用的软件如下: 实现思路: 第一步:针对10.43.2.134的操作 1.在10.43.2.134上安装2个tomcat 2.在$CATALINA/webapps/ROOT/下建立测试页面t.jsp 3.分别启动2个tomcat服务 4.打开http:/

nginx+tomcat8+memcached实现session共享具体操作

本次试验用到的软件包的版本如下: 一.针对10.43.2.134的操作 1.安装jdk环境 tar zxf jdk-8u5-linux-x64.tar.gz mkdir /usr/java mv jdk1.8.0_05/ /usr/java/ 编辑/etc/profile 在文档的末尾追加如下5行内容: JAVA_HOME=/usr/java/jdk1.8.0_05 JRE_HOME=/usr/java/jdk1.8.0_05/jre PATH=$PATH:$JAVA_HOME/bin:$JRE

高级运维(五):构建memcached服务、LNMP+memcached、使用Tomcat设置Session、Tomcat实现session共享

一.构建memcached服务 目标: 本案例要求先快速搭建好一台memcached服务器,并对memcached进行简单的添.删.改.查操作: 1> 安装memcached软件,并启动服务d 2> 使用telnet测试memcached服务 3> 对memcached进行增.删.改.查等操作 方案: 使用1台RHEL7虚拟机作为memcached服务器(192.168.4.5). 在RHEL7系统光盘中包含有memcached,因此需要提前配置yum源,即可直接使用yum安装,客户端测

构建memcached服务,Tomcat实现session共享

构建memcached服务 1.1 问题 本案例要求先快速搭建好一台memcached服务器,并对memcached进行简单的添.删.改.查操作: 安装memcached软件,并启动服务 使用telnet测试memcached服务 对memcached进行增.删.改.查等操作 1.2 方案 使用1台RHEL7虚拟机作为memcached服务器(192.168.4.5). 在RHEL7系统光盘中包含有memcached,因此需要提前配置yum源,即可直接使用yum安装,客户端测试时需要提前安装te

memcached原理 部署memcached 、 Session共享

案例1:构建memcached服务案例2:LNMP+memcached案例3:PHP的本地Session信息案例4:PHP实现session共享1 案例1:构建memcached服务1.1 问题 本案例要求先快速搭建好一台memcached服务器,并对memcached进行简单的增.删.改.查操作:安装memcached软件,并启动服务使用telnet测试memcached服务对memcached进行增.删.改.查等操作1.2 方案 使用1台RHEL7虚拟机作为memcached服务器(192.

Tomcat集群环境下session共享方案梳理(1)-通过memcached(MSM)方法实现

对于web应用集群的技术实现而言,最大的难点就是:如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块.要实现这一点, 大体上有两种方式: 一种是把所有Session数据放到一台服务器上或者数据库中,集群中的所有节点通过访问这台Session服务器来获取数据: 另一种就是在集群中的所有节点间进行Session数据的同步拷贝,任何一个节点均保存了所有的Session数据. Tomcat集群session同步方案有以下几种方式: 1)使用tomcat自带的

Memcached实现Session共享

一.memcached安装 1. memcached安装和启动.查看进程 安装扩展源 yum install -y epel-release 安装软件.组件.工具包 yum install -y libevent memcached libmemcached 启动 /etc/init.d/memcached start 进程 ps aux |grep memcached 解释: -d  启动一个守护进程 -p  监听的端口,默认11211 -u  运行memcached用户 -m 内存大小,单位