推荐:使用nginx sticky实现基于cookie的负载均衡

Nginx第三方模块---nginx-sticky-module的使用(基于cookie的会话保持) nginx在会话保持这方面比较弱,用ip_hash做会话保持有很大的缺陷,它是通过客户端ip来实现,根据访问ip的hash结果分配请求到后端的app服务器,负载不会很均匀。nginx-sticky-module这个第三方模块可以基于cookie实现会话保持。 阅读详情

在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接。使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端是CDN,或者说一个局域网的客户同时访问服务器,导致出现服务器分配不均衡,以及不能保证每次访问都粘滞在同一台服务器。如果基于cookie会是一种什么情形,想想看, 每台电脑都会有不同的cookie,在保持长连接的同时还保证了服务器的压力均衡,nginx sticky值得推荐。

如果浏览器不支持cookie,那么sticky不生效,毕竟整个模块是给予cookie实现的.

nginx sticky 模块工作流程图

ip_hash

nginx sticky

下载安装nginx sticky

下载地址:http://code.google.com/p/nginx-sticky-module/downloads/list
目前共有2个版本,一个是1.0,一个是1.1,1.0已经寿终正寝了.1.1增加了权重的参数.

安装nginx + sticky模块

配置nginx sticky

nginx 的upstream使用sticky,如下

配置虚拟主机(以下有配置的可以忽略掉)

备注:
nginx和apache不同,nginx每次安装一个新的模块都需要重新编译一次,编译完成之后将nginx这一个文件拷贝到sbin下面即可.我这边全新安装一次,因为公司在两年前就选择了这个nginx版本,也没打算去换,所以大家可以把nginx换成自己最合适的一个版本,不用完全跟着文章来安装.

重启nginx

测试nginx sticky

我后端是两台tomcat服务器,每台服务器的JESSIONED值都有特殊的标志。比如209这台是s209,225这台是s225.打开页面,不管怎么刷新JESSIONED值都是不变.但是如果开启了sticky,可以看到JESSIONED值不会发生变化.死死的粘滞在其中一台服务器上.测试图如下:

使用sticky的情况下,不管怎么刷新都是下面图

ip_hash

nginx sticky 模块

不使用nginx sticky模块,多刷几次就变了(有时候刷一次,有时候多刷几次,看概率,不过肯定会变),如下图

ip_hash

nginx sticky 模块

备注:每台后端真实服务器都会有一个唯一的route值,所以不管你真实服务器前端有几个装了sticky的nginx代理,他都是不会变化的. 这个cookie是会话方式的,所以你浏览器关闭了,服务器会给你重新分配一台服务器。

nginx sticky其他语法

nginx sticky expires用法

启用了过期,cookie如下截图,cookie1个小时才过期

ip_hash

nginx sticky expire用法

如下是不启用过期

ip_hash

nginx sticky 不启用expire

nginx sticky使用注意事项

nginx sticky模块不能与ip_hash同时使用

官方文档

https://www.nginx.com/resources/wiki/modules/?highlight=sticky%20cookie

Nginx sticky模块 实现基于cookie 的负载均衡 sticky 是一个nginx的第三方模块 它不在nginx发行版中 需要额外编译这个模块的, 它的思想就是不依靠后端生成cookie, 而是sticky在nginx这里生成cookie ,然后下发到客户端, 客户端收到cookie后 以后的请求带着这个cookie 就会通过这个cookie 进行hash 被一直定位到后端的某一台服务器了。 阅读详情

相关推荐

【K8S】Kubernetes 使用 Ingress-Nginx 基于 Cookie 实现会话保持的负载均衡

在现代微服务架构中,负载均衡是保证高可用的关键技术。然而,某些场景(如用户登录状态、购物车等)需要将同一用户的请求始终路由到同一个后端实例,会话保持(Session Affinity)成为关键需求。本文将介绍如何通过 Ingress-Nginx 的 Cookie 机制实现会话保持。 3. 配置基于 Cookie 的 Ingress 关键注解说明: (2) 获取 Ingress IP (3) 测试会话保持 (4) 使用 Nginx 取消域名的限制(仅推荐测试使用) 原理: 访问 Nginx 开放的端

