博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
haproxy有关session的问题
阅读量:7157 次
发布时间:2019-06-29

本文共 6172 字,大约阅读时间需要 20 分钟。

在实验的时候遇到一个问题就是当我登录网站的时候,然后我再刷新一下,用户的状态就退出了

我现在的框架是这样的,前面有一台haproxy作为反向代理,后面有两台服务器跑的是java应用。后面两台服务器做的是一个负载均衡

现在要解决这个问题就是用haproxy 的session的方法来解决

原文参照

http://bbs.linuxtone.org/thread-9526-1-1.html http://lxsym.blog.51cto.com/1364623/852400
本帖最后由 snifferqq 于 2011-4-6 11:22 编辑haproxy 解决 多主机session共享问题 的三种方法1 session知识储备2 haproxy三种方法保持客户端session一致3 实验环境及结构4 安装配置及管理5 本实验中使用到相同的index.php代码6 联系方法及扩展阅读感谢 不就是要我命 QQ 47034839 提供测试主机 1 session知识储备Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。服务器也通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。php.ini 里几个session相关值的 其它的值请参考《PHP与Mysql5程序设计》session.use_cookies = 1  #表示 服务端和客户端交互session是通过cookie的方式 默认值session.name = 9ai9     #默认值是PHPSESSID 我这里改成9ai9是为了和默认值区别session.cache_limiter = nocache #此设置确保对每个请求,在可能提供缓存的版本前,先请求发送到最初的服务器。这个值联系到下文中 cookie识别中的相关参数2 haproxy三种方法保持客户端session一致  2.1 用户IP 识别   haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类似于nginx 的IP hash 指令)配置指令        balance source实例访问http://sourceip.9ai9.net:8080  2.2 cookie 识别  haproxy 将WEB服务端发送给客户端的cookie中插入(或添加加前缀)haproxy定义的后端的服务器COOKIE ID。配置指令例举  cookie  SESSION_COOKIE  insert indirect nocachehttp://cookie.9ai9.net:8080用firebug可以观察到用户的请求头的cookie里 有类似" Cookie 9ai9=0bc588656ca05ecf7588c65f9be214f5; SESSION_COOKIE=12" SESSION_COOKIE=12就是haproxy添加的内容  2.3 session 识别  haproxy 将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。配置指令例举 appsession 9ai9 len 64 timeout 5h request-learn 注意 9ai9 这个值替换成 你的php.ini 里session.name的值。实例访问 http://appsession.9ai9.net:8080  2.4 只做简单轮询对比 实例访问 http://nosession.9ai9.net:80803 实验环境及结构CentOS 5.3 64haproxy  113.106.185.245WEB1 REALsrv_70  184.82.239.70WEB2  REALsrv_120 220.162.237.120  4 安装配置及管理useradd -M -s /sbin/nologin haproxywget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.13.tar.gztar zxvf haproxy-1.4.13.tar.gz cd haproxy-1.4.13make TARGET=linux26 PREFIX=/usr/local/haproxy installmkdir /usr/local/haproxy/confvim /usr/local/haproxy/conf/haproxy.cfgglobal        log     127.0.0.1 local0 info         maxconn 4096        user    haproxy        group   haproxy        daemon        nbproc  1        pidfile /var/run/haproxy.piddefaults        mode    http        maxconn         2000        contimeout      5000        clitimeout      30000        srvtimeout      30000        option          httplog        option          redispatch        option          abortonclose        retries         3listen admin_stats        bind 113.106.185.245:443        mode http        log 127.0.0.1 local0 err        stats   uri     /qhappy_stats        stats   realm   9ai9.net\ Qhappy        stats   auth    qhappy:qhappy        stats   refresh   5s listen site_status        bind 113.106.185.245:445        mode http        log  127.0.0.1 local0 err        monitor-uri     /site_statusfrontend  WEB_SITE        bind    0.0.0.0:8080        mode    http        log     global        option  httplog        option  httpclose        option  forwardfor        acl     COOKIE          hdr_reg(host)   -i ^(cookie.9ai9.net)        acl     SOURCE          hdr_reg(host)   -i ^(sourceip.9ai9.net)        acl     APPSESSION      hdr_reg(host)   -i ^(appsession.9ai9.net)        acl     NOSESSION       hdr_reg(host)   -i ^(nosession.9ai9.net)        use_backend COOKIE_srv          if COOKIE        use_backend SOURCE_srv          if SOURCE        use_backend APPSESSION_srv      if APPSESSION        use_backend NOSESSION_srv       if NOSESSION#        default_backend ai_serverbackend COOKIE_srv        mode    http        cookie  SESSION_COOKIE  insert indirect nocache       server REALsrv_70       184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1       server REALsrv_120      220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1backend SOURCE_srv        mode    http       balance source       server REALsrv_70       184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1       server REALsrv_120      220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1backend APPSESSION_srv       mode    http       appsession 9ai9 len 64 timeout 5h request-learn       server REALsrv_70       184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1       server REALsrv_120      220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1backend NOSESSION_srv       mode    http        balance roundrobin       server REALsrv_70       184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1       server REALsrv_120      220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1backend ai_server       mode    http       balance roundrobin       cookie  SERVERID       server REALsrv_70 184.82.239.70:80 cookie 2 check inter 1500 rise 3 fall 3 weight 1       server REALsrv_120 220.162.237.120:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1复制代码haproxy 启动重启等管理脚本cd /etc/init.d/wget http://www.9ai9.net/download/shell/haproxychmod 755 haproxychkconfig --add haproxy使用方法 你懂的/etc/init.d/haproxy {start|stop|status|checkconfig|restart|try-restart|reload|force-reload}5 本实验中使用到相同的index.php代码 如下
".$_SESSION['time'].""."
";echo "访问的服务器地址是"."".$_SERVER['SERVER_ADDR'].""."
";echo "访问的服务器域名是"."".$_SERVER['SERVER_NAME'].""."
";echo "SESSIONNAME是"."".session_name().""."
";echo "SESSIONID是"."".session_id().""."
";?>复制代码6 联系方法及扩展阅读笔者 水煮鱼@溢 微博 http://t.qq.com/cllxy1234 欢迎收听haproxy 官网 http://haproxy.1wt.eu/download/1.4/doc/configuration.txt董旗宇 http://www.9ai9.net/download/art/HAProxy配置使用说明.pdf 刘天斯 http://blog.liuts.com/post/223/linuxtone http://bbs.linuxtone.org/thread-73-1-1.html
View Code
backend                 h5.kongzfinance.com        balance roundrobin        appsession JSESSIONID len 64 timeout 5h request-learn        option      httpchk GET /test HTTP/1.0        server     10.5.25.14:7013 10.5.25.174:7013 check inter 60000 rise 2 fall 5 weight 10        server     10.5.16.42:7013  10.5.16.42:7013 check inter 60000 rise 2 fall 5 weight 10

