0

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

我已经尝试过使用 HTTP lb(不能工作 RTMP)和 TCP lb(不能工作 HTTP 请求),但可能有一些错误配置或者我需要以某种特定方式发出 HTTP 请求才能在 TCP 上工作负载均衡器?

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

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

4

1 回答 1

3

据我了解,您有以下要求

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

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

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

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

根据要求并考虑GCP 负载平衡选项

1) HTTP(S) 负载均衡器不是一个选项,因为它不适用于 RTMP

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

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

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

GCP LB 支持的端口摘要可以在此链接中找到 不同 GCP LB 的支持外部端口和云负载均衡器摘要。

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

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

网络负载均衡 <----> 代理虚拟机 <--> 后端虚拟机

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

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

在此设置中,代理 VM 和 ILB 需要位于同一区域中,因为 ILB 是区域性的。

此外,如果您需要一些关于如何配置代理 VM 的指导,GCP 文档“将实例配置为网络代理”可能会提供一些很好的指导。

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

于 2019-01-08T21:58:02.780 回答