gpt4 book ai didi

websocket - GCE:一个IP上的TCP和HTTP负载均衡器

转载 作者:行者123 更新时间:2023-12-02 12:23:21 31 4
gpt4 key购买 nike

我正在GKE上运行kubernetes应用程序,该应用程序在端口80上提供HTTP请求,并在端口8080上提供websocket。

现在,HTTP部分需要知道客户端的IP地址,因此我必须使用HTTP负载平衡器作为入口服务。然后,Websocket部分必须使用TCP负载平衡器,因为在文档中明确指出HTTP LB不支持它。

我让它们都工作,但是使用了不同的IP,我需要将它们放在一个IP上。

我希望GCE上有iptables之类的东西,所以我可以将流量从端口80转发到HTTP LB,再从8080转发到TCP LB,但是我找不到类似的东西。包括转发在内的所有内容都只允许其中一个。

我想我可以使用nginx / HAproxy一个实例来做到这一点,但这似乎太过分了

感谢任何帮助!

最佳答案

目前尚无很好的答案。目前,入口对象实际上仅是HTTP,并且我们实际上不支持单个集群中的多个等级的入口(尽管我们希望这样做)。

GCE的HTTP LB尚不支持websocket。

服务存在一个缺陷,即它们丢失了客户端IP(我们正在对此进行努力)。即使我们解决了这个问题,由于您需要额外的端口,您也将无法使用GCE的L7平衡器。

我能想到的最好的解决方法是,直到我们保留源IP为止,许多用户已使用它是:

使用HostPorts在某些或所有节点(标签控制)上以Daemonset的形式运行自己的haproxy或nginx或什至自己的应用程序。

运行一个GCE网络LB(在Kubernetes之外)指向具有HostPorts的节点。

一旦我们可以正确保留外部IP,就可以将其转换为简单的服务。

关于websocket - GCE:一个IP上的TCP和HTTP负载均衡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38542153/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com