使用nginx加载多个tomcat实现session共享(负载均衡)

需要用到:

  nginx 官网地址:http://nginx.org/ 来做反向代理  Windows版本下载地址:http://nginx.org/en/download.html

  tomcat 官网:http://tomcat.apache.org/ 

  memcached 官网:http://memcached.org/ 用memcached实现session共享

  •  tomcat集群

    以我的为例,我用的tomcat版本是 apache-tomcat-7.0.68

  1. 现将tomcat文件夹复制成多份(ps:命名为apache-tomcat-7.0.68_1、apache-tomcat-7.0.68_2……)
  2. 修改端口号,修改conf文件夹下的server.xml配置文件(以apache-tomcat-7.0.68_1为例)

    (1)、第一处端口修改

<!--  修改port端口:18888 两个tomcat不能重复,端口随意,别太小-->
<Server port="18888" shutdown="SHUTDOWN">
View Code

          (2)、第二处端口修改

<!-- port="28888" tomcat监听端口,随意设置,别太小 -->
<Connector port="28888" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
View Code

    (3)、第三处端口修改

<Connector port="8888" protocol="AJP/1.3" redirectPort="8443" />
View Code

  其他tomcat配置一样, 不同的tomcat的端口别重复,这样能保证启动起来。

  • nginx的安装与配置

  1、解压缩包(我的版本是稳定版1.8.1)

  2、打开conf打开nginx.conf进行配置(nginx作为前端反向代理服务器的配置),在#gzip on这句代码之后加上

<!--根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。  -->
<!--同一机器在多网情况下,路由切换,ip可能不同-->
upstream localhost {
        server localhost:8088 weight=1;
        server localhost:8888 weight=1;
    }
View Code

  可以修改端口号:listen 后面的数字保证端口号不能重复

 

  location的配置:

    3、启动nginx

    启动DOS环境,进入nginx的目录,输入start nginx 启动

 

如果更改了nginx.conf文件输入nginx -s reload 重新加载文件,再输入nginx -t看文件代码是否有问题,如出现上图所示则没有问题。然后再次start nginx启动nginx;

  4、验证配置与测试负载均衡

  首先测试nginx配置是否正确,测试命令:nginx -t  (默认验证:conf\nginx.conf),也可以指定配置文件路径。

  其次验证tomcat,启动两个tomcat,查看是否成功启动。

  这里我在tomcat下面布置了项目MyWebTest,启动tomcat后在浏览器输入地址,显示如下图:

  

  最后验证配置负载均衡设置,输入地址:http://localhost:86/MyWebTest/index.jsp,出现如下两种情况:

至此window下nginx+tomcat负载均衡配置结束,关于tomcat Session的问题通常是采用memcached;如果tomcat过多不建议session同步,server间相互同步session很耗资源,高并发环境容易引起Session风暴。请根据自己应用情况合理采纳session解决方案。

  • memcached的配置

  1、Memcached配置需要下载以下jar包并放在tomcat的lib目录下

  

   2、配置tomcat

  在tomcat中conf目录下的context.xml,在<Context>标签中加入以下代码即可

<!--n1:localhost:11211中的11211与memcached端口号一致(它的默认端口号为11211)-->
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"   
    memcachedNodes="n1:localhost:11211"   
    requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"   
    sessionBackupAsync="false"   
    sessionBackupTimeout="100"   
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   
    copyCollectionsForSerialization="false" />
View Code

   3、memcached的下载安装

    (1)如果你的机器是windows系统,需要从网上下载一个windows版本的

    (2)解压memcached安装包,启动DOS环境,进入memcached的目录,输入memcached.exe -d install命令安装memcached

    

    (3)、然后输入memcached.exe -s start启动memcached

    

    4、验证是否成功,session是否共享

    以下是我的部分测试代码:

    

     输入地址:http://localhost:86/MyWebTest/index.jsp查看是否达到预期效果。

 

    

posted @ 2016-03-03 15:14  十七呀  阅读(26695)  评论(1编辑  收藏  举报