负载均衡器和服务链路都可以实现高服务可用性。 负载均衡器由代理进行,而服务链接则由DNS进行。
由于此DNS仅属于Rancher本身,因此公共服务只能使用负载均衡器来分发请求。
但是对于内部服务,如果服务链接与负载均衡器相同? 服务链接可用于高可用性吗?
由于DNS缓存,请求是否可能无法平衡分配?
例如:
服务backend
,包含3个容器,backend_1
,backend_2
,backend_3
服务nginx,将proxy_pass
设为backend
。
它是否会一直转移到backend_1
,因为一旦它转为backend_1
的DNS,它将始终使用backend_1
?
换句话说,我可以使用服务链接代替负载均衡器进行内部服务吗?
答案 0 :(得分:0)
Rancher论坛上询问并回答:https://forums.rancher.com/t/load-balancer-or-service-link/4719/2
根据客户的行为,答案介于“根本没有正确平衡”和“作为粗略平衡请求的简单方法”之间。
DNS服务器将在每次询问时以随机顺序返回所有(健康)backend
容器IP的答案,TTL为1秒。
但是客户可以随意使用这些信息做任何事情。有些人只接受第一个答案,其他人则从列表中随机选择,或not so randomly。有些人会尊重TTL,有些人会在他们决定的某段时间内或者永远地,或者在请求失败之前缓存该值等等。
默认情况下,Nginx会在启动时专门解析一次名称。要使它做任何其他事情,你必须给它一个resolver。任何主机上的Rancher DNS服务始终为169.254.169.250
。