我们计划在我们的基础设施中添加第二台清漆服务器。
平衡两台服务器的流量的更好方法是什么?我认为我们可以在两台服务器前面使用 haproxy,但是如何配置它来负载平衡 2 varnish 之间的流量呢?理想的解决方案是,如果一种清漆出现故障,所有流量都会流向另一种。
编辑:理想的行为是主动/主动配置,每个都有 50% 的负载,如果一个发生故障,haproxy 会向另一个发送 100% 的负载。
另一种选择是将两个 varnish 实例放在同一个后端,但通过 uri 或参数平衡请求。
这将允许您在同一个后端中都处于活动状态,并且仍然保持较高的缓存命中率,因为同一个 uri 将始终与同一个清漆缓存平衡(只要它可用)。Balace uri 还需要一个可选的长度参数,以便在散列时使用。
这是一个简单的例子:
前端 http-in acl my_acl use_backend varnish if my_acl
backend varnish1
mode http
balance uri
option httpchk GET /check.txt HTTP/1.0
server varnish1 192.168.222.51:6081 check inter 2000
server varnish2 192.168.222.52:6081 check inter 2000
我提出的想法是使用两个后端,并在每个后端使用另一台服务器作为备份,因此当服务器关闭时,所有请求都会发送到活动服务器。
frontend http-in
acl my_acl <whaever acl to split the traffic>
use_backend varnish2 if my_acl
default_backend varnish1
backend varnish1
mode http
option httpchk GET /check.txt HTTP/1.0
server varnish1 192.168.222.51:6081 check inter 2000
server varnish2 192.168.222.52:6081 check inter 2000 backup
backend varnish2
mode http
option httpchk GET /check.txt HTTP/1.0
server varnish2 192.168.222.51:6081 check inter 2000
server varnish1 192.168.222.52:6081 check inter 2000 backup