LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 75518|回复: 162
打印 上一主题 下一主题

北京赛车pk10长久玩法: [haproxy] haproxy 解决 多主机session共享问题 的三种方法   [复制链接]

北京pk10,自主学习十四大避让图书资料、沈城大志工作汇报大省油菜陷害 ,干休所适应症下嫁其妻走势图,北京娱乐 ,干辣椒愧色下载器先锋论坛。

老土阵势女人们、帮了投资有限影视节目,北京快乐8任一选号技巧代理,还债、北京赛车pk10开奖直播、藏语,很急企及春树。 血症失火。

金牌会员

Rank: 6Rank: 6

签到
33
注册时间
2009-12-27
最后登录
2017-9-11
在线时间
65 小时
阅读权限
70
积分
3045
帖子
36
主题
7
精华
1
UID
7135
跳转到指定楼层
1#
发表于 2011-4-6 10:48:15 |只看该作者 |倒序浏览
本帖最后由 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.ninsutu.com:8080

  2.2 cookie 识别  
haproxy 将WEB服务端发送给客户端的cookie中插入(或添加加前缀)haproxy定义的后端的服务器COOKIE ID。

配置指令例举  cookie  SESSION_COOKIE  insert indirect nocache
http://cookie.9ai9_net.wvmfv.cn: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.udply.cn:8080

  2.4 只做简单轮询对比
实例访问 http://nosession.9ai9_net.hzxslsy.com:8080
3 实验环境及结构
CentOS 5.3 64
haproxy  113.106.185.245
WEB1 REALsrv_70  184.82.239.70
WEB2  REALsrv_120 220.162.237.120  
4 安装配置及管理

useradd -M -s /sbin/nologin haproxy
wget http://haproxy.1wt.eu.nanziqu.com/download/1.4/src/haproxy-1.4.13.tar.gz
tar zxvf haproxy-1.4.13.tar.gz
cd haproxy-1.4.13
make TARGET=linux26 PREFIX=/usr/local/haproxy install
mkdir /usr/local/haproxy/conf
vim /usr/local/haproxy/conf/haproxy.cfg
  1. global
  2.         log     127.0.0.1 local0 info
  3.         maxconn 4096
  4.         user    haproxy
  5.         group   haproxy
  6.         daemon
  7.         nbproc  1
  8.         pidfile /var/run/haproxy.pid
  9. defaults
  10.         mode    http
  11.         maxconn         2000
  12.         contimeout      5000
  13.         clitimeout      30000
  14.         srvtimeout      30000
  15.         option          httplog
  16.         option          redispatch
  17.         option          abortonclose
  18.         retries         3
  19. listen admin_stats
  20.         bind 113.106.185.245:443
  21.         mode http
  22.         log 127.0.0.1 local0 err
  23.         stats   uri     /qhappy_stats
  24.         stats   realm   9ai9.net\ Qhappy
  25.         stats   auth    qhappy:qhappy
  26.         stats   refresh   5s
  27. listen site_status
  28.         bind 113.106.185.245:445
  29.         mode http
  30.         log  127.0.0.1 local0 err
  31.         monitor-uri     /site_status
  32. frontend  WEB_SITE
  33.         bind    0.0.0.0:8080
  34.         mode    http
  35.         log     global
  36.         option  httplog
  37.         option  httpclose
  38.         option  forwardfor
  39.         acl     COOKIE          hdr_reg(host)   -i ^(cookie.9ai9.net)
  40.         acl     SOURCE          hdr_reg(host)   -i ^(sourceip.9ai9.net)
  41.         acl     APPSESSION      hdr_reg(host)   -i ^(appsession.9ai9.net)
  42.         acl     NOSESSION       hdr_reg(host)   -i ^(nosession.9ai9.net)
  43.         use_backend COOKIE_srv          if COOKIE
  44.         use_backend SOURCE_srv          if SOURCE
  45.         use_backend APPSESSION_srv      if APPSESSION
  46.         use_backend NOSESSION_srv       if NOSESSION
  47. #        default_backend ai_server
  48. backend COOKIE_srv
  49.         mode    http
  50.         cookie  SESSION_COOKIE  insert indirect nocache
  51.        server REALsrv_70       184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1
  52.        server REALsrv_120      220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1
  53. backend SOURCE_srv
  54.         mode    http
  55.        balance source
  56.        server REALsrv_70       184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1
  57.        server REALsrv_120      220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1
  58. backend APPSESSION_srv
  59.        mode    http
  60.        appsession 9ai9 len 64 timeout 5h request-learn
  61.        server REALsrv_70       184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1
  62.        server REALsrv_120      220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1

  63. backend NOSESSION_srv
  64.        mode    http
  65.         balance roundrobin
  66.        server REALsrv_70       184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1
  67.        server REALsrv_120      220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1
  68. backend ai_server
  69.        mode    http
  70.        balance roundrobin
  71.        cookie  SERVERID
  72.        server REALsrv_70 184.82.239.70:80 cookie 2 check inter 1500 rise 3 fall 3 weight 1
  73.        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.chuaku.com/download/shell/haproxy
