我遍历了GCP的所有负载平衡文档和方法。我看到的每种类型的负载均衡器都在不同区域中使用一组VM。负载平衡器将流量路由到运行在不同区域内VM内的服务。
我在两个不同的区域中有两个集群,它们都具有相同名称的sftp部署和服务。我想使用全局负载平衡器充当这些服务器的前端,并且如果其中一个发生故障,则其他服务器应该能够满足客户端请求。
我已尝试使用此document中介绍的 kubemci 。它仅适用于HTTP(S)通信,因为它使用Ingress(并且Ingress仅支持HTTP / HTTPS通信),而sftp使用TCP协议。
这里的目的是为在两个不同区域的两个GKE群集中运行的两个sftp服务器配置负载平衡器,您知道如何实现此目标吗?
我可以使用任何类型的服务或负载平衡器。请记住,在我们的情况下,可以经常创建和升级GKE中的实例,因此使用GCE实例内部IP似乎不是可行的解决方案。
答案 0 :(得分:0)
要负载平衡TCP流量,您需要创建L4 LB,它是服务类型LoadBalancer。但是,每个群集都限制了服务,因此您不能在单个服务中暴露2个不同群集中的Pod。
要提供所需的负载平衡类型,我建议使用服务类型NodePort(确保两个服务都使用相同的节点端口值),并使用GCE VM创建自己的负载平衡器以在各个负载之间分配流量。两个集群。这样可以克服跨集群的需求,并且可以避免使用内部负载均衡器(区域资源(只能从同一区域内的源接收流量))时出现任何可能的问题
答案 1 :(得分:0)
这对我来说有点棘手,但是我不知何故找到了一种方法。 我找不到任何与此相关的文档或问题或答案,因此我在medium.com上写了一篇文章,详细解释了整个设置。这是link。
简而言之,我们可以简单地使用GCP的TCP代理负载平衡。
但是根据文档,此负载平衡器仅用于VM,而不用于群集。但是,我们可以使用集群创建的实例组,并提供一个命名端口,该端口可用于将流量直接引入VM。
限制是,我们可以公开TCP负载平衡器的一些内容,但是如果我们可以公开使用Nodeport的VM的一系列Pod(类似36001)。因此,只需使用此端口和运行状况检查创建一个命名端口。将两者都提供给后端服务,它将成功解决问题。
仔细阅读上述文章以进行深入的解释。