HAProxy动态服务器地址

时间:2017-03-23 08:29:43

标签: networking nginx load-balancing haproxy

我们对此图有类似的设置

enter image description here

当请求到达HAProxy时,它会将roundrobin平衡到任何服务器,后端服务器会检查其缓存,如果资源不在该服务器上,则会发出重定向,并将标头设置为正确的服务器IP。

第二次请求到达HAProxy时,它会检测到有后端服务器的标头是否存在,但是如何将该IP和直接请求直接发送给它?

例如,第二次请求到达haproxy时它有标题X-BACKEND-IP=10.0.0.5

因此,haproxy尝试对该请求进行负载均衡,我希望它读取标头,获取该IP并直接转到该后端。

这可能吗?如果没有,是否可以使用nginx?

1 个答案:

答案 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}}执行类似操作。