`
wbj0110
  • 浏览: 1598241 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

关于Nginx session sticky

阅读更多

Nginx以前对session 保持支持不太好,主要采用ip_hash把同一来源的客户(同一C段的IP)固定指向后端的同一台机器,ip_hash有个缺点是不能实现很好的负载均衡;直到nginx的扩展模块nginx-sticky-module的出现,解决了session sticky的问题。

基本的原理:

首先根据轮询RR随机到某台后端,然后在响应的Set-Cookie上加上route=md5(upstream)字段,第二次请求再处理的时候,发现有route字段,直接导向原来的那个节点。

 

配置说明:

upstream cluster_test {

    sticky[name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1][no_fallback];

   server 192.168.100.209:80;

   server 192.168.100.225:80;

}

name: 可以为任何的string字符,默认是route

domain:哪些域名下可以使用这个cookie

path:哪些路径对启用sticky,例如path/test,那么只有test这个目录才会使用sticky做负载均衡

expirescookie过期时间,默认浏览器关闭就过期,也就是会话方式。

no_fallbackup:如果设置了这个,cookie对应的服务器宕机了,那么将会返回502bad gateway 或者 proxy error),建议不启用。

 

Nginx编译

添加nginx_upstream_check_module

unzipnginx_upstream_check_module-master.zip

tar -zxf nginx-1.5.6.tar.gz

cd nginx-1.5.6

patch -p1 <../nginx_upstream_check_module-master/check_1.2.6+.patch

添加nginx-sticky-module,编译安装Nginx

tar -xzf nginx-sticky-module-1.1.tar.gz

cd nginx-1.5.6

./configure--prefix=/opt/lsmp/3rdparty/nginx/1.5.6 --with-http_stub_status_module--with-http_ssl_module --with-openssl=../openssl-1.0.1c--with-http_realip_module --add-module=../nginx-sticky-module-1.1--add-module=../nginx_upstream_check_module-master

make

make install

注意事项

nginx-1.5.xnginx-sticky-module-1.1编译会有点问题,应该是nginx新版本没有相应的nginx-sticky-module,解决办法是把nginx-sticky-module-1.1/ngx_http_sticky_misc.c281行修改为:

digest->len = ngx_sock_ntop(in,sizeof(struct sockaddr_in), digest->data, len, 1);

由于编译需要,编译安装Nginx之前,要先安装openssl

nginx-sticky-module的cookie过期时间,默认浏览器关闭就过期,也就是会话方式。

分享到:
评论

相关推荐

    nginx-sticky-module-ng-1.2.6.tar.gz

    **Nginx Sticky Module Ng 1.2.6 源码分析与应用** Nginx 是一款高性能、轻量级的 HTTP 和反向代理服务器,广泛用于网站部署和负载均衡。在某些应用场景中,例如在线购物车、游戏服务器或者需要保持用户会话一致性...

    nginx-1.10.3.tar.gz、nginx-sticky-module-1.1.tar.gz 实现session粘性共享

    包括nginx-1.10.3.tar.gz、nginx-sticky-module-1.1.tar.gz、zlib-1.2.8.tar.gz、openssl-1.0.1c.tar.gz、pcre-8.21.tar.gz以及按照过程可能的错误解决发法

    nginx-sticky 不报错版

    **Nginx与 Sticky 模块** Nginx 是一款高性能、轻量级的 Web 服务器和反向代理服务器,广泛应用于网站高并发场景。它以其事件驱动的架构和非阻塞I/O模型,提供了出色的性能和稳定性。而 `sticky` 模块是 Nginx 的一...

    Ubuntu下nginx1.6和sticky1.1安装配置资料 包

    在Ubuntu 14.04.2操作系统上安装和配置Nginx 1.6以及Sticky模块是一项关键的任务,特别是在构建高可用性和负载均衡的Web服务器环境时。以下是对这个主题的详细解释: 首先,Nginx是一个高性能的HTTP和反向代理...

    nginx-sticky-module-1.26

    **Nginx Sticky Module详解** `nginx-sticky-module-1.26` 是一个专为 Nginx 设计的负载均衡模块,它的主要功能是在负载均衡策略中保持客户端请求的会话持久性。这个模块在分布式系统中尤其有用,它可以确保来自...

    nginx-sticky

    **Nginx Sticky 插件详解** 在高并发的网络服务环境中,负载均衡是一个至关重要的概念,它能够将用户请求合理地分散到多台服务器上,以提高系统的可用性和响应速度。然而,有些应用场景需要保持会话持久性,即来自...

    nginx实现多个tomcat7直接session共享所需jar包

    标题中的“nginx实现多个tomcat7直接...以上就是关于“nginx实现多个tomcat7直接session共享所需jar包”的详细解释,包括了Session共享的背景、原理以及可能的实现方法。希望这些信息能帮助你理解和解决实际问题。

    nginx配置session+memcached所需jar包

    总结来说,实现Nginx、Tomcat集群与Memcached的Session共享,需要正确配置Nginx的反向代理设置,引入并配置Tomcat的Memcached Session Manager,以及确保所有必要的jar包已经正确安装。这一过程虽然涉及多个环节,但...

    tomcat+nginx+session

    标题 "tomcat+nginx+session" 暗示了我们讨论的主题是关于使用Tomcat作为应用服务器,Nginx作为反向代理服务器,并且涉及到如何在这样的架构中处理和共享用户会话(session)。在分布式系统中,正确处理session是...

    nginx+tomcat+redis服务器集群session共享

    Nginx在分发请求时,可以通过粘滞会话(sticky session)策略确保来自同一用户的请求总是被转发到同一个Tomcat实例,从而保持session的一致性。 **实现步骤**: 1. **安装与配置Redis**:首先在集群的所有节点上...

    session共享 tomcat+nginx+memcache

    5. **Nginx配置**:在Nginx的配置文件中,你可以使用`ip_hash`或`sticky`模块来基于用户的IP地址或特定cookie保持会话粘滞,确保同一用户的请求始终路由到同一台Tomcat服务器,以减少Session同步的需求。 6. **测试...

    Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理

    在 Session 处理方面,文章介绍了使用 nginx-sticky-module 模块来实现 Session 处理,并使用 nginx_upstream_check_module 来检测网络连接。 在配置过程中,文章详细介绍了安装 JDK、JBOSS、Nginx、VirtualBox 等...

    tomcat7 + redis + nginx 实现session共享的jar包

    同时,Nginx还可以协助实现session粘滞(sticky sessions),即确保来自同一用户的请求始终被路由到同一个Tomcat实例,从而避免了session同步的问题。 4. Session共享实现:在Tomcat中,可以通过配置`Context`元素...

    nginx-upstream-jvm-route nginx共享Session

    7. **其他Session共享策略**:除了上述的Nginx-upstream-jvm-route,还可以使用如 sticky sessions(基于Cookie的粘滞会话),通过在客户端保存特定的服务器标识来实现Session的保持;或者利用外部存储如Redis、...

    Tomcat+memcached+Nginx实现session共享

    - **配置Nginx**:在Nginx的配置文件中设置负载均衡策略,可以实现基于session的会话粘滞性(sticky session),确保同一用户请求始终被转发到处理其session的特定Tomcat实例。 3. **安装指南**: - **安装...

    nginx+redis实现session共享

    1. 配置Nginx:在Nginx的配置文件中,我们需要设置反向代理规则,将所有需要session共享的请求指向同一组后端服务器,并开启session亲和性(sticky session),确保用户的后续请求始终被发送到最初处理登录请求的...

    Nginx+tomcat 实现负载均衡session共享demo

    2. ** Sticky Session**:`Nginx`配置中启用`sticky`,使用户请求始终定向到同一台服务器,保证`session`不会丢失。但这不适用于服务器故障情况。 3. **Session Replication**:在`Tomcat`集群间复制`session`数据。...

    nginx+iis+redis搭建的站点来解决session一致性的解决方案.docx

    本文主要介绍了一种使用`nginx`、`IIS`和`Redis`来解决多站点间Session一致性问题的技术方案。`Redis`是一种高效、轻量级的内存数据结构存储系统,常被用作分布式环境下的Session存储。以下是详细步骤和相关知识点:...

    Windows+Nginx+Tomcat做负载均衡同时实现session共享Demo

    另一种方法是利用Nginx的sticky模块,让特定的用户请求始终被转发到同一台服务器,从而保持session的连续性。 在Nginx配置中启用sticky模块示例: ```nginx http { upstream tomcat_cluster { ip_hash; # 使用IP...

Global site tag (gtag.js) - Google Analytics