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

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

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

原文参照

  1. http://bbs.linuxtone.org/thread-9526-1-1.html
    http://lxsym.blog.51cto.com/1364623/852400
  1. 本帖最后由 snifferqq -- : 编辑
  2.  
  3. haproxy 解决 多主机session共享问题 的三种方法
  4. session知识储备
  5. haproxy三种方法保持客户端session一致
  6. 实验环境及结构
  7. 安装配置及管理
  8. 本实验中使用到相同的index.php代码
  9. 联系方法及扩展阅读
  10. 感谢 不就是要我命 QQ 提供测试主机
  11.  
  12. session知识储备
  13. Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。
  14. SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。
  15. 服务器也通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。
  16.  
  17. php.ini 里几个session相关值的 其它的值请参考《PHPMysql5程序设计》
  18. session.use_cookies = #表示 服务端和客户端交互session是通过cookie的方式 默认值
  19. session.name = 9ai9 #默认值是PHPSESSID 我这里改成9ai9是为了和默认值区别
  20. session.cache_limiter = nocache #此设置确保对每个请求,在可能提供缓存的版本前,先请求发送到最初的服务器。这个值联系到下文中 cookie识别中的相关参数
  21.  
  22. haproxy三种方法保持客户端session一致
  23. 2.1 用户IP 识别
  24.  
  25. haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类似于nginx IP hash 指令)
  26.  
  27. 配置指令 balance source
  28.  
  29. 实例访问http://sourceip.9ai9.net:8080
  30.  
  31. 2.2 cookie 识别
  32. haproxy WEB服务端发送给客户端的cookie中插入(或添加加前缀)haproxy定义的后端的服务器COOKIE ID
  33.  
  34. 配置指令例举 cookie SESSION_COOKIE insert indirect nocache
  35. http://cookie.9ai9.net:8080
  36.  
  37. firebug可以观察到用户的请求头的cookie 有类似" Cookie 9ai9=0bc588656ca05ecf7588c65f9be214f5; SESSION_COOKIE=12" SESSION_COOKIE=12就是haproxy添加的内容
  38.  
  39. 2.3 session 识别
  40. haproxy 将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。
  41.  
  42. 配置指令例举 appsession 9ai9 len timeout 5h request-learn
  43.  
  44. 注意 9ai9 这个值替换成 你的php.ini session.name的值。
  45.  
  46. 实例访问 http://appsession.9ai9.net:8080
  47.  
  48. 2.4 只做简单轮询对比
  49. 实例访问 http://nosession.9ai9.net:8080
  50. 实验环境及结构
  51. CentOS 5.3
  52. haproxy 113.106.185.245
  53. WEB1 REALsrv_70 184.82.239.70
  54. WEB2 REALsrv_120 220.162.237.120
  55. 安装配置及管理
  56.  
  57. useradd -M -s /sbin/nologin haproxy
  58. wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.13.tar.gz
  59. tar zxvf haproxy-1.4..tar.gz
  60. cd haproxy-1.4.
  61. make TARGET=linux26 PREFIX=/usr/local/haproxy install
  62. mkdir /usr/local/haproxy/conf
  63. vim /usr/local/haproxy/conf/haproxy.cfg
  64. global
  65. log 127.0.0.1 local0 info
  66. maxconn
  67. user haproxy
  68. group haproxy
  69. daemon
  70. nbproc
  71. pidfile /var/run/haproxy.pid
  72. defaults
  73. mode http
  74. maxconn
  75. contimeout
  76. clitimeout
  77. srvtimeout
  78. option httplog
  79. option redispatch
  80. option abortonclose
  81. retries
  82. listen admin_stats
  83. bind 113.106.185.245:
  84. mode http
  85. log 127.0.0.1 local0 err
  86. stats uri /qhappy_stats
  87. stats realm 9ai9.net\ Qhappy
  88. stats auth qhappy:qhappy
  89. stats refresh 5s
  90. listen site_status
  91. bind 113.106.185.245:
  92. mode http
  93. log 127.0.0.1 local0 err
  94. monitor-uri /site_status
  95. frontend WEB_SITE
  96. bind 0.0.0.0:
  97. mode http
  98. log global
  99. option httplog
  100. option httpclose
  101. option forwardfor
  102. acl COOKIE hdr_reg(host) -i ^(cookie.9ai9.net)
  103. acl SOURCE hdr_reg(host) -i ^(sourceip.9ai9.net)
  104. acl APPSESSION hdr_reg(host) -i ^(appsession.9ai9.net)
  105. acl NOSESSION hdr_reg(host) -i ^(nosession.9ai9.net)
  106. use_backend COOKIE_srv if COOKIE
  107. use_backend SOURCE_srv if SOURCE
  108. use_backend APPSESSION_srv if APPSESSION
  109. use_backend NOSESSION_srv if NOSESSION
  110. # default_backend ai_server
  111. backend COOKIE_srv
  112. mode http
  113. cookie SESSION_COOKIE insert indirect nocache
  114. server REALsrv_70 184.82.239.70: cookie check inter rise fall weight
  115. server REALsrv_120 220.162.237.120: cookie check inter rise fall weight
  116. backend SOURCE_srv
  117. mode http
  118. balance source
  119. server REALsrv_70 184.82.239.70: cookie check inter rise fall weight
  120. server REALsrv_120 220.162.237.120: cookie check inter rise fall weight
  121. backend APPSESSION_srv
  122. mode http
  123. appsession 9ai9 len timeout 5h request-learn
  124. server REALsrv_70 184.82.239.70: cookie check inter rise fall weight
  125. server REALsrv_120 220.162.237.120: cookie check inter rise fall weight
  126.  
  127. backend NOSESSION_srv
  128. mode http
  129. balance roundrobin
  130. server REALsrv_70 184.82.239.70: cookie check inter rise fall weight
  131. server REALsrv_120 220.162.237.120: cookie check inter rise fall weight
  132. backend ai_server
  133. mode http
  134. balance roundrobin
  135. cookie SERVERID
  136. server REALsrv_70 184.82.239.70: cookie check inter rise fall weight
  137. server REALsrv_120 220.162.237.120: cookie check inter rise fall weight
  138. 复制代码
  139. haproxy 启动重启等管理脚本
  140. cd /etc/init.d/
  141. wget http://www.9ai9.net/download/shell/haproxy
  142. chmod haproxy
  143. chkconfig --add haproxy
  144.  
  145. 使用方法 你懂的
  146. /etc/init.d/haproxy {start|stop|status|checkconfig|restart|try-restart|reload|force-reload}
  147.  
  148. 本实验中使用到相同的index.php代码 如下
  149. <?php
  150. session_start();
  151. $_SESSION['time'] =date("Y:m:d:H:s",time());
  152. echo "本次访问时间"."<font color=red>".$_SESSION['time']."</font>"."<br>";
  153. echo "访问的服务器地址是"."<font color=red>".$_SERVER['SERVER_ADDR']."</font>"."<br>";
  154. echo "访问的服务器域名是"."<font color=red>".$_SERVER['SERVER_NAME']."</font>"."<br>";
  155. echo "SESSIONNAME是"."<font color=red>".session_name()."</font>"."<br>";
  156. echo "SESSIONID是"."<font color=red>".session_id()."</font>"."<br>";
  157. ?>
  158. 复制代码
  159. 联系方法及扩展阅读
  160. 笔者 水煮鱼@溢 微博 http://t.qq.com/cllxy1234 欢迎收听
  161. haproxy 官网 http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
  162. 董旗宇 http://www.9ai9.net/download/art/HAProxy配置使用说明.pdf
  163. 刘天斯 http://blog.liuts.com/post/223/
  164. linuxtone http://bbs.linuxtone.org/thread-73-1-1.html
  1. backend h5.kongzfinance.com
  2. balance roundrobin
  3. appsession JSESSIONID len timeout 5h request-learn
  4. option httpchk GET /test HTTP/1.0
  5. server 10.5.25.14: 10.5.25.174: check inter rise fall weight
  6. server 10.5.16.42: 10.5.16.42: check inter rise fall weight

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

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

