如何以高可用性的方式将静态 IP 地址与应用程序负载均衡器结合使用?

如何以高可用性的方式将静态 IP 地址与应用程序负载均衡器结合使用?

我正在监督客户的集成,他们的供应商需要将一些 IP 地址列入白名单。原始服务器是一个 Elastic Beanstalk 实例,前面是应用程序负载均衡器,所有配置都通过 Route53 进行。

这是行不通的,因为根据定义你不能给应用程序负载均衡器分配静态 IP(而我确实需要第 7 层功能)。

我不能仅通过代码和额外的 EC2 实例将特定请求代理给供应商,因为它是双向集成。

我已经读完了本文,但坦率地说,这似乎是一种黑客行为,而不是我在生产环境中会做的事情。

看起来我确实需要 NLB 与 ALB 的某种组合,但同样,参考文章介绍了大量活动部件。

编辑

  • 我正在使用 VPC
  • 实例本身位于私有子网中
  • ALB 位于公共子网中,并且两者都具有通信所需的路由
  • 我几乎可以肯定,我正在绕圈子试图说服自己Static IP !== Single Point of Failure

答案1

目前只有一种方法可以将静态 IP 地址与应用程序负载均衡器 (ALB) 关联 - AWS Global Accelerator。

静态任播 IP – Global Accelerator 使用静态 IP 地址作为您在任意数量的 AWS 区域中托管的应用程序的固定入口点。这些 IP 地址是来自 AWS 边缘站点的任播,这意味着这些 IP 地址是从多个 AWS 边缘站点公布的,从而使流量能够尽可能靠近您的用户进入 AWS 全球网络。您可以将这些地址关联到区域 AWS 资源或终端节点,例如网络负载均衡器、应用程序负载均衡器和弹性 IP 地址。在修改或替换终端节点时,您无需进行任何面向客户端的更改或更新 DNS 记录。

https://aws.amazon.com/blogs/aws/new-aws-global-accelerator-for-availability-and-performance/

Global Accelerator 从两个网络区域¹分配两个静态 IP,这些 IP 是您的部署所独有的,而不是共享的。这些 IP 通过 AWS 边缘网络(CloudFront、Route 53 和 S3 Transfer Acceleration 都运行的同一网络 - 它拥有比 AWS 区域更多的接入点,以及 AWS 管理的到区域的光纤连接)上的多个位置的对等连接向 Internet 公布。然后,您将终端节点(ALB、NLB、EIP 或 EC2 实例(无 EIP))与 Global Accelerator 实例关联,请求到达的边缘位置的流量将通过 NAT 发送到您的均衡器。

Global Accelerator 最初推出时,依靠源 NAT 将全局地址绑定到 VPC 设备,因此您无法使用客户端源 IP 或X-Forwarded-For来自 ALB 的标头来实时确定客户端 IP 地址;但是,已经改变--X-Forwarded-For当 ALB 与 Global Accelerator 一起使用时,现在可以正确识别客户端 IP 地址在大多数 AWS 区域

客户端IP地址保存仅起作用当端点是 ALB 或 EC2 实例(没有 EIP)时。它不适用于 EIP 端点或网络负载均衡器;对于这些情况,您只能稍后使用以下方法进行交叉关联流日志,它捕获源/目标元组以及应用程序将看到的中间 NAT 地址。


重要的是,ALB 仅支持入站(无论数据传输的最终方向如何,连接都只能从外部到内部建立),因此如果您的服务器也在发起连接,则需要单独的静态源地址解决方案——NAT 网关

每个可用区一个 NAT 网关,放置在公共子网上,可用作可用区内一个或多个私有子网的默认网关,以便这些子网上的所有实例在连接 Internet 时使用相同的源 IP。NAT 网关不是物理位置的黑匣子 - 它是网络基础设施的一个功能,因此它本质上是故障安全的,不被视为单个可用区内的单点故障。您可以跨可用区共享单个 NAT 网关,但如果该可用区发生灾难性事件,则确实存在单点故障(与在每个可用区放置一个 NAT 网关相比,您需要支付更多费用来跨可用区边界传输 Internet 流量)。NAT 网关不需要更改应用程序,因为它不是代理 - 它是一个网络地址转换器,对于配置为使用它的子网上的实例是透明的。每个 NAT 网关都有一个静态 EIP。


¹网络区域新的 AWS 术语,由 Global Accelerator 引入。它描述了两个 IP 地址在内部由不同的基础设施处理的事实。

答案2

这很令人沮丧,因为没有好的方法来做到这一点,特别是如果你正在为一个网站提供服务,并且想知道谁访问了你的网站,

选项 1:AWS Global Accelerator - 它可以工作但会剥离客户端 IP,因此您无法了解人们来自哪里。

选项 2:这个非常晦涩的方法: https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/ 简而言之,这需要 ELB 和 ALB 等,这会破坏流程中的某些功能并需要采取严厉的方法。

截至 2019 年 5 月,这些是主要实现方法。

相关内容