这里的JSESSIONID 是后端程序的session.name

比如说这里我们打开一个我们的测试网站的链接地址

然后按F12

我们复制一下cookie的内容看一下

 

然后这里们然后重启一下haproxy,然后我们再次访问一下

转载地址:http://epegl.baihongyu.com/

你可能感兴趣的文章
Android View 如何测量
查看>>
CSS选择器以及优先级与匹配原理
查看>>
PostgreSQL security - don't use password method in pg_hba.conf
查看>>
RDS MySql支持online ddl
查看>>
在Hudson中,使用ant自动对安卓项目编译打包apk
查看>>
【JSP开发】利用request获取各种值
查看>>
Vue全家桶web端社区项目
查看>>
多次Push Pop导致的`Can't add self as subview`问题
查看>>
从萌新的角度理解JVM内存管理
查看>>
d3.js 关于力引导图的简单解析
查看>>
pm2实践指南
查看>>
preload和prefetch
查看>>
Sentry 部署踩坑记
查看>>
哦屋~如此完美的富文本编辑器你值得拥有
查看>>
LeetCode 之 JavaScript 解答第226题 —— 翻转二叉树(Invert Binary Tree)
查看>>
去中心化应用的五大制胜关键
查看>>
CSS布局相关
查看>>
ES6新特性
查看>>
2019年5月-一个从业近两年的小白遇到的面试题
查看>>
伪类选择器和伪元素选择器
查看>>