然后按F12

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

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

haproxy有关session的问题的更多相关文章

  1. haproxy测试

    环境: Clients:N台linux, 使用“ab -k -c 20000...” 并发2w 请求haproxy Haproxy Server: R610 2*8核 2.4G Real Server ...

  2. haproxy 安装与配置

    一. Haproxy 介绍 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.根据官方数据,其最高极限支持10G的并发.HAP ...

  3. 用HAProxy和KeepAlived构建高可用的反向代理系统

    对于访问量较大的网站来说,随着流量的增加单台服务器已经无法处理所有的请求,这时候需要多台服务器对大量的请求进行分流处理,即负载均衡.而如果实现负载均衡,必须在网站的入口部署服务器(不只是一台)对这些请 ...

  4. 【 HAProxy 】学习笔记

    一.haproxy的功能: HAProxy vs LVS        HAProxy支持tcp和http两种代理模式,而lvs仅支持tcp代理模式        HAProxy相比LVS的使用要简单 ...

  5. Haproxy+asp.net +RedisSessionStateProvider 完美实现负载均衡,并且session保持

    .net framework 4.5下测试成功,使用RedisSessionStateProvider 2.2.1保持session数据,通过Haproxy保持会话数据.首先在PM下安装RedisSe ...

  6. haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)

    一.安装HAProxy 1.进入home目录,下载最新haproxy安装包. cd /home wget http://haproxy.1wt.eu/download/1.4/src/haproxy- ...

  7. HAProxy负载均衡保持客户端和服务器Session亲缘性的3种方式

    1 用户IP 识别  haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类似于nginx 的IP hash 指令) 配置指令: balance source 配置实例: backe ...

  8. Haproxy 8种算法+Session共享

    Haproxy有8种负载均衡算法(balance),分别如下: 1.balance roundrobin # 轮询,软负载均衡基本都具备这种算法 2.balance static-rr # 根据权重, ...

  9. Haproxy之负载均衡功能、基于cookie的session持久、haproxy自带的健康页面及其动静分离的实现

    实验前提: 1.本次实验是在Centos 7.4(64bit)系统上完成的.2.实验前确保每台服务器时间同步3.本次实验有3台主机,其中haproxy作为反向代理地址为192.168.31.43,后面 ...

随机推荐

  1. [NPM] Execute npx commands with $npm_ Environment Variables

    We will incorporate npm specific environment variables when executing various npx commands. In our e ...

  2. C#.NET常见问题(FAQ)-Combobox如何设置不可以编辑

    设置它的DropDownStyle为DropDownList即可     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   ...

  3. oracle 之flashback 深入研究。

    oracle 之flashback 深入研究. 今天是2013-08-24,开始进行oracle flashback 内部原理研究,记录一下笔记. SQL> startup ORACLE ins ...

  4. wepy - 使用vsCode编辑器安装插件

    完成后,高亮以及智能补全代码. 1. 首先ctrl+shift+p打开扩展,安装以下三个插件 2. 复制以下文件内容到你的vsCode配置 files.associations { "fil ...

  5. Java从零开始学二十九(大数操作(BigIntger、BigDecimal)

    一.BigInteger 如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作. 不可变的任意精度的整数.所有操作中 ...

  6. 使用Android编写录制视频小程序演示样例

    主要实现录制功能的类:Camera类和MediaRecorder类.功能描写叙述:首先进入视频录制界面,点击录像button进入录像功能界面,点击录制開始录制视频, 点击停止button,将录制的视频 ...

  7. yml 配置文件注入

    配置文件 JavaBean 自动提示 测试

  8. 位图算法 C语言

    #include <stdio.h> void set_bit(void *base, unsigned long n) { unsigned long *m = (unsigned lo ...

  9. 获取每月第一天最后一天 java

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //获取前月的第一天 Calendar cal_1=Ca ...

  10. Ubuntu解压缩zip,tar,tar.gz,tar.bz2

    ZIP zip可能是目前使用得最多的文档压缩格式.它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用.缺点就是支持的压缩率不是很高,而tar.gz和tar. ...