你的位置:首页 > 软件开发 > 操作系统 > 企业级memcached部署(session共享)

企业级memcached部署(session共享)

发布时间:2017-11-07 17:00:20
服务端部署 第一个里程碑:安装依赖关系 Memcache用到了libevent这个库用于Socket的处理。[root@nfs01 ~]# yum install libevent libevent-devel nc -y 第 ...

企业级memcached部署(session共享)

服务端部署

   第一个里程碑:安装依赖关系

      Memcache用到了libevent这个库用于Socket的处理。

[root@nfs01 ~]# yum install libevent libevent-devel nc -y

   第二个里程碑:安装memcache

[root@nfs01 ~]# yum install memcached -y[root@nfs01 ~]# which memcached/usr/bin/memcached

   第三个里程碑:启动memcached服务

[root@nfs01 ~]# memcached -m 16m -p 11211 -d -u root -c 8192[root@nfs01 ~]# lsof -i :11211COMMAND  PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEmemcached 10796 root 26u IPv4 85717  0t0 TCP *:memcache (LISTEN)memcached 10796 root 27u IPv6 85718  0t0 TCP *:memcache (LISTEN)memcached 10796 root 28u IPv4 85721  0t0 UDP *:memcachememcached 10796 root 29u IPv6 85722  0t0 UDP *:memcache[root@nfs01 ~]# netstat -lntup |grep memcatcp  0  0 0.0.0.0:11211  0.0.0.0:*  LISTEN  10796/memcached tcp  0  0 :::11211    :::*   LISTEN  10796/memcached udp  0  0 0.0.0.0:11211  0.0.0.0:*      10796/memcached udp  0  0 :::11211     :::*     10796/memcached 

注:memcached可以同时启动多个实例,端口不一致即可。

[root@nfs01 ~]# memcached -m 16m -p 11212 -d -u root -c 8192

   第四个里程碑:写入开机自启动

echo 'memcached -m 16m -p 11211 -d -u root -c 8192' >>/etc/rc.local

客户端部署web服务器)

   第一个里程碑:安装PHP memcache 扩展插件

命令集如下:

cd /server/toolswget xf memcache-2.2.7.tgzcd memcache-2.2.7/application/php/bin/phpize./configure -enable-memcache --with-php-config=/application/php/bin/php-configmake && make install

完整操作过程:

[root@web01 ~]# cd /server/tools/[root@web01 tools]# wget tools]# tar xf memcache-2.2.7.tgz[root@web01 tools]# cd memcache-2.2.7[root@web01 memcache-2.2.7]# /application/php/bin/phpizeConfiguring for:PHP Api Version:   20121113Zend Module Api No:  20121212Zend Extension Api No: 220121212[root@web01 memcache-2.2.7]# ./configure -enable-memcache --with-php-config=/application/php/bin/php-config[root@web01 memcache-2.2.7]# make && make install

查看是否安装成功

[root@web01 memcache-2.2.7]# ls -l /application/php/lib/php/extensions/no-debug-non-zts-20121212/total 252-rwxr-xr-x 1 root root 258048 Nov 7 10:03 memcache.so

   memcache.so表示插件安装成功。

   第二个里程碑:配置memcache客户端使其生效

[root@web01 memcache-2.2.7]# cd /application/php/lib/[root@web01 lib]# vim php.ini……[root@web01 lib]# tail -2 php.iniextension_dir = "/application/php/lib/php/extensions/no-debug-non-zts-20121212/"extension = memcache.so

   第三个里程碑:检测语法,重启服务

[root@web01 lib]# /application/php/sbin/php-fpm -t[07-Nov-2017 10:20:44] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful

#重启服务 

killall php-fpmkillall php-fpm/application/php/sbin/php-fpm

   浏览器访问phpinfo页面出现memcache信息表示配置成功

企业级memcached部署(session共享) 

   第四个里程碑:编写测试memcache文件

[root@web01 blog]# cat test_memcache.php<?php  $memcache = new Memcache;  $memcache->connect('172.16.1.31', 11211) or die ("Could not connect NFS server");  $memcache->set('key', 'Memcache connect OK');  $get = $memcache->get('key');  echo $get;?>

   测试出现Memcache connect OK 表示连接成功

[root@web01 blog]# /application/php/bin/php test_memcache.php Memcache connect OK

   第五个里程碑:修改php配置(设置session共享)

[root@web01 ~]# vim /application/php/lib/php.ini

原配置

session.save_handler = filessession.save_path = "/tmp"

修改为:

session.save_handler = memcachesession.save_path = "tcp://172.16.1.31:11211"

⚠修改完成之后要重启php服务

killall php-fpmkillall php-fpm/application/php/sbin/php-fpm

修改之前phpinfo信息

企业级memcached部署(session共享)

修改之后phpinfo信息

 企业级memcached部署(session共享)

到此企业级memcache(session共享)部署完毕

1.1.1 Memcached在集群中session共享存储的优缺点

优点:

    1)读写速度上会比普通文件files速度快很多。

     2)可以解决多个服务器共用session的难题。

缺点:

     1)session数据都保存在memory中,持久化方面有所欠缺,但对session数据来说不是问题。

     2)一般是单台,如果部署多台,多台之间数据无法同步。通过hash算法分配依然有session丢失的问题。

替代方案:

     1)可以用其他的持久化系统存储session,例如redis,ttserver来替代memcached.

     2)高性能并发场景,cookies效率比session要好很多,因此,大网站都会用cookies解决会话共享的问题.

     3)一些不好的方法:lvs-p,nginx  ip_hash,不推荐使用.

 DedeCMS使用memcache问题

问题: 上述文件进行修改后,DedeCMS发现无法访问后台 修改文件一:

[root@web01 include]# pwd/application/nginx/html/www/include[root@web01 include]# vim common.inc.php135 //Session保存路径136 $enkey = substr(md5(substr($cfg_cookie_encode,0,5)),0,10);137 //$sessSavePath = DEDEDATA."/sessions_{$enkey}";138 $sessSavePath = "tcp://172.16.1.31:11211";139 if ( !is_dir($sessSavePath) ) mkdir($sessSavePath);

   修改文件二:

[root@web01 include]# vim vdimgck.php24 $enkey = substr(md5(substr($cfg_cookie_encode,0,5)),0,10);25 //$sessSavePath = DEDEDATA."/sessions_{$enkey}";26 $sessSavePath = "tcp://172.16.1.31:11211";27 if ( !is_dir($sessSavePath) ) mkdir($sessSavePath);

   让DedeCMS直接使用memcache的共享.解决问题.

特别感谢:元芳

原标题:企业级memcached部署(session共享)

关键词:session

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录