您当前的位置:首页 > 计算机 > 系统应用 > Linux

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

时间:07-12来源:作者:点击数:

需要用到:

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">

(2)、第二处端口修改

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

(3)、第三处端口修改

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

其他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;
    }

可以修改端口号: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" />

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查看是否达到预期效果。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门