【发布时间】:2021-02-03 19:46:18
【问题描述】:
目前,我们将请求通过 AWS 网络负载均衡器,然后传递到 AWS 应用程序负载均衡器。但是,我们正在尝试保留请求的原始 IP 地址,但这已被删除。我们正在尝试启用代理协议 v2,但这会导致错误。 AWS ALB 是否使用代理协议 v2?
【问题讨论】:
标签: amazon-web-services amazon-ec2 load load-balancing
目前,我们将请求通过 AWS 网络负载均衡器,然后传递到 AWS 应用程序负载均衡器。但是,我们正在尝试保留请求的原始 IP 地址,但这已被删除。我们正在尝试启用代理协议 v2,但这会导致错误。 AWS ALB 是否使用代理协议 v2?
【问题讨论】:
标签: amazon-web-services amazon-ec2 load load-balancing
AWS ALB 是否使用代理协议 v2?
不,它没有。代理协议仅适用于 NLB 和 CLB,因为它们在第 4 层运行(CLB 具有 TCP 侦听器)。ALB 是第 7 层,它使用X-Forwarded-For, X-Forwarded-Proto, and X-Forwarded-Port 来保存 IP 源信息。
【讨论】:
10.x 来自 NLB,而不是实际 IP 地址
从本文档看来,您是在目标群体中进行的: https://docs.amazonaws.cn/en_us/elasticloadbalancing/latest/network/elb-ng.pdf
具体来说: 使用新控制台启用代理协议 v2
甚至通过脚本(取自https://docs.cloudbees.com/docs/cloudbees-ci/latest/eks-install-guide/eks-prerequisites-helm-install),例如:
#!/bin/bash -eu
export AWS_PAGER=""
hostname=$(kubectl get -n ingress-nginx services ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].hostname}')
loadBalancerArn=$(aws elbv2 describe-load-balancers --query "LoadBalancers[?DNSName==\`$hostname\`].LoadBalancerArn" --output text)
targetGroupsArn=$(aws elbv2 describe-target-groups --load-balancer-arn $loadBalancerArn --query TargetGroups[\*].TargetGroupArn --output text)
for targetGroupArn in $targetGroupsArn; do
aws elbv2 modify-target-group-attributes --target-group-arn $targetGroupArn --attributes Key=proxy_protocol_v2.enabled,Value=true --output text
done
【讨论】: