You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一IP端口的请求会被AWS NLB转发至同一目标吗?如何实现Pod负载均衡?

问题解答

关于同一IP请求的转发行为

是的,AWS NLB默认采用源IP地址哈希的负载均衡策略,同一个客户端IP发起的所有请求都会被转发到同一个后端目标(即你的Pod)。你用ab工具测试时,所有请求都来自同一台测试机器的同一个IP,因此全部命中了同一个Pod。

调整实现多Pod负载均衡的方法

要让请求在多个Pod间均衡分发,需修改NLB关联的目标组负载均衡算法,具体通过给K8s Service添加对应注解实现:

  1. 修改Service配置,在metadata.annotations中添加目标组属性配置,指定轮询或最少未完成请求算法:

    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
        # 添加以下注解修改负载均衡算法
        service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: "load_balancing.algorithm.type=round_robin"
      name: my-nlb
      namespace: my-ns
    spec:
      ports:
        - name: webport
          port: 80
          protocol: TCP
          targetPort: 80
      selector:
        app: my-app
      type: LoadBalancer
    
    • 如果你的服务存在请求处理时间差异较大的场景,建议改用least_outstanding_requests(最少未完成请求)算法,能更合理地分配负载:
      service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: "load_balancing.algorithm.type=least_outstanding_requests"
      
  2. 重新应用配置,让EKS更新NLB的目标组设置:

    kubectl apply -f your-service-file.yaml
    # 或者直接重启Service
    kubectl rollout restart service/my-nlb -n my-ns
    
  3. 验证效果:再次用ab工具测试,此时同一IP的请求会被轮询(或按最少请求数)分发到不同Pod,实现多Pod间的负载均衡。


内容的提问来源于stack exchange,提问作者CY W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:33:17