如果请求来自相同的IP和端口,AWS NLB会将它们重定向到相同的目标吗?

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

我使用 AWS 网络负载均衡器作为我的部署的 k8s 服务。我使用 NLB 而不是 ALB 的原因是我需要一个静态主机来在 Elastic Kubernetes Service (EKS) 中公开我的服务。我部署的NLB使用的是这样的yaml:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
    service.beta.kubernetes.io/aws-load-balancer-type: external
  name: my-nlb
  namespace: my-ns
spec:
  ports:
    - name: webport
      port: 80
      protocol: TCP
      targetPort: 80
    selector:
      app: my-app
    type: LoadBalancer

问题是,当我使用 2 个副本进行部署时,并检查它们是否被 NLB 选择。我做了一些测试,例如:

ab -c 100 -n 3000 http://AWS-NLB-Hostname

似乎所有请求都发送到同一个 pod。

我知道NLB正在使用哈希进行负载平衡,这是否意味着它会将来自同一IP的所有请求加载到同一目标?如果是这样(或不是),我应该做什么来解决这个问题?

因为我的服务是无状态的,所以我希望所有请求在所有 Pod 之间保持平衡。

amazon-web-services kubernetes amazon-eks amazon-elb
1个回答
0
投票

我的猜测是,这正在按预期工作,并且您在 alb 上启用了会话粘性,或者 aws-load-balancer-controller 默认为会话粘性。

显然你可以通过使用强制 ip 来使用 ab 来验证这一点

enter image description here

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