Tomcat6+IIS6集成及Tomcat负载均衡与Tomcat集群配置
一、环境说明。
二、Tomcat6的负载均衡配置
找到:
<Server port="8005" shutdown="SHUTDOWN">
修改为:
<Server port="8006" shutdown="SHUTDOWN">
找到:
<Connector port="8080 protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改为:
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
找到:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改为:
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
按照同样方法,修改D:\server\tomcat-node2\conf\server.xml文件 ,修改结果如下:
<Server port="8007" shutdown="SHUTDOWN">
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node2">
启动2个tomcat,确认2个tomcat都启动成功。
注: 因为要启动2个Tomcat,所以不能设置CATALINA_HOME。
3、修改D:\server\tomcat-node1\conf\workers.properties文件(如果没有就创建该文件),在文件中写入:
# The advanced router LB worker
worker.list=router
# Define a worker using ajp13
worker.node1.port=8010
worker.node1.host=localhost
worker.node1.type=ajp13
worker.node1.lbfactor=1
# Define another worker using ajp13
worker.node2.port=8011
worker.node2.host=localhost
worker.node2.type=ajp13
worker.node2.lbfactor=1
# Define the LB worker
worker.router.type=lb
worker.router.balance_workers=node1,node2
worker.router.sticky_session=False #在集群环境中,将该值设置为False。
4、启动2个Tomcat,确认启动成功。完成Tomcat的负载均衡配置。
三、Tomcat6+IIS6集成配置
1、修改配置文件D:\server\tomcat-node1\conf\workers.properties,在该文件中增加如下配置:
workers.tomcat_home=D:\server\tomcat-node1
workers.java_home=C:\Program Files\Java\jdk1.6.0
ps=\
/*=router 该值要与workers.properties中的worker.list=router中的值相等
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0]
"log_file"="D:\\logs\\isapi.log"
"log_level"="error"
"worker_file"="D:\\server\\tomcat-node1\\conf\\workers.properties"
"worker_mount_file"="D:\\server\\tomcat-node1\\conf\\uriworkermap.properties"
"tomcat_start"="D:\\server\\tomcat-node1\\bin\\startup.bat"
"tomcat_stop"="D:\\server\\tomcat-node1\\bin\\shutdown.bat"
"extension_uri"="/jakarta/isapi_redirect-1.2.28.dll"
4、将下载来的jk文件:isapi_redirect-1.2.28.dll 复制到D:\server\tomcat-node1\conf\目录下。
5、打开IIS信息管理器,配置IIS,本文以默认网站为例。右键点击默认网站,选择“属性”,打开属性对话框。
6、打开默认网站的属性页,在“主目录”标签页中,将本地路径映射到“D:\server\tomcat-node1\webapps”目录,点击确定。
7、在“默认网站”上点击右键,选择“新建”->“新建虚拟目录...”,在弹出的对话框中点击“下一步”,填写别名为“jakarta”,点击 “下一步”,将路径设置为:D:\server\tomcat-node1\conf,再点击“下一步”,勾选“执行(如:ISAPI应用程序或 CGI)”,点击“下一步”,再点击“完成”。完成jk的虚拟目录配置。
8、新增“web服务器扩展”,扩展名随意取,如:Tomcat。在要求的文件中,添加D:\server\tomcat-node1\conf\isapi_redirect-1.2.28.dll文件,勾选“设置扩展状态为允许”。
9、完成整个配置。
10、重启IIS,Tomcat-node1,Tomcat-node2。在D:\server\tomcat-node1\webapps\ROOT\目录下,新建“test.jsp”文件,代码:
<%@ page import="java.util.*" %>
<%=new Date()%>
<% System.out.println("负载均衡了");%>
11、打开浏览器,输入:http://localhost/test.jsp,如果能看到当前时间,那么恭喜你,iis+tomcat配置成功。
刷新页面,刷新页面,会在2个Tomcat的控制台看到:“负载均衡了”字样。表明负载均衡配置成功。
12、Tomcat集群配置,进行全局的Session复制。
a)
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
使用默认的配置,会调用DeltaManager
进行Session复制,该类会将任何一个节点中添加的Session,同步复制到集群中其他的节点上。针对少量节点的集群,可以直接使用默认配置。
注:官网的集群的详细配置代码如下:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6">
<!--<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>-->
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<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="auto"
port="5000"
selectorTimeout="100"
maxThreads="6"/>
<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;"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
b)
<distributable/>
c) sticky_session属性,在上述的workers.propeties文件中最后增加如下配置:
worker.router.sticky_session=True
Set sticky_session to False when Tomcat is using a Session Manager which can persist session data across
multiple instances of Tomcat.
备注:如果ISAPI筛选器显示为红色向下箭头,以及“未加载”状态,分2步检查:
1、右键点击站点,选择“浏览”站点。让IIS加载筛选器。如果不成功,进入第二步。
2、更改isapi_redirect-1.2.28.dll文件的权限,之后给予这个文件EveryOne的读取+写入+执行的权限。
解决问题。