apache整合tomcat,tomcat集群

环境:win10,jdk1.8,tomcat9,httpd2.4

1.安装apache

下载地址:https://www.apachehaus.com/cgi-bin/download.plx

解压压缩包即可;

第一次启动时出现错误如图:

apache整合tomcat,tomcat集群_第1张图片

修改conf下的http.conf文件:


apache整合tomcat,tomcat集群_第2张图片

改成当前安装路径,比如我是D:\apache\Apache24

再次启动访问localhost:


apache整合tomcat,tomcat集群_第3张图片

这边默认访问的是htdocs/index.html

如果想指定访问路径应该怎么做,比如我想访问到D:\apache\www路径(在D:\apache\www新建index.html和文件夹css),那就需要做个访问的根目录配置(同nginx的serverroot),一样是http.conf,将如下图的DocumentRoot改成D:\apache\www,再将该节点下的Options Indexes FollowSymLinks改成Options None(无法直接访问文件层次结构)

apache整合tomcat,tomcat集群_第4张图片

修改后重启访问localhost如图:

apache整合tomcat,tomcat集群_第5张图片

访问localhost/css:


apache整合tomcat,tomcat集群_第6张图片

这边apache的配置就先到这边

2.安装tomcat

下载地址http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.7/bin/apache-tomcat-9.0.7-windows-x64.zip

下载解压,将项目war包放到webapps目录下 ,到bin目录用startup.bat启动即可

apache整合tomcat,tomcat集群_第7张图片

3.apache整合tomcat

首先了解一下tomcat与apache如何协同工作:

1)      Apache装有一个模块,这个模块叫mod_jk

2)      Apache通过80端口负责解析任何静态web内容

3)      任何不能解析的内容,用表达式告诉mod_jk,让mod_jk派发给相关的app server去解释。

首先需要下载一个叫modjk的模块,(https://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip)

下载后解压,将mod_jk.so文件拷贝到D:\apache\Apache24\modules目录下,并在http.conf加入如下配置

apache整合tomcat,tomcat集群_第8张图片

并在conf文件夹下加入配置文件workers.properties:

apache整合tomcat,tomcat集群_第9张图片

到这步已经整合完毕,将项目拷贝到documentroot以及tomcat的webapps下面进行测试:

打开localhost/项目名称

apache整合tomcat,tomcat集群_第10张图片

当我们登陆请求后台时 可以看到tomcat日志并且登陆成功,即整合成功

apache整合tomcat,tomcat集群_第11张图片

4.tomcat纵向集群


修改${apache_home}/conf/workers.properties如下:


apache整合tomcat,tomcat集群_第12张图片

配置到2个tocmat ,分别监听到端口,再将tomcat配置到jktest中

http.conf不用修改,因为用的一直都是jktest作为worker名称;

复制tomcat如图:

进入tomcat1,tomcat2修改server.xml,这边tomcat要同时运行,所以要保证端口配置唯一,比如8080&8081,8009&8010,8005&8006等

在tomcat1的servlet.xml找到如下配置

apache整合tomcat,tomcat集群_第13张图片

给Engine节点添加属性jvmRoute属性,属性值为worker里的tomcat,这边为tomcat1,(jvmRoute为tomcat集群复制session,通过session_cookie这种方式来实现session粘性,将特定会话附属到特定tomcat上,从而解决session不同步问题),在tomcat2的server.xml加入同样配置,jvmRoute指向tomcat2

在tomcat1,2的server.xml Engine节点加入如下配置,标注的端口保持唯一

apache整合tomcat,tomcat集群_第14张图片

在项目的web.xml文件上面加一行,告诉tomcat此项目需要做session持久化(注意,这边set到session的对象必须实现序列化接口处理)

配置后启动apache,tomcat1,tomcat2,:


apache整合tomcat,tomcat集群_第15张图片

即为集群配置成功,访问可以看到2个tomcat日志轮流跑动;

tips:tomcat优化

修改catalina.bat文件,给定jvm内存等

set JAVA_OPTS=-server -Xms1024M -Xmx1024M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m  -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true   

修改server.xml


你可能感兴趣的:(apache整合tomcat,tomcat集群)