在计算与服务器的连接数时,我们需要使 HAProxy 忽略 SignalR 请求。
问题是有时我们通过 SignalR 发送大量消息。 HAProxy 看到这些消息并做出解决方案,该服务器非常繁忙,因此将用户重定向到另一台服务器。但这些消息非常轻量,服务器并不忙于处理它们。因此,我们只想通过普通的http请求来统计服务器的业务,不包括信号请求。我们该如何配置呢?
附注我们使用粘性会话。
您是否尝试创建访问控制列表并确定它是信号还是常规 HTTP 请求?
# ACL to identify SignalR requests
acl is_signalr path_beg -i /signalr
# Use the is_signalr ACL to bypass connection counting for SignalR requests
stick on src if !is_signalr
stick store-response src if !is_signalr
server server1 192.168.1.1:80 check
server server2 192.168.1.2:80 check
acl is_signalr path_beg -i /signalr
行创建一个名为 is_signalr
的 ACL,它匹配路径以“/signalr”开头的请求。根据您的 SignalR 端点调整此路径。 stick on src if !is_signalr
行将 HAProxy 配置为使用客户端的源 IP 地址来实现粘性,但前提是请求不是 SignalR 请求。
stick store-response src if !is_signalr
行确保基于源IP地址存储粘性信息,以响应非SignalR请求。