搭建apache的tomcat集群(windows)

it2024-04-17  8

1.单节点的tomcat能够稳定的处理请求并发量200-300 2.负载均衡(load balance):将用户的请求平均的分配给多个节点 故障迁移:如果一个节点出现故障,让别的节点响应用户的请求 3.服务端集群分类 (1)水平集群:将服务器安装在各个不同的计算机上 主要故障迁移 (2)垂直集群:将多个服务器安装在同一个计算机上 主要负载均衡 4.搭建集群的主流软件:apache、ngnix 5.apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP)。


搭建apache的tomcat集群 一.安装Apache服务器软件 1.下载apache服务器软件 下载地址 2.配置Apache24\conf\httpd.conf (1)将/Apache24改为apache安装地址

Define SRVROOT "/Apache24" ServerRoot "${SRVROOT}"

3.将apache配置为windows服务 管理员身份打开cmd,通过命令注册apache服务 ""中填写Apache24\bin\httpd.exe文件的绝对路径

"D:\cluster\Apache24\bin\httpd.exe" -k install -n apache24

如果在注册apache服务时,提示丢失VCRUNTIME140.DLL,则需要下载并安装vc_redist.x64.exe 下载地址 如果要删除服务

sc delete 服务名

4.开启服务 输入以下命令或者去任务管理器开启服务

net start 服务名

5.检测apache服务器软件是否安装成功 在浏览器地址栏输入localhost:80,如果显示出页面,则成功

二.安装Tomcat服务器软件 1.下载tomcat服务器软件 下载地址 2.解压两份到apache24的同级目录中,重命名以示区别 3.修改tomcatA/B\conf\server.xml的配置 (1)解决两个tomcat端口冲突问题 先规划一下端口         server端口号   http协议端口    ajp协议端口号 tomcatA     1005     1080      1009 tomcatB     2005     2080      2009 然后去tomcat\conf\server.xml里面分别修改端口即可 (2)修改关于引擎的配置 tomcatA中

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatA">

tomcatB中

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatB">

在引擎标签中增加jvmRoute,apache通过jvmRoute将请求分发给不同的tomcat处理 (3)打开集群开关

<!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> -->

取消注释即可 4.检测tomcat服务器软件是否安装成功 双击tomcatA\bin\startup.bat启动服务 在浏览器地址栏输入localhost:1080,如果显示出页面,则成功(1080为修改后的Http协议端口)

整合Apache与Tomcat 1.下载zip文件 下载地址 解压后只保留mod_jk.so文件并将其放入Apache24\modules目录下 2.新建两个文件放在Apache24\conf目录下 (1)workers.properties

worker.list=controller,tomcata,tomcatb #tomcata worker.tomcata.port=1009 worker.tomcata.host=localhost #协议 worker.tomcata.type=ajp13 #负载均衡的权重 worker.tomcata.lbfactor=1 #tomcatb worker.tomcatb.port=2009 worker.tomcatb.host=localhost #协议 worker.tomcatb.type=ajp13 #负载均衡的权重,值越大,分配的负载越多 worker.tomcatb.lbfactor=2 #controller #指明控制器作用是负载均衡 worker.controller.type=lb worker.controller.balanced_workers=tomcata,tomcatb worker.controller.sticky_session=false

与配置无关,可直接跳到(2),jvmRoute是tomcat路由标示,由此区分两台tomcat主机。浏览器第一次给服务器发送请求,会话建立,直到一方断开连接,则会话结束。一次会话,就有一个sessionID,这个sessionID后面会跟上jvmRoute设置的值,这样可以将用户(会话)与某服务器绑定。 worker.controller.sticky_session=true(默认值),表示session有粘性,意思是用户访问一个页面后,会话建立,一个session创建在了一台服务器上,那么此次会话中的所有请求将与此台服务器绑定。 worker.controller.sticky_session=false,表示session无粘性,意思是用户访问一个页面后,会话建立,一个session创建在了一台服务器上,然后这个session会被自动同步(广播)给其他服务器。弊端:如果服务器太多,每有一个session,就要同步给n-1个服务器,性能开销大。 worker.controller.sticky_session_force=false(默认值),如果集群中某台服务器在多次请求没有响应后,将转发当前的请求到其它服务器上处理 worker.controller.sticky_session_force=true,请求始终由session创建的服务器处理。 如果配置为worker.controller.sticky_session=true,worker.controller.sticky_session_force=true,弊端:如果这台服务器没有了响应,相关请求又不会转移给其它服务器,请求将得不到响应,即不能故障迁移。 建议使用worker.controller.sticky_session=true,worker.controller.sticky_session_force=false 在这层面之上,更推荐使用集中管理方式,即将各个服务器的session存储到一个数据库中 (2)mod_jk.conf

#加载mod_jk.so LoadModule jk_module modules/mod_jk.so #加载workers.properties JkWorkersFile conf/workers.properties #表示拦截一切请求 JkMount /* controller #对jsp请求进行分流 #JkMount /*.jsp

(3)apache启动时会自动加载httpd.conf,要在httpd.conf中加载mod_jk.conf,即在httpd.conf中添加如下一句话

include conf/mod_jk.conf

此时所有的工作全部完成

使用

注意:集群的使用并不处在开发阶段,而是在项目代码编写完成后 开启apache、tomcatA、tomcatB服务 然后把项目放在tomcatA与tomcatB的webapps目录下 通过http://localhost:80/项目名/文件名即可访问资源了,这个请求是发给apache服务器的,然后分流给tomcatA与tomcatB,如果想看出分流效果 把tomcatA/B里面的html/jsp文件的<title></title>里面的内容设置不一样即可

最新回复(0)