AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 439445
Accepted
jwbensley
jwbensley
Asked: 2012-10-18 09:48:35 +0800 CST2012-10-18 09:48:35 +0800 CST 2012-10-18 09:48:35 +0800 CST

Haproxy:我的会话“有点”粘性

  • 772

Pound 位于用于 SSL 卸载的 HAProxy 前面,因此 HAProxy 接收纯文本 HTTP 请求。我在托管相同应用程序的两个 Web 应用程序服务器前面有 HAProxy (v1.4.8)。下面是我的 HAProxy 配置。

目前,客户端访问 HAProxy,并可以转到任何服务器以获取其对站点根目录的初始“GET /”请求。例如,客户端访问 ServerA,从那时起,它们可能总是由 ServerA 或 ServerB 提供服务,无论哪种情况,会话都将粘在 A 或 B 上。反之亦然;客户端初始请求可能会进入 ServerB,在此初始请求之后,它们将始终由 ServerB 或 ServerA 提供服务。会话保持不变,但有时在初始请求之后会发生这种变化,对于所有未来请求的对方服务器。

下面是我的 HAProxy 配置。我写错了吗?

listen  app-servers 127.0.0.1:80
    cookie ASP.NET_SessionId prefix
    balance url_param ASP.NET_SessionId
    balance roundrobin 
    option persist
    option redispatch

    # Balance based on ASP .NET sesssion ID
    appsession ASP.NET_SessionId len 64 timeout 30m request-learn prefix

    # Active WebApp servers
    server  appserver1 10.0.0.1:80
    server  appserver2 10.0.0.2:80

谢谢你。

haproxy
  • 2 2 个回答
  • 3822 Views

2 个回答

  • Voted
  1. longneck
    2012-10-19T05:37:06+08:002012-10-19T05:37:06+08:00

    如果您的应用程序对用户在会话期间切换应用程序服务器很敏感,那么您希望将粘性保持时间设置为至少与会话 cookie 的过期时间一样长。

    您的粘性表设置为在 30 分钟后过期条目。因此,虽然您的用户可能会继续发送相同的会话 ID,但如果他们暂停超过 30 分钟,则他们的连接将重新平衡。如果您不喜欢这种行为,4 小时或更长时间的设置可能适合您。正如我在上面以粗体显示的那样,至少您希望将粘性保持时间设置为至少与会话 cookie 的过期时间一样长。

    当您使用该cookie server insert选项时,您将添加没有过期时间的烹饪。该 cookie 说明要使用哪个服务器。由于没有到期,客户端将永远不会移动到另一台服务器。

    但你也需要问问自己为什么关心。切换到另一台服务器会对用户体验产生巨大影响吗?如果是这样,也许你应该认为这是你的网络应用程序中的一个缺陷,并在该层解决它。我可能是错的,但这是值得考虑的事情。

    • 2
  2. Best Answer
    jwbensley
    2012-10-19T05:22:48+08:002012-10-19T05:22:48+08:00

    我对此不是很满意,但它确实有效;我在客户端请求中插入了一个 cookie,而不是跟踪 ASP .NET 会话 ID:

    listen  app-servers 127.0.0.1:80
    
        cookie server insert
        balance roundrobin 
        option persist
        option redispatch
        server  appserver1 10.0.0.1:80 cookie srv1
        server  appserver2 10.0.0.2:80 cookie srv2
    
    • 1

相关问题

  • 具有动态路由的代理服务器

  • nginx 访问日志忽略某些请求

  • HAProxy 和“分片”

  • 带有 HAProxy 的远程 IP

  • SSL 网站的高可用性

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve