当我们需要高可用性服务时(它不计量什么类型的服务:它可以是数据库,队列系统,我们的应用程序),我们将其分布在许多机器上,以确保当一台机器宕机时,其余机器可以承担额外的负载。
非常简单。
但是如何将负载均衡器分散到多台机器上呢?
DNS 记录可以指向 1 个或几个服务器。但是当我们的服务器发生 DNS 故障时,任何客户端都不知道该特定机器未运行。客户端将向其发出请求,并会收到我们的网页无法正常工作的信息。
如何集群负载均衡器层?
答案1
首先,考虑一下您愿意承担的复杂性,以便在单个负载均衡器盒之上实现可用性。负载通常不是问题,单个主机可以处理大量连接。
负载平衡器可以像其他任何东西一样进行集群化,以解决硬件或其他节点故障。一个开源示例是使用基于 VRRP 的 keepalived 的 haproxy。几个本地 HA 设计的典型特征是它需要相同的第 2 层。这意味着云上的替代解决方案只为您提供第 3 层。
第 2 层无法帮助互联网到达健康节点,或者您的数据中心离线。这意味着 DNS 或 IP 路由必须巧妙。
DNS 可以根据自动健康检查或手动返回不同的记录。但是,客户端可以将结果缓存数小时,这对于许多恢复目标来说太长了。
将同一 IP 指向不同的路径是路由问题。向工作负载均衡器通告路由。
答案2
请参阅 HAPROXY 或类似的负载/平衡哈普罗西
添加回答问题:
好的,你只需要一个 DNS 记录
客户端<-> HAPROXY<-> 服务器 A<-> 服务器 B
HAPROXY 位于客户端和服务器的中间。
HAPROXY 配置如下
bind *:80
acl host_mysite hdr(host) -i mysite.com
use_backend mysite if host_mysite
backend mysite
mode http
balance roundrobin
option httpclose
option forwardfor
server serverA ip:port check inter 2000
server serverB ip:port check inter 2000