0

负载均衡器和服务链路都可以实现服务的高可用性。负载均衡器通过代理进行,而通过 DNS 服务链接。

因为这个 DNS 只属于 Rancher 自己,公共服务只能使用负载均衡器来分发请求。

但是对于内部服务,如果服务链接与负载均衡器相同?服务链接可以用于高可用性吗?

请求是否可能因为 DNS 缓存而分布不均?

例如:

服务backend, 带 3 个容器, backend_1, backend_2,backend_3

服务 nginx,创建一个proxy_passbackend.

它会一直传递到backend_1,因为一旦它 DNS 到backend_1并且它会一直使用backend_1

换句话说,我可以使用服务链接而不是负载均衡器进行内部服务吗?

4

1 回答 1

0

这是在 Rancher 论坛上提出并回答的:https ://forums.rancher.com/t/load-balancer-or-service-link/4719/2

根据客户端的行为,答案介于“根本无法正确平衡”和“可以作为粗略平衡请求的简单方法”之间。

每次询问时,DNS 服务器都会以随机顺序返回包含(健康)容器的所有IP 的答案,TTL 为 1 秒。backend

但是客户可以随意使用这些信息做任何事情。有些人只会选择第一个答案,有些人会从列表中随机选择,或者不那么随机。有些人会尊重 TTL,有些人会在他们决定的一段时间内缓存该值,或者永远缓存该值,或者直到请求失败,等等。

默认情况下,Nginx 会在启动时只解析一次名称。要让它做任何其他事情,你必须给它一个resolver。Rancher DNS 服务始终169.254.169.250在任何主机上。

于 2016-11-29T04:14:39.307 回答