使用 AWS Loadbalancer 进行 HTTPS 和 SSH

Ner*_*erd 7 amazon-web-services amazon-elb gitlab aws-application-load-balancer

我计划在 AWS 上托管一个 GitLab 实例。我唯一的问题是前端负载平衡器。

对于 git 工作,我们需要 HTTPS 和 SSH,两者都使用相同的主机名。

  • 应用程序负载均衡器 (ALB) 支持使用 ACM 证书(我们需要)的 HTTPS 终止,但不支持 SSH 的 TCP 转发。
  • 网络负载均衡器 (NLB) 支持 TCP 转发,但对于 HTTPS 来说不是一个好的选择。
  • 可以选择使用 Classic Load Balancer,因为它支持 HTTP、HTTPS 和 TCP 侦听器,但我真的应该在 2021 年使用它吗?而且它也不支持 HTTP/2(如果有的话那就太好了)

我还考虑过在 NLB 后面级联一个 ALB:网络负载均衡器侦听 TCP 22、80 和 443,将 22 转发到 GitLab,将另外两个转发到执行 HTTPS 终止(以及 HTTP 到 HTTPS 重定向)的 ALB。需要使用 Lambda 进行复杂的设置来更新 NLB 目标组中的 ALB IP,如下所述:https: //aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-适用于应用程序负载均衡器/

有一个优雅的解决方案还是我必须使用经典负载均衡器?

Ner*_*erd 8

经过进一步阅读和尝试后,我得出的结论是我将使用经典负载均衡器。

理由:

  • 经典负载均衡器尚未正式弃用
  • AWS 在其文档中指出,支持 HTTP(S) 和 TCP 是选择经典负载均衡器的原因之一
  • 使用网络负载均衡器进行 HTTP(S) 终止和 TCP 是可能的,但网络负载均衡器不支持安全组(在我的情况下这是一个明确的要求)

编辑:

AWS 刚刚宣布他们现在支持 ALB 作为 NLB 的目标。借助此功能,级联两个负载均衡器的设置,以及 NLB 将 HTTP/HTTPS 转发到 ALB 的设置是更好的选择。

以下是 AWS 博客上的公告: https://aws.amazon.com/de/blogs/networking-and-content-delivery/application-load-balancer-type-target-group-for-network-load-balancer/