Ingress session sticky

使用 Kubernetes 实现负载均衡 Kubernetes 提供了灵活的负载均衡机制,从基础的。 阅读详情

service session sticky

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

ingress

  • 问题:为什么在ingress中不能使用上面service的session sticky。
  • 答案:因为ingress controller中配置的是POD的地址,不经过service,所以上面的service方式不生效。

Nginx Controller

https://kubernetes.github.io/ingress-nginx/examples/affinity/cookie/

Session affinity can be configured using the following annotations:

NameDescriptionValue
nginx.ingress.kubernetes.io/affinityType of the affinity, set this to cookie to enable session affinitystring (NGINX only supports cookie)
nginx.ingress.kubernetes.io/affinity-modeThe affinity mode defines how sticky a session is. Use balanced to redistribute some sessions when scaling pods or persistent for maximum stickyness.balanced (default) or persistent
nginx.ingress.kubernetes.io/session-cookie-nameName of the cookie that will be createdstring (defaults to INGRESSCOOKIE)
nginx.ingress.kubernetes.io/session-cookie-pathPath that will be set on the cookie (required if your Ingress paths use regular expressions)string (defaults to the currently matched path)
nginx.ingress.kubernetes.io/session-cookie-samesiteSameSite attribute to apply to the cookieBrowser accepted values are None, Lax, and Strict
nginx.ingress.kubernetes.io/session-cookie-conditional-samesite-noneWill omit SameSite=None attribute for older browsers which reject the more-recently defined SameSite=None value“true” or “false”
nginx.ingress.kubernetes.io/session-cookie-max-ageTime until the cookie expires, corresponds to the Max-Age cookie directivenumber of seconds
nginx.ingress.kubernetes.io/session-cookie-expiresLegacy version of the previous annotation for compatibility with older browsers, generates an Expires cookie directive by adding the seconds to the current datenumber of seconds
nginx.ingress.kubernetes.io/session-cookie-change-on-failureWhen set to false nginx ingress will send request to upstream pointed by sticky cookie even if previous attempt failed. When set to true and previous attempt failed, sticky cookie will be changed to point to another upstream.true or false (defaults to false)

You can create the example Ingress to test this:

bash-3.2$less ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-test
  annotations:
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/session-cookie-name: "route"
    nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
    nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"

spec:
  rules:
  - host: stickyingress.example.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /

bash-3.2$kubectl create -f ingress.yaml
验证

You can confirm that the Ingress works:

$ kubectl describe ing nginx-test
Name:           nginx-test
Namespace:      default
Address:
Default backend:    default-http-backend:80 (10.180.0.4:8080,10.240.0.2:8080)
Rules:
  Host                          Path    Backends
  ----                          ----    --------
  stickyingress.example.com
                                /        nginx-service:80 (<none>)
Annotations:
  affinity: cookie
  session-cookie-name:      INGRESSCOOKIE
  session-cookie-expires: 172800
  session-cookie-max-age: 172800
Events:
  FirstSeen LastSeen    Count   From                SubObjectPath   Type        Reason  Message
  --------- --------    -----   ----                -------------   --------    ------  -------
  7s        7s      1   {nginx-ingress-controller }         Normal      CREATE  default/nginx-test


$ curl -I http://stickyingress.example.com
HTTP/1.1 200 OK
Server: nginx/1.11.9
Date: Fri, 10 Feb 2017 14:11:12 GMT
Content-Type: text/html
Content-Length: 612
Connection: keep-alive
Set-Cookie: INGRESSCOOKIE=a9907b79b248140b56bb13723f72b67697baac3d; Expires=Sun, 12-Feb-17 14:11:12 GMT; Max-Age=172800; Path=/; HttpOnly
Last-Modified: Tue, 24 Jan 2017 14:02:19 GMT
ETag: "58875e6b-264"
Accept-Ranges: bytes

traefik Controller

https://docs.traefik.io/routing/providers/kubernetes-ingress/

kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
  name: myingress
  annotations:
    traefik.ingress.kubernetes.io/service.sticky.cookie: "true"
    traefik.ingress.kubernetes.io/service.sticky.cookie.name: foobar

spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /bar
            backend:
              serviceName: whoami
              servicePort: 80
          - path: /foo
            backend:
              serviceName: whoami
              servicePort: 80
