HAProxy基于cookie实现客户端会话保持

HAProxy基于cookie实现客户端会话保持

使用ip_hash时,如果有众多用户使用相同的公网地址去访问同一个服务时,由于这些用户所使用的公网IP都为同一个,HAproxy就会把他们调度到同一后端的服务器,由此可能造成后天的单台服务器的压力过大,因此需要其他的方法来进行调度。
HAProxy可以实现插入一层cookie,当用户第一次访问会查看是否有cookie,如果没有就在响应报文中插入以程cookie返回给客户端,当用户再次访问就会根据cookie来调度请求。lvs和nginx无法实现

cookie <value>

为当前server指定cookie值,实现基于cookie的会话黏性

cookie NAME [rewrite|insert|prefix] [indirect] [nocache] [postonly] [preserve] [httponly] [secure] [domain <domain>] [maxidle<idle>] [maxlife<life>]
NAME: cookie名称,用于持久连接
rewrite: 重写。如果之前有cookie就会覆盖了重写,或插入到前缀上
insert: 插入
prefix: 前缀
nocache: 当client和haproxy之间有缓存存在时,不缓存cookie

基于cookie实现会保持

修改配置文件,添加cooke选项

listen web
 bind 172.20.27.20:80
 mode http
 cookie SERVER-COOKIE insert indirect nocache           #插入cookie选项
 option forwardfor
 server web1 192.168.27.21:80 cookie web1 check inter 3000 fall 3 rise 5    #在后端服务器中拆入cookie的值
 server web2 192.168.27.22:80 cookie web2 check inter 3000 fall 3 rise 5

测试

使用curl来查看报文头部

[root@localhost ~]# curl -I www.mylinuxops.com
HTTP/1.1 200 OK
Server: nginx/1.17.0
Date: Tue, 04 Jun 2019 11:41:23 GMT
Content-Type: text/html
Content-Length: 8
Last-Modified: Tue, 04 Jun 2019 11:29:30 GMT
ETag: "5cf6561a-8"
Accept-Ranges: bytes
Set-Cookie: SERVER-COOKIE=web2; path=/              #此为插入的cookie信息
Cache-control: private

由于curl命令无法记录cookie,接下来使用浏览器来访问
HAProxy基于cookie实现客户端会话保持

转载于:https://blog.51cto.com/11886307/2405072

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HAProxy中进行会话保持可以通过使用Cookie或基于源IP的方法来实现。 1. 使用Cookie进行会话保持HAProxy可以通过在响应中设置Cookie实现会话保持。当客户端发送请求时,HAProxy会检查请求中是否包含有效的会话Cookie。如果存在,它将根据Cookie的值将请求路由到相应的后端服务器。如果不存在HAProxy可以选择一个后端服务器,并在响应中设置一个新的会话Cookie,以便客户端在后续请求中使用。 以下是一个示例配置: ``` frontend my_frontend bind 0.0.0.0:80 mode http default_backend my_backend backend my_backend mode http balance roundrobin cookie JSESSIONID prefix server backend1 192.168.0.1:8080 cookie server1 server backend2 192.168.0.2:8080 cookie server2 ``` 在上述配置中,HAProxy使用名为"JSESSIONID"的Cookie来进行会话保持。"cookie"关键字指定了Cookie的名称,并使用"prefix"参数表示Cookie值由HAProxy自动生成。 2. 使用基于源IP的方法进行会话保持:另一种常见的方法是基于源IP的会话保持HAProxy可以根据客户端的源IP地址将请求路由到同一台后端服务器,从而实现会话保持。这种方法适用于无状态的应用,其中会话信息不需要存储在后端服务器上。 以下是一个示例配置: ``` frontend my_frontend bind 0.0.0.0:80 mode http default_backend my_backend backend my_backend mode http balance source server backend1 192.168.0.1:8080 server backend2 192.168.0.2:8080 ``` 在上述配置中,"balance source"指示HAProxy使用源IP地址进行负载均衡,并实现会话保持。 无论使用哪种方法,都可以根据具体需求进行配置。请注意,会话保持可能会增加服务器的负载和复杂性,因此需要根据实际情况进行权衡和调优。 希望能对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值