Windows下配置Tomcat集群

article/2025/9/14 19:08:00
  • 为什么要用Tomcat集群
  1.  可以提高整体web服务器性能,将动态页面交给tomcat处理,将静态文件交给apache处理,可以大大提高服务器的静态文件处理性能。
  2.  可以实现web服务器的负载均衡,服务器可采用集群的方式来响应客户端请求。Apache的作用是做代理,将请求分发给各个tomcat处理,tomcat作为集群服务器处理请求。这样可以提高整体web服务器性能和访问量。
  3. 可以实现无缝升级应用程序和容错处理,在tomcat集群中如果有一个tomcat挂掉了,用户还可以通过其他tomcat来进行访问,同时如果我们想升级应用程序,我们可以通过升级每个tomcat的应用程序来实现升级,在升级的过程中不会影响web服务器的访问。
  • 集群的分类:
  1.  高可用集群(High Availability Cluster/HA):一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。常见的就是2个节点做 成的HA集群,有很多通俗的不科学的名称,比如"双机热备", "双机互备", "双机",高可用集群解决的是保障用户的应用程序持续对外提供服 务的能力。
  2. 负载均衡集群(Load Balance Cluster):负载均衡集群运行时一般通过一个或者多个前端负载均衡器将工作负载分发到后端的一组服务器上,从而达到将工作负载分发。这样的计算机集群有时也被称为服务器群(Server Farm)。一般web服务器集群、数据库集群 和应用服务器集群都属于这种类型。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器 上。从检查其他服务器状态这一点上 看,负载均衡和容错集群很接近,不同之处是数量上更多。
  3. 高性能计算集群(High Performance Computing Cluster/HPC):高性能计算集群采用将计算任务分配到集群的不同计算节点而提高计算能力,因而主要应用在科学计算领域。这类集群致力于提供单个计算机所不能提供的强大的计算能力。
  • Tomat集群的配置
  1. 配置JDK环境:本文选择使用Jdk1.7版本(配置jdk环境不需要过多阐述),在磁盘里新建一个httpd文件夹,在httpd下面新建Apache HTTP文件夹。
  2. 下载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
  3. 下载tomcat:下载好解压出来两份命名为tomcat1和tomcat2 放到httpd下面。下载地址为:http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.zip
  4. 下载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
  5. 配置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
  6. 配置workers.properties:新建文件workers.properties,放到目录D://httpd/Apache HTTP/conf   下面,输入内容如下:                 #server
    worker.list = controller
    #========tomcat1========
    #ajp13端口号,在tomcat下server.xml配置,默认8009
    worker.tomcat1.port=8009

  7. #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
  8. 修改httpd.conf文件:文件在D://httpd/Apache HTTP/conf  下面,在文件的末尾新增下面这句话:Include conf/mod_jk.conf
  9. 配置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>
    

     

  10. 配置另一个tomcat
    和之前配置的tomcat一样,只需修改一下:<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
  11. 修改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" />
  12. 重新启动Apache server:在桌面右下角有个Apache服务器的图标,鼠标点击他,有个restart。
  13. 下载测试程序:下载test.war放到tomcat1 和 tomcat2 的 wabapps下面,里面也有所有的配置文件。
    下载地址:http://download.csdn.net/download/junmoxi/9954807
  14. 启动tomcat1 和tomcat2 
  15. 浏览器访问:http://localhost/test                                                                                                                                                  如果刷新一次,后面的tomcat改变,说明集群已经搭建完成。看下图:                                                                                 注意:他支持热插拔,就是如果一个tomcat挂掉了,并不会影响整个程序,你可以随时再将此tomcat重启。                                       到此:该配置已经全部完成,参考自己参考网上的然后在实践了一下,这里要注意tomcat版本和jdk版本的匹配,本人配置的时候是用的jdk1.8的,结果一直不得行,后采用jdk1.7成功了。还有就是tomcat集群的配置最好放在节点里的最先位置(不知道怎么放在后面始终不得行,求解)。最后,由于本人刚开始写博客,有很多不足之处请谅解,请指教!!!

转载于:https://my.oschina.net/u/3901218/blog/1861069


http://chatgpt.dhexx.cn/article/guVpeVpG.shtml

相关文章

tomcat连接mysql及JDBC详解

一、Tomcat简介 1、Tomcat简介 Tomcat 是 Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的 Jakarta 项目中的一个核心项目&#xff0c;由 Apache、Sun 和其他一些公司及个人共同开发而成。由于有了 Sun 的参与和支持&#xff0c;最新的 Servlet 和JS…

tomcat配置url跳转_web和tomcat的区别

在Web2.0的浪潮中&#xff0c;各种页面技术和框架不断涌现&#xff0c;为服务器端的基础架构提出了更高的稳定性和可扩展性的要求。近年来&#xff0c;作为开源中间件的全球领导者&#xff0c;JBoss在J2EE应用服务器领域已成为发展最为迅速的应用服务器。在市场占有率和服务满意…

Windows下安装配置Tomcat

Windows下安装配置Tomcat 下载 到官网下载目标Tomcat版本&#xff1a;https://tomcat.apache.org/ 下载完成后&#xff0c;进入目标目录下 解压到安装目录 配置 配置环境变量&#xff1a; 变量名为&#xff1a;CATALINA_HOME 变量值为&#xff1a;D:\software\tapache-t…

Linux系统安装配置tomcat详细教程

准备工作 在Xshell控制台依次安装&#xff1a; Linux服务器和window互传文件工具 yum install lrzsz解压命令 yum install unzip安装jdk1.8 yum install -y java-1.8.0-openjdk-devel.x86_64安装 下载tomcat的压缩文件&#xff0c;我以apache-tomcat-8.5.87.zip为例。 将…

Tomcat 环境搭建和管理

