怎样在haproxy中设置会话保持(粘滞会话)

2025-04-11 01:50:51

http出口的负载拨揞搠床均衡策略是roundrobin,部分业务系统将会话信息保存在backend server,且backend server之间未廪咫錾净做同步。用户在访问、操作的时候,会出现会话不连贯的现象 。

几种方式对比

1、在haproxy的配置文件的balance中进行配置。

怎样在haproxy中设置会话保持(粘滞会话)

2、source的方式将同一个源IP的请求转发给同一个backend server,可以作用于tcp和http。但是当某个源IP的请求量较大,或者用户请求经过NAT后到达,会导致backend server的负载严重不均衡。不采用。

怎样在haproxy中设置会话保持(粘滞会话)

3、url_param的方式,需要业务在url中带有sessionid,适用于http。不采用。

怎样在haproxy中设置会话保持(粘滞会话)

4、stick-tables的方式,设置复杂,且需要维护记录表。不采用。

怎样在haproxy中设置会话保持(粘滞会话)

5、cookie的方式本身也有多种策略,例如insert,prefix,rewrite等,适用于http。

怎样在haproxy中设置会话保持(粘滞会话)

6、经过对比,决定采用以下方式:cookie cookie.XXXXX.cn insert indirect postonly

怎样在haproxy中设置会话保持(粘滞会话)

结果说明

1、未发送post请求之前,依然采用roundrobin的方式。第一次get请求:

怎样在haproxy中设置会话保持(粘滞会话)

2、第二次get请求:

怎样在haproxy中设置会话保持(粘滞会话)

3、发送了post请求后,被设置cookie。cookie的值为处理post请求的backend server的ID。

怎样在haproxy中设置会话保持(粘滞会话)

4、后续请求被转发到同一个backend server用户后续所有http请求,都会带上cookie,被转发到同一个backend server。

怎样在haproxy中设置会话保持(粘滞会话)
怎样在haproxy中设置会话保持(粘滞会话)

5、绑定的backend server宕机后,cookie失效绑定的backend server宕机后,虽然后续发送的请求中依然会带有cookie,但是这骀旬沃啭时候会重新回到roundrobin的状态,直到用户再次发送POST请求,重新绑定backend server。宕机后,再次发送POST的情形:

怎样在haproxy中设置会话保持(粘滞会话)
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