我在前端使用HAProxy配置了一个负载均衡器,在后端我有4个服务器使用Apache服务器为请求提供服务。
#HAProxy for web servers
frontend web-frontend
bind IPADDRESS_LB:80
mode http
default_backend web-backend
backend web-backend
balance roundrobin
server web-server1 IPADDRESS1:80 check
server web-server2 IPADDRESS2:80 check
server web-server3 IPADDRESS3:80 check
server web-server4 IPADDRESS4:80 check我的请求由两台机器中的任何一台以循环机制提供。但是现在我想实现我自己的算法,根据请求参数发送请求,例如IP。
就像实现我自己的哈希函数一样,基于这个结果,我可以将请求路由到任何一个后端服务器。
我怎么能这么做?
发布于 2022-05-17 12:14:15
您可以参数化在散列中使用什么(示例来源:HaProxy的博客)
在您的示例中,只需使用balance source根据源(IP)进行散列:
#HAProxy for web servers
frontend web-frontend
bind IPADDRESS_LB:80
mode http
default_backend web-backend
backend web-backend
balance source
hash-type consistent
server web-server1 IPADDRESS1:80 check
server web-server2 IPADDRESS2:80 check
server web-server3 IPADDRESS3:80 check
server web-server4 IPADDRESS4:80 check(hash-type consistent确保不同的IP散列给出相同的结果)
或者基于名为ip的URL参数:
#HAProxy for web servers
frontend web-frontend
bind IPADDRESS_LB:80
mode http
default_backend web-backend
backend web-backend
balance url_param ip
hash-type consistent
server web-server1 IPADDRESS1:80 check
server web-server2 IPADDRESS2:80 check
server web-server3 IPADDRESS3:80 check
server web-server4 IPADDRESS4:80 check若要将哈希基于多个参数,可以:
来自HaProxy的博客的示例:
backend bk_static
http-request set-header X-LB %[req.hdr(Host),lower]%[req.uri,lower]
balance hdr(X-LB)
hash-type consistenthttps://stackoverflow.com/questions/72129880
复制相似问题