Tomcat 概念 Tomcat 是 Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目&#xff0c;由 Apache、Sun 和其他一些公司及个人共同开发而成&#xff0c;由于有了 Sun的参与和支持&#xff0c;最新的 Servlet 和 JSP规范总是能在Tomcat 中得到体现&a…

如何将mpg格式转换为mp4格式?

如何将mpg格式转换为mp4格式&#xff1f;mpg是什么格式文件呢&#xff1f;mpg全称MPEG&#xff0c;即动态图像专家组&#xff0c;是运动图像压缩算法的国际标准&#xff0c;这种专业的解释可能很多人看不懂&#xff0c;简单的说mpg就是一种视频文件格式。属于不常用的视频文件格…

mpg格式转换为mp4格式

如何将mpg格式转换为mp4格式&#xff1f;mpg的全称是Moving Pictures Experts Group&#xff0c;也被称为mpeg&#xff0c;是运动图像压缩算法的国际标准&#xff0c;简单的说mpg就是一种视频格式&#xff0c;mpg格式说过经过编码处理的图像文件越小&#xff0c;所占用的存储空…

Java使用mpxj导入.mpp格式的Project文件(甘特图)

最近换工作了&#xff0c;主要的项目都是企业内部为支撑的管理平台&#xff0c;刚入入职没多久&#xff0c;遇到了一个需求&#xff0c;就是导入微软的Project文件&#xff0c;踩过不少坑&#xff0c;所以记录一下&#xff0c;后续还有从数据库导出Project引导文件&#xff0c;…

引用型变量的赋值

内存分类 栈内存&#xff1a;空间较小&#xff0c;用来存储变量在堆内存的地址。 堆内存&#xff1a;空间大&#xff0c;用来存储变量的真实数据。 引用型变量数据引用&#xff1a;首先根据变量访问栈内存&#xff0c;再根据栈内存中的地址指向找到在堆内存中的变量数据。 当…

java对象与对象引用变量

Java对象及其引用 先搞清楚什么是堆&#xff0c;什么是栈。 Java开辟了两类存储区域&#xff0c;对比二者的特点 存储区域存储内容优点缺点回收栈基本类型的变量和对象的引用变量存取速度比堆要快&#xff0c;仅次于寄存器&#xff0c;栈数据可以共享存在栈中的数据大小与生…

变量的引用_概念

理解了变量的引用之后, 对于我们理解在python 中的函数的参数传递和以及函数的返回值都是非常由帮助的. 当一个python 程序运行的时候, 变量和数据都是保存在内存中的. 变量的引用这个概念, 就是介绍一下当一个python 程序运行时, 变量和数据是怎样保存的, 并且保存的是什么内…

C++中引用变量详解

目录 一、什么是引用&#xff1f; 二、引用的注意事项 三、引用的本质 四、常量引用 五、引用的使用场景​​​​​​​ 六、引用和指针的区别 一、什么是引用&#xff1f; 引用实际上是给一个变量起别名&#xff0c;编译器不会为引用变量开辟一个新的内存空间&#xff…

C++变量引用

本篇介绍的变量引用与之前介绍的指针不是同一概念&#xff0c;它们有本质的区分&#xff1a; 1&#xff09;不存在空引用。引用必须连接到一块合法的内存。 2&#xff09;一旦引用被初始化为一个对象&#xff0c;就不能被指向到另一个对象。指针可以在任何时候指向到另一个对…

Java_引用变量

目录 1.认识 null ​编辑 2.数组的应用 3.数组作为函数的参数 4.数组作为函数的返回值 5.数组练习 数组转字符串 6.数组拷贝 (1)通过函数Arrays.copyOf()进行拷贝&#xff1a; (2)通过函数System.arraycopy()进行拷贝&#xff1a; (3)拷贝范围Arrays.copyOfRange() (4)比…

C++中的引用变量详解

文章目录 声明及定义代码引用变量的特点图片解释引用变量的本质引用变量的用途int & 和 const int & 的区别引用变量和宏定义&#xff08;#define&#xff09;的区别 声明及定义 [const] int& 变量名 右值 注意&#xff1a;[]内的是可选的。即这里的const限定词是…

引用变量及其作用

首先&#xff0c;先来明白一下什么是引用变量。 一个变量可以声明为一个引用&#xff0c;它起着该变量的别名的作用。对引用进行操作&#xff0c;实际上就是对被引用的变量进行操作。 引用运算符&#xff1a;&&#xff1b; 定义的一般形式&#xff1a;数据类型 &引用变…

变量的引用

引用是C对C的一个重要扩充。 1、引用的概念&#xff1a;变量的引用就是变量的别名。引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 从上面图中就可以看出&a…

引用变量

引用就是一个变量的别名&#xff0c;声明&#xff1a; int a 0; int &b a; b就是a的引用&#xff0c;a和b指向的内存时同一个地址&#xff0c;b可以修改变量的值 一。主要的用途是将引用变量作为函数的参数传递&#xff0c;为什么呢&#xff1f; &#xff08;1&…

C++入门基础—— 引用变量

目录 什么是引用&#xff1a; 引用的例子 引用的特性&#xff1a; 常量引用与非常量引用 使用场景 引用与指针的区别 什么是引用&#xff1a; 引用的概念 引用实际上就是取别名&#xff0c;提起这个名字就会让人知道是谁&#xff0c;谈起“鸡哥”就知道是坤坤&#xff0c;…

C++——引用变量

目录 一、创建引用变量 二、将引用作为函数参数 三、引用的属性和特别处 四、临时变量、引用参数和const 五、返回引用 六、何使用引用参数 七、参考书籍 引用变量是C新增的一种复合类型。引用是已定义的变量的别名&#xff08;另一个名字&#xff0c;但两个名字都是表示…