Windows下使用Nginx搭建集群及Session共存

Windows下使用Nginx搭建集群及Session共存:在一台电脑上安装两个tomcat,需要在一台电脑模拟:在E盘解压两个tomcat,分别命名为tomcat1,tomcat2.。

项目准备

新建项目

分别新建两个web项目(名字随意)

修改项目

分别修改javaweb项目默认index.jsp文件,如下图所示:

打包项目

分别将项目打包成war文件

修改tomcat的配置文件

tomcat1采用默认配置,tomcat2需要修改server.xml配置文件,避免端口冲突:



  
  
  
  
  
  
    
  
  
    
    
    
        
      

      
        

      
    
  

tomcat部署和启动

将两个war包分别放置到tomcat的webapps目录下,分别启动tomcat

下载和安装

下载

该实验使用nginx1.8.1

1.8.1下载传送门:http://nginx.org/download/nginx-1.8.1.zip
其他版本下载传送门:http://nginx.org/en/download.html

安装

解压nginx1.8.1到两个tomcat同级目录下,进入nginx1.8.1目录下,双击nginx.exe。
启动完以后访问http://localhost。

nginx默认启动端口是80,如访问http://localhost不能正常显示,Nginx服务有时起动不了了,原因是80端口为其它应用程序占用了,这时,我们需要查看是哪个程序占用了它,可能是IIS的某个站点,或者Tomat,Apache等,都有可能,所以,我们需要查看一下电脑80端口的使用情况,使用下面命令:netstat -aon|findstr “:80″
找到并关闭占用80端口的进程,再次重启。

配置Nginx:

修改nginx/conf/nginx.conf文件:

进入任务管理器,关闭nginx进程,打开多个浏览器,分别输入http://localhost/nginx-project1/,多次刷新查看效果,出现下图所示”tomcat2”则表示成功

不出现效果原因解决办法:给nginx代理服务器分配权重
upstream server_zakary{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8090 weight=2;
}
说明:weigth值越大,访问次数越多。如上配置,8090的权重为2,则表示假如有3次访问中,8090的访问次数可能为2

session共存

通常请求负载过程中要求会话信息不能丢失,因此要在多个tomcat中session需要共享。
配置Tomcat的session共享可以有三种解决方案:

1、以负载均衡服务器本身提供的session共享策略,每种服务期的配置是不一样的并且nginx本身是没有的。(在Linux下建议使用此方法)
2、利用web容器本身的session共享策略来配置共享。针对于weblogic这种方式还是靠普的。但是针对于tomcat这种方式存在很大的缺陷,主要因为是依靠广播方式来实现的session复制,会浪费很多带宽导致整个网络反映缓慢。官网也建议这种方式最好不要超过4台tomcat,具体的内容可参考/webapps/docs/cluster-howto.html里面有详细的说明。(只能在window下好使)
3、Tomcat集群+redis的Session共享配置方法。
注意:在Linux下建议使用方法1,放法2只能在window下好使

配置Tomcat中session的共享(方式1)

修改server.xml文件

修改两个tomcat的server.xml文件,最简单的集群配置只需要将节点中注释掉的下面这句取消注释即可

修改项目的web.xml文件

web.xml文件的修改很简单:只需要在节点中添加这个节点就可以了。
有了这二步就实现了Tomcat的集群和Session的共享,重启两个tomcat和nginx,观察tomcat运行日志输出,如发现以下日志则说明成功,从nginx反向代理服务器访问,留意多次刷新浏览器观察效果

配置Nginx中session的共享(方式2)

保证一个ip地址永远的访问一台web服务器,就不存在session共享问题了
方法:在nginx的配置文件nginx.conf中的upstream中添加 ip_hash