环境信息:web
系统版本:Win7(64位)apache
Tomcat版本:apache-tomcat-8.0.9windows
Apache版本:httpd-2.4.25-x64-vc14-r1.zip浏览器
mod_jk版本:tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.ziptomcat
1、Apache下载安装服务器
官网地址:http://http://www.apachehaus.com/cgi-bin/download.plxsession
2.解压Apacheapp
3.修改配置文件httpd.confwebapp
把SRVROOT改为文件夹路径 (38行)jvm
Define SRVROOT "D:/apache2.4/Apache24" ServerRoot "${SRVROOT}"
4.安装Apache
进入DOS命令,到D:\apache2.4\Apache24\bin目录下 输入安装命令:
httpd -k install
5.启动Apache
有两种方式:
1.安装路径下双击ApacheMonitor.exe,就会出现图形化界面(主界面右下角会出现一个apache的图标),在这里能够启动/中止/从新启动apache服务器。 2.在命令行里输入 httpd -k start
其余命令: apache -k uninstall //卸载 httpd -k restart //重启 httpd -k stop //中止
1 建立Tomcat-Cluster目录
在D盘下新建Tomcat-Cluster文件夹,在Tomcat-Cluster下新建两个文件夹Tomcat1,Tomcat2
2.将Tomcat(apache-tomcat-8.0.9文件夹)下的文件拷贝到Tomcat1
在D:\ Tomcat-Cluster\Tomcat1\webapps下,建立TestCluster文件夹,而后将ROOT文件夹下的WEB-INF文件夹拷贝到TestCluster下
打开TestCluster\WEB-INF\web.xml
在</web-app>上面添加<distributable/>
(设置<distributable/>,即代表集群下某一节点生成或改变的Session,将广播到该集群的其它节点)
在TestCluster文件夹下新建index.jsp
4.修改Tomcat1的Server.xml(Tomcat1\conf\Server.xml)
<?xml version='1.0' encoding='utf-8'?> <!--将端口号由8005改成7005 --> <Server port="7005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <!--将端口号由8080改成7080 --> <Connector port="7080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!--将端口号由8009改成7009 --> <Connector port="7009" protocol="AJP/1.3" redirectPort="8443" /> <!--在Engine标签添加jvmRoute属性--> <Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat1"> <!--将Cluster标签的注释去掉--> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server>
5.配置Tomcat2
将Tomcat1下的文件拷贝到Tomcat2
修改Tomcat2的Server.xml
a.将端口7005,7080,7009改成9005,9080,9009
b.Engine标签内的jvmRoute改成” Tomcat2”
c.将Cluster标签的注释打开
6.启动Tomcat集群
(若是以前配置过Tomcat的环境变量,要先将Tomcat的环境变量删除)
双击Tomcat1\bin\startup.bat、Tomcat2\bin\startup.bat
在浏览器下输入:http://localhost:7080/TestCluster/index.jsp,便可访问集群下Tomcat1节点的TestCluster
在浏览器下输入:http://localhost:9080/TestCluster/index.jsp,便可访问集群下Tomcat2节点的TestCluster
能够看到Tomcat一、Tomcat2两个节点的Session同样
###** 3、整合Apache与Tomcat集群**
整合Apache与Tomcat集群可使用mod_proxy_balancer也可使用mod_jk
这里咱们使用mod_jk。
1.解压tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip,可获得”mod_jk.so”。将”mod_jk.so”拷到Apache 2.2\modules目录下
2.在Apache 2.2\conf下新建workers.properties
worker.list=controller,Tomcat1,Tomcat2 #========Tomcat1======== worker.Tomcat1.port=7009 worker.Tomcat1.host=localhost worker.Tomcat1.type=ajp13 worker.Tomcat1.lbfactor=1 #========Tomcat2======== worker.Tomcat2.port=9009 worker.Tomcat2.host=localhost worker.Tomcat2.type=ajp13 worker.Tomcat2.lbfactor=1 #========controller======== worker.controller.type=lb worker.controller.balanced_workers=Tomcat1,Tomcat2 worker.controller.sticky_session=false
(若是worker.controller.sticky_session设为true,则同一用户的同一session始终和一个Tomcat节点交互)
3.在Apache 2.2\conf下新建mod_jk.conf
LoadModule jk_module modules/mod_jk.so JkWorkersFile conf/workers.properties JkMount /* controller
LoadModule - 加载modules/mod_jk.so模块 JkWorkersFile-workers.properties的位置 JkMount-Apache将localhost下的全部请求转发给controller处理
4.修改httpd.conf
打开httpd.conf(Apache 2.2\conf\httpd.conf),将尾部的include conf/mod_proxy_balancer.conf注释掉,并添加一行代码
include conf/mod_jk.conf
5.测试
重启Apache,而后在浏览器下输入http://localhost/TestCluster/index.jsp,可看到以下页面
两次请求,分别转发到了Tomcat1节点、Tomcat2节点,而且两个节点的Session同样
Apache和Tomcat集群整合后,Apache是接收请求的入口,它根据设置的转发请求条件,决定将哪些请求转发个Tomcat处理
一般的应用场景为:Apache做为Web Server,它只负责处理静态页面,而动态页面会交给Tomcat(App Server)处理
###4、批处理Tomcat
因为一个个去启动tomcat太麻烦,因此这里写了一个脚本进行批处理
@echo off title tomcat集群管理 :allStart cls echo. echo 1.开启tomcat echo 2.关闭tomcat echo e.退出 echo. set in= set /p in=请输入: if "%in%"=="1" goto startAllWork if "%in%"=="2" goto endAllWork if "%in%"=="e" goto allClose :startAllWork echo 正在启动tomcat集群服务 echo 启动tomcat1 set JAVA_HOME=D:\Java\jdk1.8.0_45 set CATALINA_HOME=D:\Tomcat-Cluster\tomcat1 call="%CATALINA_HOME%\bin\startup.bat" echo 启动tomcat2 set JAVA_HOME=D:\Java\jdk1.8.0_45 set CATALINA_HOME=D:\Tomcat-Cluster\tomcat2 call="%CATALINA_HOME%\bin\startup.bat" echo 启动完毕! echo. pause goto allStart :endAllWork echo 正在关闭tomcat集群服务 echo 关闭tomcat1 set CATALINA_HOME=D:\Tomcat-Cluster\tomcat1 call="%CATALINA_HOME%\bin\shutdown.bat" echo 关闭tomcat2 set CATALINA_HOME=D:\Tomcat-Cluster\tomcat2 call="%CATALINA_HOME%\bin\shutdown.bat" echo 关闭完毕! echo. pause goto allStart :allClose echo 按任意键退出 pause exit
参考文章: