nginx+tomcat:负载均衡配置(使用粘性session)
博客专区 > yovinn 的博客 > 博客详情
nginx+tomcat:负载均衡配置(使用粘性session)
yovinn 发表于2年前
nginx+tomcat:负载均衡配置(使用粘性session)
  • 发表于 2年前
  • 阅读 1389
  • 收藏 27
  • 点赞 1
  • 评论 1

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: nginx配置负载均衡

(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内不再访问该服务器。


共有 人打赏支持
粉丝 2
博文 4
码字总数 2159
评论 (1)
仁江
启动提示nginx: [emerg] invalid parameter "srun_id=tomcat1"
但是我明明编译安装的时候已经加了这个模板进去了啊。
×
yovinn
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: