gpt4 book ai didi

cookies - HAproxy 1.5.8 如何配置基于 Cookie 的粘性?

转载 作者:行者123 更新时间:2023-12-02 06:40:29 28 4
gpt4 key购买 nike

我们的应用程序需要基于 cookie 的粘性 session ,因此我们希望使用 HAproxy 来平衡 IIS 服务器场的传入流量。

我们正在使用以下配置,该配置似乎在实验室中工作(循环工作正常并保留 session ),但在超过 3000 个并发用户的生产中应用时失败:

前端Front_http

bind :80
mode http
default_backend backend_http
stats enable
capture cookie ASP.NET_SessionId len 32
maxconn 10000

前端Front_https

mode http
default_backend backend_https
bind *:443 ssl crt /etc/haproxy/cert.pem
capture cookie ASP.NET_SessionId len 32
maxconn 10000

后端backend_http

 balance roundrobin
option forwardfor
stick-table type ip size 20k expire 5m
appsession ASP.NET_SessionId len 64 timeout 5m request-learn prefix
server Server_1 192.168.10.81:80 cookie Server_1
server Server_2 192.168.10.81:80 cookie Server_2
server Server_3 192.168.10.81:80 cookie Server_3

后端backend_https

 balance roundrobin
option forwardfor
stick-table type ip size 20k expire 5m
appsession ASP.NET_SessionId len 64 timeout 5m request-learn prefix
server Server_1 192.168.10.81:80 cookie Server_1 ssl verify none
server Server_2 192.168.10.81:80 cookie Server_2 ssl verify none
server Server_3 192.168.10.81:80 cookie Server_3 ssl verify none
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }

从 HAProxy 1.5.8 文档中,我了解基于 cookie 的粘性是通过命令“appsession”实现的,但我不明白其他命令所扮演的角色,例如“捕获 cookie”或“粘表”,它们是否有必要使用appsession时有什么作用吗?任何人都可以帮助我了解它们是如何工作的,并在您发现我们的配置有任何问题时提供建议。

最佳答案

首先,您能否解释一下什么“不起作用”或者您当前的配置面临哪些问题?

您当前的配置存在一些问题:- 应用 session 粘性不抵抗重新加载。这意味着每次重新加载 HAProxy 后粘性都会丢失- 您的 SSL 后端可能有拼写错误,因为您将 SSL 流量转发到端口 80,这与您用于透明 HTTP 的端口相同。

HAProxy 允许通过多种方式进行基于 cookie 的持久性。

  • cookie 插入:HAProxy 为自己设置一个 cookie:

    backend mybk
    [...]
    cookie SERVERID insert indirect nocache
    [...]
    server s1 10.0.0.1:80 check cookie s1
    server s2 10.0.0.2:80 check cookie s2
  • cookie 前缀:HAProxy 使用现有的 cookie(通常是应用程序 1)并在其值前添加服务器名称前缀:

    backend mybk
    [...]
    cookie ASP.NET_SessionId prefix nocache
    [...]
    server s1 10.0.0.1:80 check cookie s1
    server s2 10.0.0.2:80 check cookie s2
  • 粘表:HAProxy 学习并使用应用程序 cookie,而不修改它:

    backend mybk
    [...]
    stick-table type string len 64 size 100k expire 15m
    stick store-response res.cookie(ASP.NET_SessionId)
    stick match req.cookie(ASP.NET_SessionId)
    [...]
    server s1 10.0.0.1:80 check
    server s2 10.0.0.2:80 check

注意:您应该使用对等部分来保持 2 个 HAProxy 之间以及重新加载配置时的数据同步注意2:expire参数应该与您的应用程序cookie超时匹配

最后但并非最不重要的一点是,HAProxy 将在您的日志行中向您报告有关基于 cookie 的持久性的标记(了解带有 cookie 关键字的标记)。这样,您就会知道请求的状态(是否有 cookie、是否有效等)以及 HAProxy 采取的操作(插入新的 cookie 等)

您可以查看此博客页面以获取有关 HAProxy 的更多信息: http://blog.haproxy.com/2012/03/29/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/

巴蒂斯特

关于cookies - HAproxy 1.5.8 如何配置基于 Cookie 的粘性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27094501/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com