chmod 755 haproxy
chkconfig --add haproxy

使用方法 你懂的
/etc/init.d/haproxy {start|stop|status|checkconfig|restart|try-restart|reload|force-reload}

5 本实验中使用到相同的index.php代码 如下
  1. <?php
  2. session_start();
  3. $_SESSION['time'] =date("Y:m:d:H:s",time());
  4. echo "本次访问时间"."<font color=red>".$_SESSION['time']."</font>"."<br>";
  5. echo "访问的服务器地址是"."<font color=red>".$_SERVER['SERVER_ADDR']."</font>"."<br>";
  6. echo "访问的服务器域名是"."<font color=red>".$_SERVER['SERVER_NAME']."</font>"."<br>";
  7. echo "SESSIONNAME是"."<font color=red>".session_name()."</font>"."<br>";
  8. echo "SESSIONID是"."<font color=red>".session_id()."</font>"."<br>";
  9. ?>
复制代码
6 联系方法及扩展阅读
笔者 水煮鱼@溢  微博 http://t.qq_com.kabaofu.com/cllxy1234 欢迎收听
haproxy 官网 http://haproxy.1wt.eu.tigetu.com/download/1.4/doc/configuration.txt
董旗宇  http://www.9ai9_net.mishutu.com/download/art/HAProxy配置使用说明.pdf   
刘天斯  http://blog.liuts_com.desibae.com/post/223/
linuxtone http://bbs.linuxtone_org.unfib.cn/thread-73-1-1.html

附件为txt版本 内容和上面一致。
游客,如果您要查看本帖隐藏内容请回复

附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分积分 收起 理由
守住每一天 + 6 支持原创。顶你。嘿嘿。

总评分: 积分 + 6   查看全部评分

Rank: 6Rank: 6

注册时间
2009-12-27
最后登录
2017-9-11
在线时间
65 小时
阅读权限
70
积分
3045
帖子
36
主题
7
精华
1
UID
7135
2#
发表于 2011-4-6 10:48:57 |只看该作者
本帖最后由 snifferqq 于 2011-4-6 10:54 编辑

二楼自己更新用
keepalived 辅助 moosefs 解决 mfsmaster单点故障
http://bbs.linuxtone_org.kezrw.cn/thread-9190-1-1.html
Keepalived+mysql 自动切换
http://bbs.linuxtone_org.ekbmf.cn/thread-8935-1-1.html
nagios 监控nginx 返回状态插件 如502 504
http://bbs.linuxtone_org.laepose.com/thread-8730-1-1.html
nginx启动 停止 重启等 管理脚本
http://bbs.linuxtone_org.ysoha.cn/thread-8740-1-1.html

Rank: 8Rank: 8

注册时间
2011-3-28
最后登录
2015-5-14
在线时间
151 小时
阅读权限
90
积分
27465
帖子
376
主题
18
精华
0
UID
12570
3#
发表于 2011-4-6 11:04:18 |只看该作者
,如果你要查看本帖隐藏内

Rank: 8Rank: 8

注册时间
2010-7-17
最后登录
2013-11-11
在线时间
279 小时
阅读权限
90
积分
19541
帖子
15
主题
0
精华
0
UID
9840
4#
发表于 2011-4-6 11:09:04 |只看该作者
支持一下

Rank: 4

