EKS 上的 AWS 负载均衡器控制器 - 粘性会话不起作用

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

我已在 AWS EKS 上部署了 AWS 负载均衡器控制器。我已经创建了 k8s Ingress 资源 我正在使用 k8s 部署部署 java web 应用程序。我想确保粘性会话保持以使我的应用程序正常工作。

我已经读过如果我设置以下注释,那么粘性会话将起作用:

alb.ingress.kubernetes.io/target-type: ip

但我看到 ingress 每次都会将请求路由到不同的副本,因为会话 cookie 不持久,导致登录失败。

我在这里缺少什么?

amazon-web-services kubernetes-ingress amazon-eks aws-application-load-balancer
3个回答
5
投票

alb.ingress.kubernetes.io/target-type: ip
为必填项。

但是启用粘性的注释是:

alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true

您还可以设置

cookie_duration_settings

alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=300

0
投票

如果您想从 K8s 级别管理摇杆会话,您可以使用,

sessionAffinity: ClientIP

kind: Service
apiVersion: v1
metadata:
  name: service
spec:
  selector:
    app: app
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80
  sessionAffinity: ClientIP
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 10000

0
投票

添加一个快速注释,虽然显然是可能的,但如果您依赖 EKS 中的粘性会话,您可能应该重新评估应用程序的实现。 Pod 可能随时被杀死并重新创建,无论粘性与否,您的 cookie 都会消失。是的,它在大多数情况下都可以工作,也许这已经足够好了,但是您可能应该将您关心的任何内容外部化到其他存储/数据库/redis 等上

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