我们对此图有类似的设置
当请求到达HAProxy时,它会将roundrobin平衡到任何服务器,后端服务器会检查其缓存,如果资源不在该服务器上,则会发出重定向,并将标头设置为正确的服务器IP。
第二次请求到达HAProxy时,它会检测到有后端服务器的标头是否存在,但是如何将该IP和直接请求直接发送给它?
例如,第二次请求到达haproxy时它有标题X-BACKEND-IP=10.0.0.5
因此,haproxy尝试对该请求进行负载均衡,我希望它读取标头,获取该IP并直接转到该后端。
这可能吗?如果没有,是否可以使用nginx?
答案 0 :(得分:2)
假设您对在第二个请求的标头中信任IP感到满意,那么是的,您可以使用How to run Background Tasks in ASP.NET执行此操作:
/etc/haproxy/hdr2srv.map
#ip srv_name
# hex of IP used for names in this example
10.0.1.5 srv_0a_00_01_05
10.0.2.5 srv_0a_00_02_05
的内容:
use_backend
如果你需要关闭其中一个服务器,你应该动态更新地图以将其删除,以便带有标头集的请求再次被重定向。
如果您有多个后端,则可以使用{{1}}执行类似操作。