前言

对于后端应用来说,使用有效的负载分发策略,有利于客户端访问到准确、不间断的后端服务,而不至于出现访问无效、失真的情况

分发策略SessionAffinity

基于客户端IP地址进行会话保持/关联的模式,即第1次将某个客户端发起的请求转发到后端的某个Pod上,之后从相同的客户端发起的请求都将被转发到后端相同的Pod上

  • 补充
    Round-Robin:轮替模式,即将客户端请求代理到合适的后端合适的Pod上
解析

在这里插入图片描述

如上图所示,当Client第一次被代理到Backend Pod 1上,为了保证Client后续连接还是能够保证到Backend Pod 1上,需要采取的策略是SessionAffinity,当Client没有这个要求时,即可以随意被代理到某个Pod上,则需要采取的策略是Round-Robin,此策略为默认方式,可不进行配置

应用

需要在k8s的service资源上进行配置,示例如下:

apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: ops
spec:
  selector:
    app: myapp
  type: ClusterIP
  ports:
    - name: http
      protocol: TCP
      port: 8080
      targetPort: 8080
  sessionAffinity: ClientIP	#  配置sessionAffinity策略
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 3600	# 最大会话停留时间
结语

kubenetes documention
Kubernetes Load Balancer
github sessionAffinity example

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