1.下载安装文件就不详细说了
安装版+
绿色版
2.顺序,本人安装的顺序
首先,2个tomcat的并行运行
然后跟Apache做负载均衡
第一步:tomcat解压,并复制一份
第二步:打开“ tc6_1 ”文件夹下“ conf ”文件夹下的“ server.xml ”文件以及“ tc6_2 ”文件夹下“ conf ”文件夹下的“ server.xml ”文件
要修改的地方:
—————————————分割线1号—————————————————————————
tc6_1:
<Server port="10005" shutdown="SHUTDOWN">
tc6_2:
<Server port="20005" shutdown="SHUTDOWN">
这是指,关闭tomcat调用的端口
—————————————分割线2号—————————————————————————
tc6_1:
<Connector port = " 10001 " protocol = "HTTP/1.1" connectionTimeout = "20000" redirectPort = " 10043 " />
tc6_2:
—————————————分割线3号—————————————————————————
tc6_1:
<Connector port = "10009" protocol = "AJP/1.3" redirectPort = "10043" />
tc6_2:
<Connector port = "20009" protocol = "AJP/1.3" redirectPort = "10043" />
—————————————分割线3号—————————————————————————
tc6_1:
<Engine name = "Catalina" defaultHost = "localhost" jvmRoute = " Tomcat1 ">
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name = "Catalina" defaultHost = "localhost">
-->
tc6_2:
<Engine name = "Catalina" defaultHost = "localhost" jvmRoute = " Tomcat2 ">
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name = "Catalina" defaultHost = "localhost">
-->
这里记得,名字不能变,不然tomcat跑步起来,报错
警告: Error registering contexts
java.lang.NullPointerException
at org.apache.catalina.connector.MapperListener.registerHost(MapperList
ner.java:332)
at org.apache.catalina.connector.MapperListener.init(MapperListener.jav
:129)
at org.apache.catalina.connector.Connector.start(Connector.java:1146)
at org.apache.catalina.core.StandardService.start(StandardService.java:
31)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:71
)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2014-12-10 20:56:47 org.apache.catalina.startup.Catalina start
信息: Server startup in 2848 ms
这个错误就是出在这个name的问题
—————————————分割线4号—————————————————————————
tc6_1:
<Cluster
className = "org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions = "8"
>
<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 = "4000"
autoBind = "100"
selectorTimeout = "5000"
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" />
</Channel>
<Valve className = "org.apache.catalina.ha.tcp.ReplicationValve" filter="" />
<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>
tc6_2:
<Cluster
className = "org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions = "8"
>
<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 = "4000"
autoBind = "100"
selectorTimeout = "5000"
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" />
</Channel>
<Valve className = "org.apache.catalina.ha.tcp.ReplicationValve"
filter = ""/>
<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>
这个配置内容主要是对集群中各个 Tomcat 实例间进行通信的方式、端口以及 Session 共享算法的设置。有兴趣的可以去看官方文档
分别在两个tomcat里,新建一个jsp文件
—————————————分割线6号—————————————————————————
配置系统环境变量
另外,分别修改两个tomcat下bin目录的startup.bat和catalina.bat文档内容
startup.bat:
在tomcat1中,把CATALINA_HOME改为CATALINA_HOME1
在tomcat2中,把CATALINA_HOME改为CATALINA_HOME2
catalina.bat:
在tomcat1中,把CATALINA_HOME改为CATALINA_HOME1,CATALINA_BASE改为CATALINA_BASE1。
在tomcat2中,把CATALINA_HOME改为CATALINA_HOME2,CATALINA_BASE改为CATALINA_BASE2。
这样就可以,分别运行tomcat1的startup.bat和tomcat2,在tomcat1 server startup,才运行tomcat2的startup.bat
在浏览器输入Http://localhost:10001/hello.jsp和Http://localhost:20001/hello.jsp
关于windows下,多个免装版tomcat运行问题,友链:
http://zwy20034751-163-com.iteye.com/blog/1960538
—————————————分割线6号—————————————————————————
接下来配置Apache,首先安装略过
打开httpd.conf
在该文件的最下面,添加下面文字
ProxyRequests Off
ProxyPass / balancer://myCluster/
<Proxy balancer://myCluster/>
BalancerMember ajp://localhost:10009 route=Tomcat1
BalancerMember ajp://localhost:20009 route=Tomcat2
</Proxy>
另外,在该文件搜索Proxy
如下图,去掉前面的#号
重启tomcat1和tomcat2,重启,Apache
在浏览器下输入:localhost/hello.jsp,负载均衡的效果就会出来
另附学习过程中遇到的问题
the requested operation has failed
这个提示是Apache跑不起来,
这里有个很好的友链:
http://www.jb51.net/article/21004.htm
修改80端口被占用问题
在httpd.conf文件里
在第一行加
ServerName localhost:81
并搜索Listen 把后面80改成81
—————————————最后的分割线—————————————————————————
以上是小弟学习过程及笔记,大部分内容来自网络
ps:遇到很多问题,找过很多资料,感谢春暖花开的教程