负载均衡本质:五种调度算法的实战边界与失效场景 负载均衡是分布式系统流量治理的核心机制,其本质是在信息不完备条件下进行近似最优决策。它基于四层/七层网络模型,通过健康检查、算法选择(如Round Robin、Least Connections)、会话保持(Sticky Sessions)等环节实现请求分发。技术价值在于提升系统可用性、伸缩性与容错能力,支撑高并发场景下的稳定服务。典型应用场景包括Web服务接入、微服务通信、CDN边缘调度及数据库读写分离。然而,每种策略均有明确适用边界——例如Round Robin在异构节点下导致隐性不均,Least Co 阅读详情

相关推荐

Ingress基本故障排除方法

只需一个或者少量的公网IP和LB,即可同时将多个HTTP服务暴露到外网,七层反向代理。 可以简单理解为service的service,它其实就是一组基于域名和URL路径,把用户的请求转发到一个或多个service的规则。......

每天都要开心呀(#^.^#) 1623

负载均衡原理漫画解析:从算法本质到K8s生产落地

负载均衡是分布式系统的核心流量调度机制,其本质并非静态分发,而是基于连接状态、服务器负载与业务语义的动态决策过程。理解Round Robin的机械公平性、Least Connections的指标局限性,以及Sticky Sessions的状态绑定风险,是构建高可用架构的前提。现代实践已超越单一算法,转向多维指标加权(CPU、内存、延迟、自定义业务指标)与策略混合调度,并深度集成于Kubernetes Ingress、服务网格与可观测体系。本文结合广为传播的负载均衡原理漫画,以工程视角拆解算法人格化隐喻背后的

weixin_30552811的博客 329

Xilinx VU+系列多DIE FPGA时序约束与跨DIE信号优化策略

本文深入探讨了Xilinx VU+系列多DIE FPGA的时序约束与跨DIE信号优化策略。针对2.5D/3D封装技术带来的时序挑战,详细解析了SLR区域约束、Laguna寄存器配置及跨时钟域约束等关键技术,提供了实用的TCL脚本和RTL优化示例,帮助开发者有效提升设计性能和时序收敛效率。

weixin_29209801的博客 654

k8s ingress注解

k8s ingress注解

zlpzlpzyd的专栏 1353

Spring AI 实战:5 分钟搭建你的第一个 AI 应用(含完整代码)

能力关键 API适用场景基础对话简单问答、文本生成流式输出实时打字机效果@Bean模型需要调用外部工具结构化输出需要返回 Java 对象多轮对话聊天机器人场景Spring AI 让 Java 开发者可以用最熟悉的方式(Spring Boot + Maven)进入 AI 应用开发领域,不用学新语言,不用换框架,这是它最大的优势。但目前为止,我们的 AI 应用只能回答"它脑子里已有的知识"。如果让它读懂你自己的技术文档、公司内部知识库呢?这就是下一篇文章的主题——RAG(检索增强生成)实战。

qq_17204557的博客 644

编译CycloneDDS和CycloneDDS-CXX踩过的坑——CMake Error at CMakeLists.txt:227 (find_package):

最近编译CycloneDDS和CycloneDDS-CXX踩了两个坑,花了不少时间。做个简单的记录,免得以后又踩到。注意:CycloneDDS-CXX编译依赖CycloneDDS,因此必须先编译CycloneDDS需要严格按照步骤进行,否则要入坑步骤如下,1先编译CycloneDDS以上步骤完成CycloneDDS的编译和安装,生成的bin include lib等位于install目录下面。

usstmiracle的博客 1900

解决kubernetes中ingress-nginx配置问题

使用NGINXingresscontroller的好处就是对于nginx配置相对比较熟悉,性能也不差。相关nginx配置的对应的ingress可以在https上查到。httpshttps。

Jerry00713的博客 2487

ks-快手滑块验证码-Js逆向

本文分析了快手滑块验证码的破解过程。首先通过抓包找到验证码背景图接口,发现需要动态获取captchaSession参数。然后深入分析验证流程,发现verifyParam参数被加密处理,需要追踪其生成逻辑。文章详细解析了加密参数c的构成,包括captchaSn、滑动距离、轨迹信息等,并指出轨迹验证较为严格。最后通过对比浏览器和本地生成的加密值,确认加密逻辑正确,但指出轨迹生成仍需优化。作者建议参考相关文章深入分析轨迹逻辑,并提供了验证成功的截图作为参考。

2302_76420666的博客 1878

记一次酣畅淋漓的 K8s Ingress 排错过程(302,404,503,...)

记一次酣畅淋漓的 K8s Ingress 排错过程(302,404,503,...)

虫虫的博客 1952

UHPC的疲劳计算——兼论ModelCode2010的适用性

ModelCode2010的混凝土疲劳计算方法是适用于UHPC的。

George的博客 1324

IntelliJ IDEA 中git使用说明书

IntelliJ IDEA 中git使用说明书

junyang2012的博客 5389

k8s如何配置nginx请求头大小

annotations: kubectl.kubernetes.io/last-applied-configuration: > {“apiVersion”:“extensions/v1beta1”,“kind”:“Ingress”,“metadata”:{“annotations”:{“kubernetes.io/ingress.class”:“nginx”},“name”:“badouchain-dev”,“namespace”:“baas-develop-1”},“spec”:{“rules”:

富强说 2632

STM32F103 -- LIN从机通讯 -- 程序代码 -- 详细讲解版(2万字长文)

主要代码分为3个文件,usart文件是对GPIO端口和串口Lin模式的初始化,lin_buffer文件是对串口环形缓冲区的编写,lin_driver文件是Lin从机模式驱动代码。通过这三个文件的代码便可实现STM32F103的LIN从机通讯。

晴朗luo的博客 1万+

彻底解决K8s会话丢失问题:ingress-nginx Sticky Session配置指南

你是否遇到过用户登录状态频繁丢失、购物车数据异常、表单提交重复的问题?在Kubernetes集群中,这些现象往往与**会话保持(Sticky Session)**配置不当有关。本文将通过3个实战步骤+2个避坑指南,帮助你在15分钟内掌握ingress-nginx控制器的会话保持方案,确保用户请求稳定路由到同一后端Pod。 ## 什么是Sticky Session(会话保持) **Sticky ...

gitblog_00704的博客 640

Flink Gauss CDC:深度剖析存量与增量同步的创新设计

开发Flink Gauss CDC是为了适配华为自研GaussDB的特殊日志格式和逻辑复制机制,解决Flink CDC无法直接支持的问题,同时优化存量与增量同步的效率和一体化读取能力,满足GaussDB复合主键处理、数据落库等定制化需求,以实现高效、准确的数据同步。

数据与算法架构提升之路专栏 1985

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ingress-nginx会话保持:Sticky Session配置指南

在现代微服务架构中,应用通常部署为多个副本(Pod)以实现高可用性和负载均衡。然而,某些应用场景需要确保用户的连续请求始终路由到同一个后端实例,这就是会话保持(Sticky Session)的核心价值。 **典型应用场景包括:** - 购物车应用:用户添加商品到购物车后,需要确保后续请求都路由到同一个Pod - 用户会话状态:应用服务器维护的用户会话数据 - 文件上传:大文件分块上传需要保持连接...

gitblog_00338的博客 1156

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

常用部署环境 Sticky Session 配置操作文档

本文档介绍了Sticky Session(会话保持)的配置方法,适用于需要固定客户端请求路由的场景。主要内容包括:Nginx通过ip_hash或Cookie实现会话保持;HAProxy通过Cookie或HTTP Header配置;AWS ALB基于应用Cookie启用;阿里云ASM使用DestinationRule配置一致性哈希;Kubernetes Ingress通过注解实现;Cloud Foundry自动生成实例标识。文档还提供了验证方法和注意事项,推荐优先使用集中式Session存储或Token认证等

破烂PAN 的博客 869

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

k8s(二)、对外服务(Traefik部署/https/session sticky使用)

前言 在上文完成k8s集群搭建的基础上k8s(一)、1.9.0高可用集群本地离线部署记录,承接上文,本文简单介绍一下k8s对外暴露服务 拓扑图: 一、k8s对外暴露服务方式介绍 1.Load Blance 目前已经有很多主流的公有云平台已经都提供基于k8s服务的组件,工作的原理本质上是k8s的服务向云平台申请一个负载均衡器来对外服务。因此这种方式只适合在云平台内部使用,这里略...

ywq935的博客 7770

IngressController的session stick问题

周末爬坑,IngressController恢复因为镜像下载和版本问题折腾一下午,晚上终于折腾出个眉目。 首先,在Kubernetes的service中是可以设置Session Affinity的。例子如下: [root@k8s-master ~]# cat rc.yaml apiVersion: v1 kind: ReplicationController metadat...

weixin_30911809的博客 325

为什么92%的Docker 27集群在LB配置后仍出现会话粘滞失效?——资深架构师连夜复现的3个隐藏陷阱

揭秘Docker 27集群负载均衡配置中会话粘滞失效的根因,针对Kubernetes+Ingress/Nginx LB场景,指出Cookie路径、会话ID传播与健康检查超时3个隐藏陷阱。提供可验证复现步骤与修复配置,稳定性提升显著,值得收藏。

InitFlow的博客 312

Kubernetes Service 会话保持与客户端真实 IP 获取:原理、配置与陷阱

在 Kubernetes 集群中,Service 是承载流量分发与网络接入的核心抽象,它借助 kube-proxy 和 iptables/ipvs 规则,将请求转发至后端 Pod。然而,默认的负载均衡策略在追求无状态与高可用的同时,也带来了两个常被忽视的工程问题:会话保持缺失和客户端源 IP 丢失。前者导致登录态频繁失效,后者让后端无法基于真实地址做审计与限流。为了应对这些问题,Kubernetes 提供了 sessionAffinity 与 externalTrafficPolicy 两个关键控制器,分别

weixin_33146151的博客 218

TREK MCP限流与Session管理:4个关键配置项详解(完整指南)

**TREK** 是一个自托管的旅行规划器,内置实时协作、交互地图、预算、打包清单和 MCP(Model Context Protocol)集成,让你可以把 AI 助手直接连到自己的行程数据上。当 AI 客户端(如 Claude、Cursor)通过 MCP 接入 TREK 时,服务器需要限流来防止请求洪峰、用 session 管理来隔离每个用户的会话。本文详解 4 个关键环境变量配置项,帮你快速调

gitblog_00006的博客 758

Homepage 的 Kubernetes 集成实战:集群模式连接、自动服务发现与资源监控 Widget

Homepage 原生支持 Kubernetes 集群连接,允许在自建首页中实时展示集群节点状态、CPU/内存统计,并通过 Ingress、Traefik IngressRoute 或 Gateway API HttpRoute 注解实现服务自动发现。本文以仓库根目录的 [kubernetes.md](https://link.gitcode.com/i/502ddc25e1994e048e6fa

gitblog_00957的博客 291

现代负载均衡实战:从四层七层选型到云原生架构的优雅流量治理

负载均衡是分布式系统的核心基础设施,其核心原理在于将网络请求智能分发到多个后端服务器,以提升系统的可用性、扩展性与性能。从技术实现看,主要分为工作在传输层的四层负载均衡和深入应用层的七层负载均衡,前者基于IP和端口进行高效转发,后者则能解析HTTP等协议实现基于内容的精细路由。在云原生时代,负载均衡的价值进一步凸显,它通过健康检查、会话保持、一致性哈希等机制保障服务稳定性,并自然演进为Kubernetes Ingress和Service Mesh的流量治理基石。无论是应对突发流量高峰,还是实现蓝绿发布、金丝

weixin_30813225的博客 288

Nginx高性能配置与实战应用指南

Nginx作为高性能Web服务器和反向代理服务器,采用事件驱动的异步架构,能够高效处理高并发请求。其核心原理包括零拷贝技术、负载均衡算法和动态模块加载机制,显著提升Web服务的性能和可靠性。在工程实践中,Nginx广泛应用于静态资源服务、API网关、负载均衡等场景,特别适合高并发、低延迟要求的现代Web架构。通过合理配置worker进程、连接池和缓存策略,可以充分发挥Nginx的性能优势。本文结合生产环境案例,详细解析Nginx的核心配置、安全加固和性能调优技巧,帮助开发者构建稳定高效的Web服务。

weixin_30457551的博客 314
上一篇: MacOS安装kafka
下一篇: NPDP思维导图
正说杂谈
博客等级 码龄15年 30粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正说杂谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值