我已成功创建从 GCP Cloud Run 实例到外部系统的 WebSocket 连接。我严格遵循 GCP 官方文档,一切都按预期运行。
但是,文档还建议在 Cloud Run 服务前面使用 Cloud Load Balancer 来发起 WebSocket 连接。不幸的是,它没有提供明确的解释为什么这是必要的。
有人可以澄清在这种情况下使用云负载均衡器的具体好处或原因吗?使用负载均衡器进行 WebSocket 连接时是否有任何潜在的缺点或性能影响需要考虑?
任何见解或解释将不胜感激。
Cloud Run 仅支持
HTTPS connections
,不支持 raw TCP ports
。您可以使用中介服务来处理原始 TCP
并将这些请求转换为 HTTPS
。理论上,load balancer
可以轻松地将 TCP
连接转换为其中之一。
Cloud Run 仅支持
HTTP
、WebSockets and gRPC and not TCP
。您可以使用 VPC
让 Cloud Run 与 Serverless VPC Connector
中的其他 GCP 服务进行通信,或在负载均衡器后面使用 internal IP address
公开它。
您还可以使用
Load balancer
和 Google 提供的 Cloud Armor
来防御 DDoS
攻击,而不会影响 Cloud Run
的扩展。
如果资源是具有用户的
Cloud VPN gateway
或 on-prem services
无法访问服务(尽管位于同一项目和/或 VPC 边界上),则可以使用 Private Service Connect or Internal Load Balancer
。
Websocket
连接可以保持很长时间。 HTTP and TCP/SSL Proxy
的后端服务超时行为有所不同。如果你想要很长的Websocket connections
,那么你应该使用Network Load Balancing
。
总体而言,
GCP Load Balancer
可以从 WebSocket connections
显着提高 Cloud Run
的可用性、可扩展性和安全性。另一方面,虽然 Load Balancer
增加了少量延迟,但其好处通常超过了这个小缺点。
请参阅云负载平衡:用于安全、私密地访问 Cloud Run 服务的综合解决方案,并查看示例使用 Cloud Run 部署安全的无服务器架构以了解更多信息。