文档章节

nginx+tomcat:负载均衡配置(使用粘性session)

yovinn
 yovinn
发布于 2015/12/31 16:02
字数 504
阅读 1815
收藏 28

(1)举个简单的例子,以tomcat为例,我们都知道session存在于服务器端,对于不是分布式部署,整个系统的session都会是这唯一的服务器来管理。这点   没问题。但是对于分布式部署来说,假设有tomcatA与tomcatB,但用户user访问系统时,通过负载均衡,此user访问了位于tomcatA上的应用。系统给此用户分配了一个session来标识用户身份,并返回sessionID给浏览器。这时user又向服务器发送个请求。假设这时候负载均衡到了tomcatB,但是此时tomcatB上并没有存有user相应的session信息。根据一般应用的设置,会提示user重新登录,试想下user就这样一直登录,一直被提示未登录,这样肯定行不通。这就是session保持的问题。

      解决session保持有几种方法,例如nginx自带的ip_hash模块,session复制,以及使用类似redis这种缓存数据库来实现对session的统一管理。在这里介绍的是粘性session;

      

     (2) 粘性session的概念:

                  用户在持续访问系统时,根据粘性session,仍会被分配到上一次访问的服务器中。

     (3)粘性session的配置:

                  1.给nginx添加 nginx_upstream_jvm_route 模块

                        下载: http://down.51cto.com/data/910451

                         安装 : 解压后,首先执行patch -p0 < /nginx_upstream_jvm_route/jvm_route.patch 补丁文件

                                     然后在./configure nginx时,–add-module=/nginx_upstream_jvm_route

                 2.配置nginx.conf

                     

         server 192.168.10.63:8081 srun_id=tomcat0;

            server 192.168.10.63:8088 srun_id=tomcat1;

            jvm_route $cookie_JSESSIONID|sessionid reverse; 

          

                3.配置tomcat

                   在<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat0">处,添加 jvmRoute="tomcat0";


                   注:此处的jvmRoute的值应同nginx.conf中的srun_id的值 相对应。

                 4.重新启动nginx与tomcat,配置完成

  (4)负载均衡优化配置

                

server 192.168.10.63:8081 srun_id=tomcat0 max_fails=3 fail_timeout=60s
            
            
            上面max_fails=3 fail_timeout=15s两个参数代表在15s,若有3次失败连接,则在下个15s内不再访问该服务器。


© 著作权归作者所有

共有 人打赏支持
yovinn
粉丝 1
博文 4
码字总数 2159
作品 0
海淀
程序员
加载中

评论(1)

仁江
仁江
启动提示nginx: [emerg] invalid parameter "srun_id=tomcat1"
但是我明明编译安装的时候已经加了这个模板进去了啊。
Nginx 配置实践

nginx 一般用作请求转发,用作服务器集群的负载均衡 典型的高并发集群是 nginx+tomcat(多个) nginx可以高效处理对静态文件的请求,tomcat 负责动态请求 配置范例: #user nobody;worker_pr...

HZCoder
2016/03/29
49
0
Nginx+Tomcat关于Session的管理

系列文章 Nginx+Tomcat关于Session的管理 Tomcat Session管理分析 Spring-Session基于Redis管理Session 前言 Nginx+Tomcat对Session的管理一直有了解,但是一直没有实际操作一遍,本文从最简...

ksfzhaohui
05/31
0
6
nginx+tomcat 使用教程

Nginx + Tomcat Nginx负载均衡,其实主要就是用upstream、server指令,再配以权重等等参数。如果为了让nginx支持session共享,还需要额外增加一个模块。 一、Nginx负载均衡 在http{...}中配置...

五大三粗
2015/05/20
0
0
负载均衡下,WEB集群session管理

通常状况下,在部署项目时,我们会考虑访问量过高带来的一系列问题,解决这个问题的一种做法是,使用WEB集群来分布式部署项目,即负载均衡。负载均衡可以通过软件,硬件等多种方式去实现。下...

yovinn
2015/03/10
0
6
tomcat apache session粘性配置和session复制配置

好早前配置了负载均衡和session复制,今天写出来备忘。 方案: 1、基于request的负载均衡 该种方式下,负载均衡器 (load balancer)会根据各个node的状况,把每个 http request进行分发。使用...

7哥
2016/07/14
31
1

没有更多内容

加载失败,请刷新页面

加载更多

shell学习之创建函数

函数是一个脚本代码块,你可以为其命名并在代码中任何位置重用。 在bash shell脚本中创建函数基本使用如下两种方式,第二种格式更接近于其他编程语言中定义函数的方式。 function name {com...

woshixin
17分钟前
1
0
Toolfk.com 程序员工具网上线

#前言 真不容易,用了一个月的业余时间才把这个网站(toolfk.com)做完。里面的内容主要是从github上找的开源码码,在线运行使用的是Docker运行。当然也是现成的。因为我现在对Docker还是不懂。...

hihubs
31分钟前
2
0
svn 常用操作命令及问题处理

1. 常用命令 1.1. 基本使用 检出 checkout ➜ svn co repo_url -m '检出代码'➜ svn co repo_url saved_dir_name -m '检出代码,并指定目录名' 加入版本控制 add # 添加指定文件➜ svn...

whoru
58分钟前
3
0
记一次jquery validate的扩展(第一次失去焦点时触发校验)

最近在用jquery.validate 做前端表单校验,但是发现每次第一次失去焦点时,如果文本框内容为空,且该字段是必填项, 则不会触发校验,直到提交表单后,再次失去焦点时,才会触发,想对此进行...

foreach
今天
1
0
java生成UUID

UUID介绍: UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以...

编程SHA
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部