我想使用haproxy作为代理和数千个后端的负载均衡器.因此,需要根据主机名将请求代理到正确的后端,然后在后端内进行负载平衡.我正在使用haproxy-1.5dev21.
配置文件如下所示:
frontend public
bind :80
mode http
acl host1 hdr_reg(host) host1.com
use_backend be_host1 if host1
acl host4000 hdr_reg(host) host4000.com
use_backend be_host4000 if host4000
backend be_host[n]
server hostn_1
server hostn_2
Run Code Online (Sandbox Code Playgroud)
问题是,如果有5000个主机,每个请求会增加30毫秒的延迟.对于20k后端,haproxy需要很长时间才能加载,更不用说每个请求的延迟灾难了.
我可以做一些比顺序acl规则更好的事情吗?我还没有找到新地图功能的示例 - 发行说明说它可以用于大量重定向规则.我试过这个:
use_backend %[hdr(host), map(host_to_backend_map.file)]
Run Code Online (Sandbox Code Playgroud)
使用地图时显然有些愚蠢,但任何指导都会有所帮助.谢谢!