在一台主机上模拟tomcat集群
1. 如何在一台主机上运行两个tomcat实例
2. httpd+tomcat负载均衡集成
3. 下载及参考文献
<1>.如何在一台主机上运行两个tomcat示例
1.1 下载tomcat压缩包,解压两次,分别命名成work2和work3,如下:
如果不做任何设置很显然是不能成功运行的,一方面是tomcat的运行需要存在环境变量CATALINA_HOME,另一方面如果开启第一个tomcat实例,然后在开启另外的tomcat的时候,会出现JVM_BIND的错误。所需要的修改设置如下:
1.1.1 修改startup.bat文件,在该文件的开始设置CATALINA_HOME环境变量:
SET CATALINA_HOME="E:\TomcatCluster\work2"(将这里设置成tomcat解压的目录 ) ++++++++++++ startup.bat文件正文
1.1.2 修改tomcat的server.xml文件:
<Connector port="8080" protocol="HTTP/1.1"
将8080端口号修改成计算机中不使用的端口号。
1.1.3 修改shutdown端口号
<Server port="8000" shutdown="SHUTDOWN">
将8000修改成一个为占用的端口号(这个只需要修改一个tomcat实例的即可)。
按照上面的两个步骤分别修改work2和work3的配置文件,同时开启两个tomcat示例,确保work2和work3能够正常开启。上面完成了在一台主机上同时开启两个tomcat服务器的工作。
<2>. httpd + tomcat负载均衡整合
2.1 安装httpd, 下载http://www.apache.org/dist/httpd/binaries/win32/httpd-2.2.17-win32-x86-no_ssl.msi,安装过程略去。安装完成之后,如果需要修改httpd的端口号,可以修改conf/httpd.conf:
如果不需要修改端口号的话,直接打开httpd.exe,打开浏览器,输入http://127.0.0.1:8081/(地址中的端口号需要和上面修改的端口号相一致),如果出现It Works,表明httpd成功安装。
2.2 修改work2的http监听端口,端口号可以任意,这里是我的配置:
<Connector port="8079" protocol="HTTP/1.1"
2.3 修改ajp的端口号:
<Connector port="8077" protocol="AJP/1.3" redirectPort="8443" />
2.4 配置服务器标识
2.5 实现session复制,修改context.xml:
<Context distributable="true"> +++++++++++++context.xml剩余默认配置
2.6 按照同样的方式设置work3,我的设置如下:
redirectPort="8443" />
<Connector port="9999" protocol="AJP/1.3" redirectPort="8443" />
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
2.7 在上面的两个tomcat实例的webapp中添加test目录,并添加test.jsp文件:
<head>
<title>helloapp</title>
</head>
<body>
<%
System.out.println("call test.jsp");
%>
SessionID: <%=session.getId() %>
</body>
</html>
分别访问上面两个页面的test.jsp页面,确保能够访问, 在我的机器上的地址如下:http://localhost:8079/test/test.jsp和http://localhost:8099/test/test.jsp。
2.8 使用jk方式集成 httpd + tomcat
下载mod_jk-1.2.31-httpd-2.2.3.so,请下载合适的mod_jk版本,改名为mod_jk.so放进modules文件夹内,修改httpd.conf文件,增加如下内容:
################################################
增加 workers.properties文件:
worker.loadbalancer.sticky_session=1
最终完成httpd + tomcat的配置,如果一切正常的话,试着打开这个http://127.0.0.1:8081/test/test.jsp链接,然后关闭其中的一个server,另外的一个 server将能够接受请求。
<3>. 下载及参考文献
参考文献:
http://shmilylq.iteye.com/blog/427165
http://blog.csdn.net/zhouyong0/archive/2011/04/14/6323536.aspx
http://www.blogjava.net/pengo/archive/2011/04/15/348331.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?