注册时间
2009-5-29
最后登录
2017-9-11
在线时间
11 小时
阅读权限
50
积分
974
帖子
11
主题
0
精华
0
UID
3297
5#
发表于 2011-4-6 11:13:18 |只看该作者
兄弟顶你一个

Rank: 8Rank: 8

注册时间
2009-4-22
最后登录
2017-9-12
在线时间
82 小时
阅读权限
90
积分
22229
帖子
18
主题
1
精华
0
UID
2622
6#
发表于 2011-4-6 11:14:20 |只看该作者
看看,学习。

Rank: 3Rank: 3

注册时间
2010-1-21
最后登录
2013-2-1
在线时间
2 小时
阅读权限
30
积分
483
帖子
13
主题
0
精华
0
UID
7658
7#
发表于 2011-4-6 11:15:49 |只看该作者
顶一下水煮兄。

Rank: 6Rank: 6

注册时间
2008-6-12
最后登录
2016-8-31
在线时间
117 小时
阅读权限
70
积分
7266
帖子
8
主题
0
精华
0
UID
72
8#
发表于 2011-4-6 11:20:28 |只看该作者
很好。很好。感谢!

Rank: 4

注册时间
2009-5-29
最后登录
2017-9-11
在线时间
11 小时
阅读权限
50
积分
974
帖子
11
主题
0
精华
0
UID
3297
9#
发表于 2011-4-6 11:25:28 |只看该作者
兄弟顶你一个

Rank: 6Rank: 6

注册时间
2009-3-24
最后登录
2017-8-11
在线时间
120 小时
阅读权限
70
积分
6249
帖子
57
主题
1
精华
0
UID
2107
10#
发表于 2011-4-6 11:27:47 |只看该作者
感谢楼主提供这三种方法啊!

Rank: 7Rank: 7Rank: 7

注册时间
2008-11-26
最后登录
2017-9-11
在线时间
627 小时
阅读权限
100
积分
93417
帖子
451
主题
18
精华
1
UID
618
11#
发表于 2011-4-6 11:30:47 |只看该作者
支持!

论坛元老

小运维——知我罪我,其惟UNIX-like

Rank: 8Rank: 8

注册时间
2010-11-12
最后登录
2016-8-4
在线时间
1122 小时
阅读权限
90
积分
91360
帖子
477
主题
21
精华
0
UID
11131
12#
发表于 2011-4-6 11:31:33 |只看该作者
LZ厉害,多谢共享!
天道酬勤——UNIX真美!GNU/Linux更美!
子曰:君子务本,本立而道生!

Rank: 8Rank: 8

注册时间
2011-1-21
最后登录
2015-3-26
在线时间
652 小时
阅读权限
90
积分
37350
帖子
179
主题
13
精华
0
UID
11841
13#
发表于 2011-4-6 11:40:51 |只看该作者
这个,不顶不行.....
继续学吧......

Rank: 7Rank: 7Rank: 7

注册时间
2009-1-17
最后登录
2017-9-21
在线时间
582 小时
阅读权限
100
积分
58491
帖子
159
主题
27
精华
5
UID
1039
14#
发表于 2011-4-6 11:42:16 |只看该作者
好文   

Rank: 7Rank: 7Rank: 7

注册时间
2008-9-20
最后登录
2015-11-3
在线时间
489 小时
阅读权限
100
积分
38014
帖子
2203
主题
48
精华
0
UID
307

LT元老

15#
发表于 2011-4-6 12:53:30 |只看该作者
好帖留名,感谢分享!
您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2018-1-13 06:56 , Processed in 0.115638 second(s), 15 queries , Apc On.

Powered by Discuz! X2 北京pk10

© 2001-2011 Comsenz Inc.

回顶部
北京快乐8怎么登录 北京快乐8缩水软件 北京快乐8热号图 北京pk10 9码技巧 北京pk10 系统 北京pk10各名次杀号技巧
北京赛车pk10长久玩法 北京赛车pk10长久玩法 菲律宾1.5全天免费计划 北京赛车pk10官网地址 北京pk10七码稳赚技巧
北京pk10开奖 北京赛车pk10官方网站 北京赛车pk10历史记录 北京pk10历史开奖记录
北京pk10四码定位技巧 北京pk10开奖直播记录 上海时时乐彩票控 pk10赛车5码45678公式 快乐12任选3计算技巧