- 可以提高整体web服务器性能,将动态页面交给tomcat处理,将静态文件交给apache处理,可以大大提高服务器的静态文件处理性能。
- 可以实现web服务器的负载均衡,服务器可采用集群的方式来响应客户端请求。Apache的作用是做代理,将请求分发给各个tomcat处理,tomcat作为集群服务器处理请求。这样可以提高整体web服务器性能和访问量。
- 可以实现无缝升级应用程序和容错处理,在tomcat集群中如果有一个tomcat挂掉了,用户还可以通过其他tomcat来进行访问,同时如果我们想升级应用程序,我们可以通过升级每个tomcat的应用程序来实现升级,在升级的过程中不会影响web服务器的访问。
- 高可用集群(High Availability Cluster/HA):一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。常见的就是2个节点做 成的HA集群,有很多通俗的不科学的名称,比如"双机热备", "双机互备", "双机",高可用集群解决的是保障用户的应用程序持续对外提供服 务的能力。
- 负载均衡集群(Load Balance Cluster):负载均衡集群运行时一般通过一个或者多个前端负载均衡器将工作负载分发到后端的一组服务器上,从而达到将工作负载分发。这样的计算机集群有时也被称为服务器群(Server Farm)。一般web服务器集群、数据库集群 和应用服务器集群都属于这种类型。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器 上。从检查其他服务器状态这一点上 看,负载均衡和容错集群很接近,不同之处是数量上更多。
- 高性能计算集群(High Performance Computing Cluster/HPC):高性能计算集群采用将计算任务分配到集群的不同计算节点而提高计算能力,因而主要应用在科学计算领域。这类集群致力于提供单个计算机所不能提供的强大的计算能力。
- 配置JDK环境:本文选择使用Jdk1.7版本(配置jdk环境不需要过多阐述),在磁盘里新建一个httpd文件夹,在httpd下面新建Apache HTTP文件夹。
- 下载Apache服务器:这个是负载均衡服务器,用来转发请求到不同的tomcat上,下载完成后再安装到httpd目录下。Apache安装完成后在浏览器中输入http://localhost/ ,如果出现It works! 则证明安装成功。下载地址为:http://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.msi
- 下载tomcat:下载好解压出来两份命名为tomcat1和tomcat2 放到httpd下面。下载地址为:http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.zip
- 下载mod_jk:这个是用来搭建tomcat集群的插件。下载好,放到D://httpd/Apache HTTP/modules 下面,下载地址为: http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/mod_jk-1.2.31-httpd-2.2.3.so
- 配置mod_jk.conf:新建文件mod_jk.conf 放到目录D://httpd/Apache HTTP/conf 下面,输入内容为: #加载mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
#指定workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /* controller - 配置workers.properties:新建文件workers.properties,放到目录D://httpd/Apache HTTP/conf 下面,输入内容如下: #server
worker.list = controller
#========tomcat1========
#ajp13端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.port=8009
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.host=localhost
#协议类型
worker.tomcat1.type=ajp13
#server的加权比重,值越高,分得的请求越多。lbfactor是负载平衡因数(Load Balance Factor)
worker.tomcat1.lbfactor=1
#========tomcat2========
worker.tomcat2.port=9009
worker.tomcat2.host= localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#========controller,负载均衡控制器========
#负载均衡控制器类型,lbfactor是负载平衡因数(Load Balance Factor)
worker.controller.type=lb
#指定分担请求的tomcat列表
worker.controller.balanced_workers=tomcat1,tomcat2
#粘性session(默认是打开的) 当该属性值=true(或1)时,代表session是粘性的,即同一session在集群中的同一个节点上处理,session不跨越节点。在集群环境中,一般将该值设置为false
worker.controller.sticky_session=false
#设置用于负载均衡的server的session可否共享 1为共享
worker.controller.sticky_session_force=1- 修改httpd.conf文件:文件在D://httpd/Apache HTTP/conf 下面,在文件的末尾新增下面这句话:Include conf/mod_jk.conf
- 配置tomcat:修改文件D://httpd/tomcat1/conf/server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
jvmRoute 为你这个tomcat的名字,要和上面那个workers.properties里面的配置想照应。 然后在这个节点下面新增下面内容: <!-- 开启tomcat集群模式 -->
<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
和之前配置的tomcat一样,只需修改一下:<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"> - 修改tomcat2的端口号:在tomcat2/conf/server.xml。tomcat1的端口不用改,用默认的就行,主要是为了tomcat2的端口不和tomcat1的端口冲突 <Server port="9005" shutdown="SHUTDOWN">
<Connector port="9080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" /> - 重新启动Apache server:在桌面右下角有个Apache服务器的图标,鼠标点击他,有个restart。
- 下载测试程序:下载test.war放到tomcat1 和 tomcat2 的 wabapps下面,里面也有所有的配置文件。
下载地址:http://download.csdn.net/download/junmoxi/9954807 - 启动tomcat1 和tomcat2
- 浏览器访问:http://localhost/test 如果刷新一次,后面的tomcat改变,说明集群已经搭建完成。看下图: 注意:他支持热插拔,就是如果一个tomcat挂掉了,并不会影响整个程序,你可以随时再将此tomcat重启。 到此:该配置已经全部完成,参考自己参考网上的然后在实践了一下,这里要注意tomcat版本和jdk版本的匹配,本人配置的时候是用的jdk1.8的,结果一直不得行,后采用jdk1.7成功了。还有就是tomcat集群的配置最好放在节点里的最先位置(不知道怎么放在后面始终不得行,求解)。最后,由于本人刚开始写博客,有很多不足之处请谅解,请指教!!!
转载于:https://my.oschina.net/u/3901218/blog/1861069