大规模网站sesson会话保持思路及实践配置
1.需求:
请教个问题:
我用lvs的rr模式,(考虑过 ipvsadm -p,但是这样就失去了负载均衡的意义感觉),后端有10台web,用一台memcached专门用于存储session文件,但是现在问题是,客户端请求第一次被轮训到 web A服务器,A可以获取到本次回话的session ID,从而可以从memcached里通过sessionID获取到这次回话的session ID,而第二次请求轮训到B服务器,因为第一次请求没经过web B,他不知道session ID啊,所以他从memcached中获取不到session ID。这就是现在遇到的问题。做了基于cookie的sessionID,但是考虑到客户端会禁用cookie,所以又难办了。 有啥办法呢?
谁能帮忙解答下.
2.解决方案:
把所有应用服务器sesson会话统一放到memcached里,web读取都读共享memcached,就保持一致了。php程序,php.ini里配,当然了,lvs -p,nginx ip_hash等等也是部分网友实现的思路。
企业集群共享会话实现架构图如下:

b.门户网站方案:

可以直接用memcached来作PHP的session.save_handler解决sesson共享问题 . 安装memcached服务端软件
略,见老男孩培训相关视频教程或谷歌搜下安装。
注意:memcached用libevent来作事件驱动,所以要先安装libevent。 . 安装memcache客户端件
略,见老男孩培训相关视频教程或谷歌搜下安装。 . 真正配置的开始
修改配置文件,在php.ini中全局设置: web集群session共享存储设置:
默认php.ini中session的类型和配置路径:
#session.save_handler = files
#session.save_path = "/tmp"
修改成如下配置:
session.save_handler = memcache
session.save_path = "tcp://10.0.0.18:11211"
提示:
)10.0.0.18: 为memcached数据库缓存的IP及端口。
)上述适合LNMP,LAMP环境。
)memcached服务器也可以是多台通过hash调度。 、用memcached来存储session特点:
优点:
)读写速度上会比普通files时快很多。
)可以解决多个服务器共用session的难题。
缺点:
)session数据都保存在memory中,持久化方面有所欠缺,但对session数据来说不是问题。
)单点,部署多台,也无法数据同步。通过hash算法分配依然有sesson丢失的问题。 、大规模企业解决思路:
)可以用其他的持久化系统存储sessons,例如:redis,ttserver,替代memcached。
)高性能高并发场景,cookies效率比session要好很多,因此,大网站都会用cookies解决会话共享问题。
)有初级运维网友通过牺牲LB的负载均衡的策略实现,例如:lvs -p,nginx ip_hash等,这些不是好的方法。
大规模网站sesson会话保持思路及实践配置的更多相关文章
- 腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践
1.概述 本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征.差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebR ...
- ELK 性能(4) — 大规模 Elasticsearch 集群性能的最佳实践
ELK 性能(4) - 大规模 Elasticsearch 集群性能的最佳实践 介绍 集群规模 集群数:6 整体集群规模: 300 Elasticsearch 实例 141 物理服务器 4200 CP ...
- vivo大规模 Kubernetes 集群自动化运维实践
作者:vivo 互联网服务器团队-Zhang Rong 一.背景 随着vivo业务迁移到K8s的增长,我们需要将K8s部署到多个数据中心.如何高效.可靠的在数据中心管理多个大规模的K8s集群是我们面临 ...
- PHP网站在Linux服务器上面的安全配置
本文详细总结了PHP网站在Linux服务器上面的安全配置,包含PHP安全.mysql数据库安全.web服务器安全.木马查杀和防范等,很好很强大很安全. PHP安全配置 1. 确保运行php的用户为一般 ...
- IOS屏幕旋转思路和实践
这段时间同事在做一个直播项目,项目有个需求:一个界面需要手动设置屏幕的方向,设置好之后方向不能变化.完成这个需求花了特别大的精力,归因是网上关于屏幕旋转的知识比较凌乱,解决问题花费不少时间,最后决定把 ...
- 京东前端:PhantomJS 和NodeJS在网站前端监控平台的最佳实践
1. 为什么需要一个前端监控系统 通常在一个大型的 Web 项目中有很多监控系统,比如后端的服务 API 监控,接口存活.调用.延迟等监控,这些一般都用来监控后台接口数据层面的信息.而且对于大型网站系 ...
- laravel开发大型电商网站之异常设计思路分析
令人讨厌的异常 提起异常,大家都很反感,当信心满满的写完一段代码,刷新页面发现上面写着大大的 Exception 是最心烦的时候了.模块给领导演示的时候,如果报了异常,也是最让人崩溃的时候了. 在一般 ...
- iframe截取网站部分内容实现思路及代码
使用iframe可以截取网站的部分内容,主要配合width.height.overflow等属性来实现的,具体示例如下,需要的朋友不要错过. <div style="width:630 ...
- 【安装Ecshop2.7.2网站(LAMP环境)】--实践
LAMP : Linux + Apache + Mysql + PHPEcshop2.7.2 注意:在输入命令过程中,学会用tab键补全命令,不要对着照抄,很容易出错. 前置:A:先设置虚拟机中的CD ...
随机推荐
- axis client error Bad envelope tag: definitions
http://blog.csdn.net/lifuxiangcaohui/article/details/8090503 ——————————————————————————————————————— ...
- 什么是服务端渲染、客户端渲染、SPA、预渲染,看完这一篇就够了
服务端渲染(SSR) 简述: 又称为后端渲染,服务器端在返回html之前,在html特定的区域特定的符号里用数据填充,再给客户端,客户端只负责解析HTML. 鼠标右击点击查看源码时,页 ...
- gulp配置安装使用
安装 $ npm install gulp -g //全局安装gulp,让你可存取gulp的CLI //接着需要在本地端的专案进行安装,cd到专案根目录,执行 $ npm install gulp - ...
- 解决App can’t be opened because it is from an unidentified developer
关闭设置 打开终端 输入sudo spctl --master-disable
- map用法小例子
一. Map< Key , Value > m_Eg; 一般赋值表示成: TypeElem value; m_Eg[key] = value; 或 m_Eg.insert(make_ ...
- IoC是一个很大的概念,可以用不同的方式实现。
IoC是一个很大的概念,可以用不同的方式实现.其主要形式有两种: ◇ 依赖查找:容器提供回调接口和上下文条件给组件.EJB和Apache Avalon 都使用这种方式.这样一来,组件就必须使用容器提供 ...
- (转)sqlite3生成lib遇到的问题
今天想用一用sqlite,但是下载后发现只有DLL,没有LIB,只能自己生成了.在H:/Program Files/Microsoft Visual Studio 8/VC/bin里面有个lib.ex ...
- python不同package下相互调用
路径如: /path/dir1/a.py /path/dir2/b.py 调用举例如: 在/path/dir2/b.py中调用 a模块 import sys sys.path.append(" ...
- Linux(Ubuntu)下搭建ASP.NET Core环境
今天来学习一下ASP.NET Core 运行在Ubuntu中.无需安装mono . 环境 Ubuntu 14.04.4 LTS 服务器版 全新安装系统. 下载地址:http://mirrors.neu ...
- ADO连接数据库【msado15.dll】
Microsoft ActiveX Data Objects (ADO) 注册表查看ADO版本:HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess下有Ve ...