集群内请求会话保持 本文为您介绍如何Serverless集群内请求会话保持。 背景信息 会话保持,有时也称为“粘性会话”(Sticky Sessions)。启用会话保持后,负载均衡会将来自同一客户端的访问请求持续分发到同一台后端云服务器上进行处理。简单来说,如果用户需要登录,就可以理解为会话;如果不需要登录,就可以理解为连接。 实际上,会话保持机制与负载均衡的基本功能是完全矛盾的。负载均衡的目标是将来自客户端的连接和请求均衡地转发至后端的多台服务器,以避免单台服务器负载过高;而会话保持机制则要求将某些请求转发至同一台服务器进行处理。因此,在实际的部署环境中,需要根据应用环境的特点选择适当的会话保持机制。 前提条件 确保您已经创建Serverless集群,具体操作请参阅创建Serverless集群。 确保kubectl工具已经连接目标集群。 确保您的Serverless集群群已安装CoreDNS插件。 操作步骤 不启用会话保持 步骤一:创建工作负载 创建一个nginx工作负载,并确保工作负载的实例个数大于1,部署2个副本,工作负载不需要其他的额外特殊配置。 1. 登录容器服务控制台,在左侧菜单栏选择“集群”。 2. 在集群列表页面,选择目标集群名称,然后在左侧菜单栏选择“工作负载”下的“无状态”,点击“创建deployment”。 也可以使用yaml创建工作负载,创建nginx工作负载参考如下: apiVersion: apps/v1 kind: Deployment metadata: name: nginxdeployment namespace: default spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: image: registryhuadong1.crsinternal.ctyun.cn/opensource/nginx:1.25alpine imagePullPolicy: Always name: nginx ports: containerPort: 80 protocol: TCP 步骤二:创建service服务 为nginx工作负载创建service,注意Session Affinity不需要设置,保持默认值即可。参考如下: apiVersion: v1 kind: Service metadata: name: nginxservice namespace: default spec: ports: port: 30003 protocol: TCP targetPort: 80 selector: app: nginx type: ClusterIP 步骤三:使用service域名访问前端应用实现负载均衡 进入任意pod容器内部,发起服务调用,使用service域名访问后端应用,在pod容器内部执行这个命令100次。 $for i in $(seq 1 100); do curl nginxservice.default:30003; done; 观察工作负载日志,查看Pod实例的日志输出。 可以看到服务请求会随机的转发到任一个Pod实例,实现了负载均衡。