我试图在不同的站点(不同的子网)上构建一个具有主HA的新k8s集群的体系结构。
我面临的问题是找到一个开放源码软件负载平衡(站点上没有物理的,它是在prem上)谁可以支持不同的子网(GSLB)。
负载均衡器是为Apiserver和所有连接到主程序。
有人在使用这个架构吗?你用过巫婆吗?我不能使用HAproxy或摇摆bc,他们不支持不同的子网。
发布于 2021-06-11 15:38:48
经过一些研究和实验,对于其中一个解决方案和它的用法有如下考虑(这个问题可以用不同的方式解决)。
Nginx ( not,not PLUS)和haproxy可以为kubernetes API服务器加载不同子网之间的均衡通信量,而不会出现任何问题。但是,由于keepalived协议(如HSRP、VRRP或鲤鱼 )的限制,不能在超过一个子网中工作。
这里的潜在解决方案可以是使用至少2个here /nginx实例(用于冗余)的体系结构,在一个子网中使用keepalived +,例如负载均衡器上的鲤鱼层。这样,健康检查将在顶层进行,负载平衡器将使用kubernetes api服务器路由到其他子网。
至于子网的可用性和冗余性,可以通过动态路由来解决,例如OSPF协议作为一部分,interior gateway protocol路由和BPG协议用于exterior gateway protocol路由。
另一个开源但付费的解决方案是Nginx +。它可以进行积极的健康检查(如TCP主动健康检查)和GeoIP功能。
同时,Nginx还支持GSLB。以下是Nginx官方文件的引文:
全球服务器负载平衡(GSLB)是指位于多个存在点(PoPs)中的跨服务器资源的流量的智能分布。GSLB最常见的实现方法是控制对DNS请求的响应,根据每个PoP的可用性、性能和邻近性,将每个用户引导到最合适的目标IP地址。
这将导致使用额外的DNS服务。例如NS1。从它开始有一些先决条件:
GSLB的概念不仅仅是关于负载均衡和健康检查(例如keepalived ),还包括使用DNS。经常使用DNS提供者提供的服务更便宜,更健壮。例如,NS1提供基于DNS的GSLB
此外,您还可以熟悉一些当前的GSLB项目这里 --其中一些项目是开源的:
https://serverfault.com/questions/1065304
复制相似问题