qq_40205510的博客 1193

nginx 配置上游集群服务器会话保持 sticky

nginx会话保持之nginx-sticky-module模块在使用负载均衡的时候会遇到会话保持的问题,常用的方法有:1.ip hash,根据客户端的IP,将请求分配到不同的服务器上;2.cookie,服务器给客户端下发一个cookie,具有特定cookie的请求会分配给它的发布者,注意:cookie需要浏览器支持,且有时候会泄露数据。

yeyiguo的博客 1415

NGINX安装与负载均衡配置详解

本文深入解析了NGINX的安装过程以及如何配置基本的负载均衡。在Debian/Ubuntu系统中,通过APT工具安装NGINX,并使用GPG密钥验证仓库的完整性。在RedHat/CentOS系统上,通过YUM工具安装并配置防火墙开放HTTP端口。介绍了NGINX Plus的安装方法和验证安装的步骤。文章详细介绍了NGINX的文件结构、关键目录和命令,以及如何使用NGINX提供静态内容。最后,探讨了NGINX实现HTTP、TCP和UDP负载均衡的方式,包括负载均衡算法和NGINX Plus特有的Sticky

weixin_35592186的博客 1004

使用nginx sticky实现基于cookie的负载均衡【转】

在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接。使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端是CDN,或者说一个局域网的客户同时访问服务器,导致出现服务器分配不均衡,以及不能保证每次访问都粘滞在同一台服务器。如果基于cookie会是一种什么情形,想想看, 每台电脑都会有不同的coo...

weixin_30532837的博客 153

东方财富网股票API逆向分析:手把手教你破解动态参数(2024最新版)

本文详细解析了2024年东方财富网股票API的动态参数生成机制,包括回调函数、身份验证和时效控制参数的逆向工程方法。通过实战代码演示,帮助开发者破解动态参数,实现高效稳定的股票数据爬取,适用于金融数据分析和量化交易场景。

weixin_29091105的博客 1024

PyCharm安装PyQt5及工具(Qt Designer、PyUIC、PyRcc)详细教程来了

Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合。这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的所有工具包,主要内容包括PyQt5、PyQt5-tools的依赖包安装和Qt Designer、PyUIC、PyRcc三个工具的设置。最后简单演示了PyQt5的调用方式及三个工具的使用方法。

Python966的博客 3万+

NGINX基于Cookie和Header的负载均衡会话保持

Nginx是一个很高效稳定的软负载均衡器,最新的版本可以负载均衡HTTP(s),TCP,UDP等多种协议的链接。一般访问量比较大一点的Web站点都会用NGINX做HTTP协议的Web负载均衡,其后端一般是多个PHP或者JAVA中间件。另外NGINX还可以和Keepalived配合防止均衡器的单点故障,这一点要强于F5,A10这一类的硬件负载均衡设备。 但是F5,A10等硬件负载均衡器虽然价格昂贵

lvshaorong的博客 2万+

Anolis 8系统下,手把手搞定Nginx、Redis、JDK8和Tomcat9的完整安装与配置(含开机自启)

本文详细介绍了在Anolis 8系统下搭建Java Web全栈环境的完整流程,包括JDK8、Tomcat9、Nginx和Redis的安装与配置,并实现系统级服务管理。通过深入每个组件的配置细节,揭示服务间的协同关系,最终打造一个生产级可用的标准化环境。

weixin_42556197的博客 158

Nginx做负载均衡之后,每次请求JSESSIONID都发生变化

1、问题现象 第一次点击确定 第二次点击确定 第三次点击确定 2、问题出现原因: 首先服务器session对应的sessionId是放在cookie中保存的,而前端请求到后端时由于每个可以达到不一样的后端,因此后端获取到cookie中的JSESSIONID时可能在内存中找不到对应的session就会判定为session失效而重新创建session,这样就会生成新的sessionId放在cookie中,那样的话在session中保存的信息就会失效 3、Tomcat管理session机制

