我知道负载平衡器的目的是平衡服务器之间的负载并跟踪实例健康状况等。但是如果负载平衡器本身出现故障怎么办?如何设置冗余负载平衡器?(负载均衡负载均衡器?)
我可以看到 DNS 运行状况检查如何有用,但显然存在严重的延迟问题,不是吗?
这是假设您没有使用任何第三方服务,如 AWS ELB 或任何类似服务。如果你只是使用说 Nginx 怎么办?
我目前正在尝试找出为我的新项目负载平衡多个 sock 5 代理服务器的最佳方法。我正在研究像 HA 代理这样的程序,但它似乎只对 HTTP 代理进行负载平衡,对于这个项目我需要 Sock5。我研究了 DNS 循环,但我还没有找到一种方法可以让它立即故障转移到其他服务器之一或将它们从轮换中删除。我还发现,当一台服务器离线时,TTL 更新速度不够快,无法无缝切换到另一台服务器。这确实困扰了我一段时间,我发现很难解释我的情况,因为我在负载平衡和防止用户失败方面缺乏经验,因为我的项目最近才获得关注。如果我刚刚发布的内容似乎没有意义,我在下面制作了一个图表来说明我正在尝试配置的内容。
所以基本上我正在寻找的是一种解决方案,可以有效地平衡 sock5 代理的负载,同时删除离线的服务器。 http://puu.sh/3mLvL/6ef73d46d4.png
我知道在某些情况下,我们会在服务器上遇到繁重的 http(s) 负载,我们应该使用负载均衡器在多个后端服务器之间分配负载。
但我在这里有一个困惑!假设有太多用户(比如 100,000)试图同时访问example.com:80负载均衡器(例如 Apachemod_proxy_balancer 或任何其他独立的负载均衡器)想要在多个后端服务器之间分配此负载,但所有流量仍然必须通过前端服务器传递,这会给该服务器带来大量流量,即使所有请求在后端服务器解析,前端服务器仍然必须管理它们(假设在最好的情况下它必须为每个请求创建一个唯一的线程,这会导致该服务器在创建 100,000 个线程后立即崩溃!)。
现在我的问题(这对专家来说可能听起来很有趣!)是负载均衡器如何处理这种情况?换句话说,前端服务器如何能够直接在客户端和后端服务器之间建立链接,而不必承受如此重的网络负载?(我知道在这种情况下我们不能将后端服务器称为真正的“后端”!但假设现在可以)这种情况是否需要任何特定于应用程序的更改?(例如,为了简单地将带有 httpLocation标头的客户端重定向到其他服务器)
我可能不明白这应该如何工作,但我无法弄清楚为什么带有这个基本 vrrp_instance 的 BACKUP 系统会立即过渡到 master 并且似乎从不尊重优先级。
当两者都健康且在线时,为什么虚拟 IP 地址不会从备份系统中删除?
看起来两个系统都在广播 vrrp 广告。从tcpdump备份系统开始:
betaproxyslc01.fakecorp.com > vrrp.mcast.net: vrrp betaproxyslc01.fakecorp.com > vrrp.mcast.net: VRRPv2, Advertisement, vrid 51 , prio 150 , authtype simple, intvl 1s, length 20, >addrs: virtual-app .fakecorp.com auth "password" 15:52:24.541637 IP (tos 0xc0, ttl 255, id 1611, offset 0, flags [none], proto VRRP (112), length 40)
betaproxyslc02.fakecorp.com > vrrp.mcast.net: vrrp betaproxyslc02.fakecorp.com > vrrp.mcast.net: VRRPv2, Advertisement, vrid 51 , prio 100, authtype simple, intvl 1s, length 20, >addrs: virtual-app …
load-balance ×4
haproxy ×1
high-load ×1
http-server ×1
keepalived ×1
linux ×1
nginx ×1
proxy ×1
redundancy ×1