热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

1 用户IP 识别 

haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类似于nginx 的IP hash 指令)

配置指令        balance source

 

2 COOKIE 识别  

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

配置指令例举  COOKIE  SESSION_COOKIE  insert indirect nocache

用firebug可以观察到用户的请求头的COOKIE里 有类似" COOKIE jsessiOnid=0bc588656ca05ecf7588c65f9be214f5; SESSION_COOKIE=app1" SESSION_COOKIE=app1就是haproxy添加的内容

 

3 session 识别  

haproxy 将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。

配置指令例举 appsession JSESSIONID len 64 timeout 5h request-learn

 

#haproxy -f haproxy.cfg -V

#haproxy.cfg

 

global

        log     127.0.0.1 local0 info 

        maxconn 4096

        user    haproxy

        group   haproxy

        daemon

        nbproc  1

        pidfile /var/run/haproxy.pid

defaults

        mode    http

        maxconn         2000

        contimeout      5000

        clitimeout      30000

        srvtimeout      30000

        option          httplog

        option          redispatch

        option          abortonclose

        retries         3

listen admin_stats

        bind 113.106.185.245:443

        mode http

        log 127.0.0.1 local0 err

        stats   uri     /qhappy_stats

        stats   realm   itindex.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_status

frontend  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.itindex.net)

        acl     SOURCE          hdr_reg(host)   -i ^(sourceip. itindex .net)

        acl     APPSESSION      hdr_reg(host)   -i ^(appsession. itindex .net)

        acl     NOSESSION       hdr_reg(host)   -i ^(nosession. itindex .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_server

backend 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 1

backend 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 1

backend APPSESSION_srv

       mode    http

       appsession JSESSIONID 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 1

 

backend 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 1

backend 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

 

#COOKIE

 

listen  appli1-rewrite 0.0.0.0:80

        mode http

        option httplog

        option dontlognull

        option httpclose

        option forwardfor

 

        COOKIE  SESSION_COOKIE  insert indirect nocache

 

        #balance        roundrobin

        server  app1_1 172.20.37.249:8080 COOKIE app1inst1 check inter 2000 rise 2 fall 5

        server  app1_2 172.20.12.145:80 COOKIE app1inst2 check inter 2000 rise 2 fall 5

#IP 

 

listen appli1 0.0.0.0:90

        mode http

        option httplog

        option dontlognull

        log 127.0.0.1 local3

        COOKIE JSESSIONID rewrite

        balance source

        option httpchk GET /payCardSys/login.jsp

        stats uri /stats

        stats auth admin:admin

server app1_1 10.112.56.66:6601 COOKIE app1inst1 check inter 2000 rise 2 fall 5

server app1_2 10.112.56.67:6702 COOKIE app1inst2 check inter 2000 rise 2 fall 5


转载地址:http://itindex.net/blog/2012/07/24/1343118758531.html


推荐阅读
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
author-avatar
快乐伴随su1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有