首页 » web服务 » haproxy 解决session一致性的三种方法

haproxy 解决session一致性的三种方法

时间:2013-08-12作者:felix.chan分类:web服务评论:0

1、session知识
Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。
服务器也通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。
在后端应用服务器上php.ini 里几个session相关值的,可以进行简单设置
session.use_cookies = 1 #表示 服务端和客户端交互session是通过cookie的方式 默认值
session.name = LXSYM #默认值是PHPSESSID 可以自行定义。比如LXSYM
session.cache_limiter = nocache #此设置确保对每个请求,在可能提供缓存的版本前,先请求发送到最初的服务器。
针对session数据推荐使用共享存储,实现方法很多。比如存于多个memcached中,具体会写博文说明,敬请关注~

2、实现haproxy与客户端session一致的方法有:
2.1 用户IP 识别
haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上。
配置指令 balance source (如: balance uri len 100)

2.2 cookie 识别  
   haproxy 将WEB服务端发送给客户端的cookie中插入(或添加前缀)haproxy定义的后端的服务器COOKIE ID。
 配置指令例举  cookie  SESSION_COOKIE  insert indirect nocache   
 可以使用firebug可以观察到用户的请求头的cookie信息
 
2.3 session 识别  
   haproxy 将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。
 配置指令例举 appsession LXSYM len 64 timeout 5h request-learn 
 注意LXSYM这个值替换成 你的php.ini 里session.name的值。

原创文章,转载请注明: 转载自红防联盟www.rednat.com

本文链接地址: haproxy 解决session一致性的三种方法

|2|right
0 条评论

暂时没有评论!

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>