为AWS Application Load Balancer使用静态ips

时间:2019-11-09 16:26:40

标签: amazon-web-services amazon-ec2 load-balancing aws-application-load-balancer

我们的要求是

  1. 将静态IP分配给ALB,因为许多客户已将其列入防火墙白名单。
  2. “ X-Forwarded-For HTTP”标头应包含客户端IP地址,因为我们正在运行https://www.whatismyip.com/之类的服务,数千种IOT设备已经在使用该服务。

尝试以下解决方案,但它没有做#2,我们在X-FF中看到内部NLB ip而不是客户端IP https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/

那里是否有可以执行#1和#2的负载均衡器,或者AWS可以应要求实现此目的?任何帮助/指针,谢谢!

1 个答案:

答案 0 :(得分:0)

  

AWS Global Accelerator可让您将区域资源(例如负载均衡器和EC2实例)关联到两个静态IP地址。

     

https://aws.amazon.com/global-accelerator/

最初,Global Accelerator不会保留客户端的IP地址,但是随后的增强使其成为可能。

  

客户端IP地址保留

     

今天,我们宣布了AWS Global Accelerator的一项重要新功能。如果您将流量路由到应用程序负载平衡器,则用户客户端的IP地址现在可用于在端点上运行的代码。

     

https://aws.amazon.com/blogs/aws/new-client-ip-address-preservation-for-aws-global-accelerator/

使用此功能,X-Forwarded-For的行为是正确的,因为ALB看到了客户端IP。

这也有可能提高端到端性能,因为从Global Accelerator分配给您的静态地址是从Internet任意广播到Internet的AWS Edge Network上的许多边缘位置(全球服务CloudFront和尽管Global Accelerator并未直接使用其中任何一项服务,但Route 53仍处于活动状态;相比之下,其他一些边缘服务(例如S3 Transfer Acceleration和“ Edge Optimized” API Gateway实际上实际上是在使用CloudFront)。从边缘的入口开始,流量将AWS光纤带到ALB的区域,然后响应将返回边缘并返回到查看器,从而消除了公共Internet的某些可变性和可变性。

对于熟悉网络和NAT通常如何工作(并且受到限制)的那些人来说,此描述似乎是不可能和/或不可思议的,但秘诀在于通过称为Hyperplane的内部AWS服务与VPC网络的互连,这也允许网络负载平衡器和NAT网关通过地址转换和状态流来发挥其神奇作用。

这是通过正确的X-Forwarded-For处理在ALB外部具有静态IPv4地址的唯一官方方法,并且非常适合对静态地址有固定要求的环境,由于您外部的因素控制。

上面提到的“两个”静态地址用于冗余。将分配两个。您不一定要同时使用它们,但这是最好的选择。