zongx的博客 6246

AJ-Report开源数据大屏存在远程命令执行漏洞

该平台可以通过post方式在validationRules参数对应值中进行命令执行,可以获得服务器权限,登陆管理后台接管大屏。如果被攻击者利用,危害后果十分严重。

swordheart的博客 387

海康机器人ID5000 系列智能读码器(三)

又過了兩個月,漸漸的對這個攝像頭的功能更加熟悉了,而實際上,我要做的功能也越來越複雜,從一開始的讀碼,到後來的通過讀二維碼控制設備,再到未讀到二維碼控制設備等,下面就對具體的細項做一個總結。了解完這些就能對ID5000這個設備,乃至很多海康的設備都能做一個二次開發。

qq_54359036的博客 3071

Nginx会话管理

如果你有任何疑问或想要分享的经验,请在评论区留言交流!

m0_61787196的博客 531

支付宝支付(三):周期扣款实现注意细节

一、周期扣款实现说明 1、官方文档入口:https://opendocs.alipay.com/open/20190319114403226822/intro 2、根据官方文档说明,周期扣款有两种方式:先签约后代扣场景和支付后签约场景 3、周期扣款接入问题文档: a>https://opendocs.alipay.com/support/01rg24 b>https://opensupport.alipay.com/support/knowledge/50249/20160248753

新鲜雾霾的博客 5697

nginx sticky 实现基于cookie 的负载均衡

sticky 是一个nginx的第三方模块 它不在nginx发行版中需要额外编译这个模块的, 它的思想就是不依靠后端生成cookie, 而是sticky在nginx这里生成cookie ,然后下发到客户端, 客户端收到cookie后 以后的请求带着这个cookie 就会通过这个cookie 进行hash 被一直定位到后端的某一台服务器了它比纯ip hash负载有个优点就是 纯 ip hash 像局域网内的访问ip 访问会导致ip倾斜它比 hash。

BASK2311的博客 2685

彻底解决tplink路由器无法访问部分https网站

彻底解决tplink无法访问部分https网站

renkai721的专栏 8762

基于STM32的智慧农业大棚监测与控制系统设计与实现

摘要:本文设计了一种基于STM32F103C8T6单片机的智慧农业大棚监测与控制系统,集成多参数环境监测、智能控制和远程管理功能。系统可实时采集光照、CO2、温湿度和土壤湿度等参数,通过OLED显示并采用双模式控制机制:自动模式下根据阈值调节设备,手动模式下支持APP或按键控制。通过ESP8266模块接入机智云平台实现数据云存储和远程控制。测试表明系统具有高精度(温度±0.5℃、CO2±50ppm)、快速响应(<2s)和稳定运行(30天无故障)等特点,有效解决了传统大棚调控不及时等问题。创新点包括多参

3254968421的博客 484

使用nginx sticky模块实现基于cookie的负载均衡

目录[-] 1、nginx sticky 模块工作流程图 2、下载安装nginx sticky 4、重启nginx 5、测试nginx sticky 6、nginx sticky其他语法 7、nginx sticky expires用...

chuangshuming1320的博客 203

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

使用nginx sticky实现基于cookie的负载均衡

为什么80%的码农都做不了架构师?>>> ...

weixin_34219944的博客 158

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Nginx使用sticky模块完成对Nginx的负载均衡

如果你有任何疑问或想要分享的经验,请在评论区留言交流!

m0_61787196的博客 363

使用nginx sticky实现基于cookie的负载均衡 – ttlsa教程系列之nginx

使用nginx sticky实现基于cookie的负载均衡 – ttlsa教程系列之nginx 2013年7月30日凉白开发表评论阅读评论 加入收藏 | 收藏本站 在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接。使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端是CDN,或

lantian0802的专栏 1011
上一篇: Nginx和Apache配置日志格式记录Cookie
下一篇: 推荐:Nginx 会话黏着一致性解决
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值