使用 Wasabi s3 的 Google Cloud 负载均衡器:backend_connection_close_before_data_sent_to_client 错误

问题描述 投票:0回答:1

我正在设置一个 Google Cloud Load Balancer,其外部后端指向 Wasabi S3 存储桶。目标是通过负载均衡器和 Cloud CDN 提供来自 Wasabi 存储桶的视频文件。但是,我始终收到 502 Bad Gateway 错误。日志指定:“backend_connection_close_before_data_sent_to_client”。

设置详情:

我是使用云的新手,因此按照 Google 文档我确保完成了这些步骤:

  • SSL 证书:我设置了一个 google 管理的 SSL 证书,其中包括 mydomain.com 和 www.mydomain.com(活动)
  • NEG:我设置了一个指向 wasabi 的 NEG,其中
    s3.us-west-1.wasabisys.com
    作为 FQDN,端口为 443
  • 负载均衡器:首先,我确保添加权限以允许 Google 的 IP 向我的存储桶发送请求。然后我按照另一个指南设置了一个负载均衡器。我使用相同的设置配置了负载均衡器,但后来我不得不将后端协议从 http/2 切换到 http,因为 wasabi 没有响应 http2 请求。在负载均衡器的后端配置中,我有 2 个服务,其中一个是在设置负载均衡器时创建的,第二个是根据
    第一个链接指南创建的“新”服务(名为 
    user-clips)。 我也确保在自定义请求标头中添加
    Host: s3.us-west-1.wasabisys.com
  • 主机和路径规则:我添加了一条新规则,如下所示
    Host: *, Paths: /all-users-clip-storage-wasabi/*, Backend: user-clips
  • 私有来源:存储桶不是公开的,所以我必须配置私有来源身份验证。

问题: 当我尝试通过 CDN 向存储桶发出请求时,我会收到不同的错误,具体取决于我尝试访问它的方式。当我使用谷歌的例子时:

time wget "https://my_load_balancer_ip/all-users-clip-storage-wasabi/all-users-projects/exampleUser/project-name-placeholder/video_file.mp4

我收到以下错误:

The certificate's owner does not match hostname ‘my_load_balancer_ip’

当我用我的域名替换 IP 时(带或不带 www):

Resolving www.mydomain.com (www.mydomain.com)... {my_load_balancer_ip}
Connecting to www.mydomain.com (www.mydomain.com)|{my_load_balancer_ip}|:443... connected.
HTTP request sent, awaiting response... 502 Bad Gateway
2024-08-08 23:50:46 ERROR 502: Bad Gateway.

real    0m0.342s
user    0m0.017s
sys     0m0.005s

这是失败请求的日志:

statusDetails: "backend_connection_closed_before_data_sent_to_client"

我从其他来源了解到,问题在于负载均衡器正在将流量发送到另一个实体,超时时间很短。但正如您从日志中看到的,对请求的答复几乎是即时的(不到 1 秒)。

我已经尝试过:

  1. 将 TCP 设置为 600 秒
  2. 已验证 SSL 证书对于两个域均有效
  3. 将协议从 HTTP/2 更新为 HTTP
  4. 使用预签名 URL
  5. 确保私有源身份验证配置正确。

问题:

  1. 在此设置中可能导致 502 Bad Gateway 错误的原因是什么?
  2. 是否需要额外配置来保证负载 平衡器与 Wasabi S3 后端通信正确吗?
  3. 如何验证负载均衡器是否正确路由请求 到后端服务?

如果我可以提供更多背景信息,请告诉我。 任何有关解决此问题的指导将不胜感激。 谢谢!!

http amazon-s3 google-cloud-platform load-balancing wasabi
1个回答
0
投票

解决方案是将 NEG 切换到端口 80,因为它是 http 的默认端口 https://cloud.google.com/cdn/docs/external-backends-internet-neg-overview#specifying_an_external_backend

© www.soinside.com 2019 - 2024. All rights reserved.