Google 云 TCP LB 让 RTMP 和 HTTP(S) 工作

Google cloud TCP LB to let work RTMP and HTTP(S)

我有一个计算引擎实例组,我需要一个静态 ip(带代理 LB)并且需要抓取 HTTP(S) 和 RTMP 请求。 我需要将此代理附加到外部域 -> example.com

我已经尝试过使用 HTTP lb(不能处理 RTMP)和 TCP lb(不能处理 HTTP 请求),但可能有一些配置错误或者我需要在某些特定的情况下发出 HTTP 请求在 TCP 负载平衡器上工作的方法?

完美的解决方案是当我向 example.com 发出请求时,HTTP 和 RTMP 请求都需要工作,解决方法也很好。 现在一切正常,但 example.com 指向 1 个托管实例的 IP,因此如果托管组规模和该特定实例 "die",example.com 指向一个无用的 IP。

我需要在同一个后端(组实例)上管理两个请求(RTMP 和 HTTP)

据我了解,您有以下需求

1) 带代理 LB 的静态外部 IP

2) 需要抓取 HTTP(S) 和 RTMP 请求。

3) 代理附加到外部域,例如 example.com

4) 后端应该是托管实例组

根据要求并考虑 GCP load balancing options:

1) HTTP(S) load balancer 不是一个选项,因为它不适用于 RTMP

2) SSL Proxy LB 不是一个选项,因为它不支持端口 80(用户提到了 HTTP)

3) TCP Proxy LB 不是一个选项,因为它不支持端口 80,因此将不支持 HTTP。

4) Network TCP/UDP LB 似乎是这种情况的可能选项,因为它支持用于负载平衡的任何外部端口,但问题是它没有代理功能,它只是通过 LB。

可以在下面找到 GCP LB 支持的端口摘要 link Supported external ports for differ GCP LB and summary of Cloud load balancers.

Google Cloud Platform 不提供可同时处理端口 80 上的 HTTP 和另一个普通旧 TCP 协议的代理类型负载平衡器。

考虑到所有信息,此方案的最佳选择是构建您自己的代理 VM,并将它们添加到网络负载平衡器后面的目标池中。这样,网络负载均衡器的 IP 将被公开(对 example.com 的请求转换为网络负载均衡器的 IP)并且代理功能将由充当该网络负载均衡器目标池的虚拟机池提供。之所以在 Network LB 后面有多个代理 VM 是为了消除单点故障以及冗余。

网络 LB <----> 代理虚拟机 <--> 后端虚拟机

或者,如果您需要托管实例组和自动缩放,那么

网络 LB <--> 代理虚拟机 <--> Internal LB <--> 托管实例组

在此设置中,the proxy VMs and the ILB need to be in the same region as ILBs are regional.

此外,如果您需要一些关于如何配置代理 VM 的指导,关于“Configuring an instance as a network proxy”的 GCP 文档可能会提供一些很好的指导。

值得一提的是,Stack Overflow 一般面向开发人员,Server Fault 面向系统和网络管理员。