nginx+tomcat7+session复制 负载均衡
1、安装nginx
去官网下载nginx 本文是下载的windows版本的
2、nginx配置反向代理、并且配置均衡策略
upstream loadtest { # 负载均衡站点的名称为tomcat,可以自己取
#ip_hash; # 可选,根据来源IP方式选择web服务器,省略的话按默认的轮循方式选择web服务器
server 127.0.0.1:8080; # web服务器的IP地址及tomcat发布端口
server 127.0.0.1:9090;
server 127.0.0.1:8088;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
#index index.html index.htm;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass http://loadtest; # 负载均衡指向的发布服务tomcat
}
#ip_hash; # 可选,根据来源IP方式选择web服务器,省略的话按默认的轮循方式选择web服务器
server 127.0.0.1:8080; # web服务器的IP地址及tomcat发布端口
server 127.0.0.1:9090;
server 127.0.0.1:8088;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
#index index.html index.htm;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass http://loadtest; # 负载均衡指向的发布服务tomcat
}
3、修改tomcat的server.xml
- web1服务器tomcat1:vi tomcat1/conf/server.xml(修改如下四个地方:)
12345
<
Server
port
=
"8005"
shutdown
=
"SHUTDOWN"
>
<!--'8005'改为'8001'端口-->
<
Connector
port
=
"8080"
protocol
=
"HTTP/1.1"
>
<!--'8080'发布端口改为'81'端口-->
<
Connector
port
=
"8009"
protocol
=
"AJP/1.3"
redirectPort
=
"8443"
/>
<!--改为'8011'端口-->
<!--Engine name="Catalina" defaultHost="localhost"-->
<
Engine
name
=
"Catalina"
defaultHost
=
"localhost"
jvmRoute
=
"tomcat1"
>
- web1服务器tomcat2:port:8002, http:82, ajp:8012, jvmRote:tomcat2
- web1服务器tomcat3:port:8003, http:83, ajp:8013, jvmRote:tomcat3
- web1服务器tomcat4:port:8004, http:84, ajp:8014, jvmRote:tomcat4
4、配置tomcat的session复制
1.修改tomcat的sever.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2" >
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="10.10.12.11"
port="5002"
selectorTimeout="100" />
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="10.10.12.11"
port="5002"
selectorTimeout="100" />
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
2.修改tomcat的 web.xml
<distributable /> <!--在倒数第二行增加这个代码才能实现session同步复制功能-->
5、修改被部署的项目工程的 D:\LoadBalance\tomcat7-1\webapps\ABCTool\WEB-INF 目录下 web.xml文件
也要新增节点(不然session无法完成复制)
<distributable/>