本例使用tomcat为服务器
1、新建两个服务器,命名为tomcat1和tomcat2
2、将web项目分别复制到tomcat1和tomcat2的webapps 目录下
3、修改tomcat1和tomcat2的server.xml文件
tomcat1:
(1)、 <Server port="8005" shutdown="SHUTDOWN"></Server>
修改server的port+10
<Server port="8015" shutdown="SHUTDOWN"> </Server>
(2)、 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改connector的port+10, redirectPort+10
<Connector port="8090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8453" />
(3)、<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改connector的port+10,redirectPort+10
<Connector port="8019" protocol="AJP/1.3" redirectPort="8453" />
tomcat2:
(1)、 <Server port="8005" shutdown="SHUTDOWN"></Server>
修改server的port+20
<Server port="8025" shutdown="SHUTDOWN"></Server>
(2)、<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改connector的port+20, redirectPort+20
<Connector port="8100" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8463" />
(3)、<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改connector的port+20,redirectPort+20
<Connector port="8029" protocol="AJP/1.3" redirectPort="8463" />
4、启动tomcat1和tomcat2
注意:如果系统环境变量中配置了CATALINA_HOME,则试图启动复制多份的tomcat,每次都会去启动 CATALINA_HOME目录下的tomcat,而不是去启动复制的tomcat,导致address会冲突。
解决方法:
方法一:
将环境变量中的 CATALINA_HOME删除
方法二:
修改tomcat1和tomcat2的startup.bat和shutdown.bat文件
将 if not "%CATALINA_HOME%" == "" goto gotHome 该句中的not去掉,
让 CATALINA_HOME 设置为当前tomcat的路径,而不是去找环境变量中的。
1、新建两个服务器,命名为tomcat1和tomcat2
2、将web项目分别复制到tomcat1和tomcat2的webapps 目录下
3、修改tomcat1和tomcat2的server.xml文件
tomcat1:
(1)、 <Server port="8005" shutdown="SHUTDOWN"></Server>
修改server的port+10
<Server port="8015" shutdown="SHUTDOWN"> </Server>
(2)、 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改connector的port+10, redirectPort+10
<Connector port="8090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8453" />
(3)、<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改connector的port+10,redirectPort+10
<Connector port="8019" protocol="AJP/1.3" redirectPort="8453" />
tomcat2:
(1)、 <Server port="8005" shutdown="SHUTDOWN"></Server>
修改server的port+20
<Server port="8025" shutdown="SHUTDOWN"></Server>
(2)、<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改connector的port+20, redirectPort+20
<Connector port="8100" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8463" />
(3)、<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改connector的port+20,redirectPort+20
<Connector port="8029" protocol="AJP/1.3" redirectPort="8463" />
4、启动tomcat1和tomcat2
注意:如果系统环境变量中配置了CATALINA_HOME,则试图启动复制多份的tomcat,每次都会去启动 CATALINA_HOME目录下的tomcat,而不是去启动复制的tomcat,导致address会冲突。
解决方法:
方法一:
将环境变量中的 CATALINA_HOME删除
方法二:
修改tomcat1和tomcat2的startup.bat和shutdown.bat文件
将 if not "%CATALINA_HOME%" == "" goto gotHome 该句中的not去掉,
让 CATALINA_HOME 设置为当前tomcat的路径,而不是去找环境变量中的。
5、修改nginx的配置文件nginx.conf
(1)、 在http节点上添加集群节点(名字随意)
upstream xxx_server{
server 127.0.0.1:8090;
server 127.0.0.1:8100;
}(2)、 修改server节点的location / 下的反向代理
新添加一个 proxy_pass http://xxx_server (此处的url为http节点上添加的集群节点名字)
location / {
...
proxy_pass http://xxx_server;
}
6、启动nginx访问web项目
http://localhost/项目名/....
7、session共享问题:
原因:由于tomcat1,tomcat2部署了同一个工程,如果有数据直接存在于session,而nginx会负载均衡到随机的服务器上 。如果在刷新页面时跳转到另外一个服务器,之前的服务器上的session则会消失,导致数据丢失。
解决方式1:
只能在windows下好使
web服务器解决(广播机制)
注意:tomcat下性能低
修改两个地方:
1.修改多个tomcat的server.xml 支持共享
将引擎标签<
Engine></
Engine>下的
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
注释去掉
2.修改项目的配置文件web.xml中添加一个节点<distributable />
解决方式2:
可以将session的id放入redis中
解决方式3:
保证一个ip地址永远的访问一台web服务器,就不存在session共享问题了,尤其在linux
在nginx的配置文件中的
upstream节点中添加 ip_hash;
upstream xxx_server{
server 127.0.0.1:8090;
server 127.0.0.1:8090;
server 127.0.0.1:8100;
ip_hash;
}
ip_hash;
====================打个广告,欢迎关注====================
QQ: | 412425870 |
csdn博客: | http://blog.youkuaiyun.com/caychen |
码云: | https://gitee.com/caychen/ |
github: | https://github.com/caychen |
点击群号或者扫描二维码即可加入QQ群: | ![]() |
![]() |