负载均衡器必须知道所有节点。客户端将与负载均衡器交互,然后负载均衡器将每个任务交给节点。
如果客户端总是访问相同的(单个)负载均衡器,怎么可能没有单点故障?你不能有两个负载均衡器,否则客户端怎么知道连接哪一个?
是否可以接受对于某些设计部分您无法避免单点故障?
负载均衡器必须知道所有节点。客户端将与负载均衡器交互,然后负载均衡器将每个任务交给节点。
如果客户端总是访问相同的(单个)负载均衡器,怎么可能没有单点故障?你不能有两个负载均衡器,否则客户端怎么知道连接哪一个?
是否可以接受对于某些设计部分您无法避免单点故障?
将多个负载均衡器作为高可用性解决方案的一部分是很常见的,负载均衡器没有必要成为单点故障。例如,负载平衡器可以放置在它们之间浮动的单个虚拟 IP 地址后面。如果其中一个出现故障,IP 将浮动到另一个接管的 IP。客户端只知道它始终连接到的单个虚拟 IP。
如果客户端是 Erlang 节点并且通过 Erlang 消息传递进行通信(在提供答案的第一部分时错过了这一点),您可以将负载平衡进程设置为属于进程组 (pg2) 并通过此路由。这将允许您有多个负载均衡器共享负载。如果所有请求都必须通过单个进程进行路由,您可以将一个进程注册为全局进程,并在其他节点上部署相同的进程作为备份。这些备份需要监控全局服务,并在全局进程丢失时接管。