阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

解说Apache+Tomcat+JK实现Tomcat的负载和集群

435次阅读
没有评论

共计 15954 个字符,预计需要花费 40 分钟才能阅读完成。

把 Apache 与 Tomcat 的结合研究出来了,不多说了还是把过程写出来吧。

Linux 下 Apache+Tomcat+JK 实现负载均衡和群集的完整过程  http://www.linuxidc.com/Linux/2011-11/47777.htm

  1. 实现环境
虚拟机上实现的:操作系统:Cetnost 5.4 内核:2.6.18-194.el5 
server1: ip 192.168.1.107  255.255.255.0
server2:ip 192.168.1.139   255.255.255.0

 2. 所用的到软件 

httpd-2.2.22.tar.gz
apache-tomcat-6.0.35.tar.gz
tomcat-connectors-1.2.37-src.tar.gz(apache 与 Tocmat 的连接器)
jdk-6u33-linux-i586-rpm.bin
 
 3. 安装前的准备
 
安装需要的编译程序
# yum -y install gcc gcc-c++ gcc-gfortran ncurses-devel 
 
 4. 下面开始准备安装
 
  安装 JDK
因为 Cetnos 系统会自带一个 Java 版本,要把自带的 java 版本卸掉。
  1. 查看版本:
  2. # java -version 
  3. java version “1.6.0_18” 
  4. Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0_18-b02) 
  5. Java HotSpot(TM) Client VM (build 1.6.0_18-b02, mixed mode, sharing) 
  6. 查看 JDK 软件包名称:
  7. # rpm -qa | grep jdk 
  8. java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5 
  9. 卸载:
  10. # yum -y remove java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5 
  11.  
  12. # rpm -qa | grep gcj 
  13. libgcj-4.1.2-48.el5     
  14. java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 
  15.  
  16. # yum -y remove libgcj-4.1.2-48.el5 java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 
  17. 卸载完成 
完成之后,再来查看 java 的版本 
# java -version 
-bash: java: command not found 
说明卸载完成。
下面开始安装 JDK
我把有的软件都放在了 /setup/ 这个目录下了,下面来安装吧
 
  1. # cd /setup/jdk/ 
  2. # chmod +x jdk-6u33-linux-i586-rpm.bin   
要执行这个文件要用到 root 用户
 
  1. #./jdk-6u33-linux-i586-rpm.bin 
根据所显示的提示信息很顺利就能安装完成。
默认安装在 /usr/java 目录下, 我们做一个软连接
 
  1. # ln -s /usr/java/jdk1.6.0_33/ /usr/local/java 
设置环境变量 
 
  1. # vi /etc/profile 
  2. 安 ”i” 进入编辑模式 
  3. 在最后加入: 
  4. export JAVA_HOME=/usr/java/jdk1.6.0_33 
  5. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
  6. export PATH=$PATH:$JAVA_HOME/bin 
  7. 保存退出!
  8. 使生效: # source /etc/profile  
完成后再来查看版本信息
 
  1. # java -version 
  2. java version “1.6.0_33” 
  3. Java(TM) SE Runtime Environment (build 1.6.0_24-b07) 
  4. Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing) 
Apache 的安装
  1. # cd /setup/apache 
  2. # tar zxvf httpd-2.2.22.tar.gz 
  3. # cd httpd-2.2.22 
  4. # ./configure –prefix=/usr/local/apache 
  5. # make 
  6. # make install 
  7. 这里的 apche 只指定了安装目录其他的都是默认。
下面来启动一下
 
  1. # /usr/local/apache/bin/apachectl start 
接着就要查看 80 端口是否启动。
 
Apache 与 Tomcat 的连接器的安装
开始安装 apache 与 Tomcat 的连接器 tomcat-connectors-1.2.37-src.tar.gz
 
  1. # cd /setup/tomcat 
  2. # tar zxvf tomcat-connectors-1.2.37-src.tar.gz 
  3. # cd tomcat-connectors-1.2.37-src/native/ 
  4. # ./configure –with-apxs=/home/fiSUSEr/FIS/apache/bin/apxs 
  5. # make 
  6. # make install 
安装完成之后就会在 /usr/local/apache/modules/ 目录中有一个 mod_jk.so
# ls 
httpd.exp  mod_jk.so 
这样 Apache 与 Tomcat 的连接器安装成功了。
 
下面来安装一下 Tocmat
这个软件不用编译的,解压后就可以用了。
 
  1. # cd /setup/tomcat   
  2. # tar zxvf apache-tomcat-6.0.35.tar.gz   
  3. # mv apache-tomcat-6.0.35 app1 
  4. # echo “JAVA_HOME=/usr/java/jdk1.6.0_33″ >> /app1/bin/catalina.sh 
接下来,就可以试着启动一下。
 
  1. # /setup/tomcat/app1/bin/catalina.sh start 
查看端口是否启动起来
 
  1. # netstat -tlnp 
  2. tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      26633/java           
  3. tcp        0      0 :::8009                     :::*                        LISTEN      26633/java           
  4. tcp        0      0 :::8080                     :::*                        LISTEN      26633/java     
有这三个端口,说明 Topmcat 启动正常,你可以用浏览器来打开,一定能看到那个“猫”。
在第二台虚拟中只要有个 Tomcat 就行了,所有要在第二台虚拟中安装上 JDK,Tomcat 就可以了。
 
到此,Tomcat JDK Apache JK 安装完成,下面开始核心部分连接 Apache 与 Tomcat,并实现 Tomcat 的负载和集群。
 

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-12/126630p2.htm

 5. 配置 Apache 与 Tomcat
配置 Apache
编辑 Apache 的 httpd.conf 文件
所要做工作就是开启虚拟主机,并加上 mod_jk.conf 这个模块,如下所示:
 
  1. # cp httpd.conf httpd.conf.bak(改变之前要备份一下)
  2. # vim httpd.conf 
  3. 在 httpd.conf 文件中找到:“Include conf/extra/httpd-vhosts.conf”把前的 #号去掉即可。
  4. 接着在后面加入一行:
  5. Include conf/mod_jk.conf 
完成之后,首来做虚拟主机吧。
 
  1. # cd /usr/local/apache/conf/extra 
  2. # vim httpd-vhosts 
  3. 把原有的虚拟主机注释掉,加入如下所示的行:
  4. <VirtualHost *:80> 
  5.     ServerName www.zhou.com 
  6.     JkMountFile conf/uriworkermap_app1.properties 
  7. </VirtualHost> 
在这里我们看到有两个我们不明白的一个就是 mod_jk.conf, 一个就是:
uriworkermap_app1.properties
这两个文件中做什么的,接着看下面:
先来创建 mod_jk.conf 这个文件,这个文件当然是在 /usr/local/apache/conf/ 这个目录下创建了,在 httpd.conf 中你指定的目录,我指定的是这个目录,所以我在这个目录下创建。内容如下:
 
  1. # vim mod_jk.conf 
  2.  
  3. LoadModule jk_module modules/mod_jk.so   
  4. JkWorkersFile conf/workers.properties   
  5. JkLogFile “logs/mod_jk.log”   
  6. JkLogLevel info   
  7. JkLogStampFormat “[%a %b %d %H:%M:%S %Y]”   
  8. JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories   
  9. JkRequestLogFormat “%w %V %T”   
  10. JkShmFile logs/jk.shm   
  11. HostnameLookups Off   
在这里说明一下文件的内容:
第一句是加载 mod_jk.so 这个模块的。
第二名是 JKWorkersFile 指定负载均衡服务器的配置文件,文件名为相对于 apache 服务器所在目录的
第三句是 JKLogFile 指定 JK 连接器的日志输出文件,文件为相对于 apache 服务器所在目录的 logs/mod_jk.log 文件
第四句:JKLogLevel 是指的日志级别。级别为 warn 以上的日志将被输出到日志文件中,可选的值级别由低到高分别为:TRACE DEBUG INFO WARN ERROR FATAL
下面的几句我也不知道是什么意思,这个是在网上找的某大神的作品,
好了,下面再来说一下,workers.properties 这个文件
同样在 /usr/local/apache/conf/ 目录下创建,内容如下:
 
  1. worker.list=tomcat,jkstatus   
  2. #107     
  3. worker.server107.port=8009   
  4. worker.server107.host=192.168.1.107   
  5. worker.server107.type=ajp13   
  6. worker.server107.lbfactor=10   
  7. worker.server107.cachesize=5   
  8.    
  9. #139   
  10. worker.server139.port=8009   
  11. worker.server139.host=192.168.1.139   
  12. worker.server139.type=ajp13   
  13. worker.server139.lbfactor=10   
  14. worker.server139.cachesize=5   
  15.    
  16. worker.tomcat.type=lb   
  17. worker.tomcat.balance_workers=server107, server139 
  18. worker.tomcat.sticky_session_force=false 
  19.    
  20.  
  21. worker.jkstatus.type=status 
  22. worker.jkstatus.mount=/admin/jk 
  23. worker.retries=3 
解释一下:
worker.list 是定义了两个工作列表:一个是 tomcat, 一个是 jkstatus。在 tomcat 列表中定义了两个 tomcat_server, 一个是:server107, 一个是:server139。
worker.server107.port=8009 是定义了端口号,一定是 tomcat 中 server.xml 中的 8009。这里我是在两台不同机器上的虚拟机做的,所以端口号没有改变。如果是在一台虚拟上做的两个 Tomcat,那么只需要第二个 Tomcat 的端口号设置的与第一个 Tomcat 的端口号不同就行了,具体随意,只要能用就行。
worker.server107.host 这个是定义主机。
worker.server107.type=ajp13 JK 模块实现负载均衡采用的是 AJP 协议 1.3 版本,因此第一台负载均衡服务器的类型配置为 ajp13
worker.server107.lbfactor 第一台负载均衡服务器在整个负载均衡系统中所占的权重,这里配置为 10,权重越大,越有可能处理更多的请求,建议给性能好的机器配置更高的权重。
worker.s1.cachesize:apache服务器是多线程的,tomcat 能够利用这一优势来维持一定数量的连接作为缓存。根据用户的多少来配置一个合适缓存连接数量有助于提高性能。这里配置为 5
 
下面的都相同了,如果有多个 Tomcat 同样一样的配置,所用的参数自己来调即可。
 
worker.tomcat.type=lb  这个是配置 tomcat 的类型为“lb”也就是 Load Balance 负载均衡。
worker.tomcat.balance_workers=server107,server139 这个是负载均衡的两个 tomat 的 server 名称。
worker.tomcat.sticky_session_force=flase 
  设置负载均衡是否采用粘性会话。如果该属性设置为 true,假设一个请求被 server107 处理了,下次来源于同一个客户端的请求也将被 server107 处理。直到 server107 已经达到最大连接数,JK 才会将会话切换到其他服务器上。但是如果恰巧一直负责处理该会话的服务器 down 掉了,则会话将会丢失,明显的故障现象就是关于 session 的操作会出现莫名其妙的错误(例如你所运行的应用中用户可能已经登录了,但突然在一次访问后莫名其妙地提示没有登录)。这里配置为 false,不启用粘性会话,让服务器都有机会处理请求,提高了系统的稳定性。
worker.jk_watcher.type=status 这里配置为 status,用于监视各个负载均衡服务器实例的运行状态
worker.jk_watcher.mount=/tomcat/jk 设置名称为“jk_watcher”的 worker(负载均衡服务器实例监视器)的挂载路径,这里配置为 /tomcat/jk
worker.retries=5 这是 worker 全局的重试次数。在 apache 服务器启动后,会最多尝试若干次去连接这些负载均衡服务器,若连接不上就认为是 down 掉了,这里配置为 3
下面再来说一下 uriworkermap_app1.properties 这个文件
这个文件的 作用是告诉 apache 服务器哪些请求由负载均衡服务器处理,文件内容如下:
 
  1. /*=tomcat 
  2. /jkstatus=jk_watcher 
  3. !/*.gif=tomcat 
  4. !/*.jpg=tomcat 
  5. !/*.tif=tomcat 
  6. !/*.png=tomcat 
说明一下,在配置文件中,以“!”开头的条件表示“不要”,“=”表示交给。
/*=tomcat
其中“/*”表示所有的请求都给 tomcat(就是在 worker.properties 中定义的那个 worker.list 中的 tomcat)
/jkstatus=jk_watcher
 
!/*.gif=tomcat
!/*.jpg=tomcat
!/*.tif=tomcat
!/*.png=tomcat
这些表示以“.gif”等结尾的不交于 tomcat 处理。
 
以上完成了在 Apache 上的配置,下面先来配置 Tocmat 中的 sever.xml 文件来实现简单的负载均衡。

把 Apache 与 Tomcat 的结合研究出来了,不多说了还是把过程写出来吧。

Linux 下 Apache+Tomcat+JK 实现负载均衡和群集的完整过程  http://www.linuxidc.com/Linux/2011-11/47777.htm

  1. 实现环境
虚拟机上实现的:操作系统:Cetnost 5.4 内核:2.6.18-194.el5 
server1: ip 192.168.1.107  255.255.255.0
server2:ip 192.168.1.139   255.255.255.0

 2. 所用的到软件 

httpd-2.2.22.tar.gz
apache-tomcat-6.0.35.tar.gz
tomcat-connectors-1.2.37-src.tar.gz(apache 与 Tocmat 的连接器)
jdk-6u33-linux-i586-rpm.bin
 
 3. 安装前的准备
 
安装需要的编译程序
# yum -y install gcc gcc-c++ gcc-gfortran ncurses-devel 
 
 4. 下面开始准备安装
 
  安装 JDK
因为 Cetnos 系统会自带一个 Java 版本,要把自带的 java 版本卸掉。
  1. 查看版本:
  2. # java -version 
  3. java version “1.6.0_18” 
  4. Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0_18-b02) 
  5. Java HotSpot(TM) Client VM (build 1.6.0_18-b02, mixed mode, sharing) 
  6. 查看 JDK 软件包名称:
  7. # rpm -qa | grep jdk 
  8. java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5 
  9. 卸载:
  10. # yum -y remove java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5 
  11.  
  12. # rpm -qa | grep gcj 
  13. libgcj-4.1.2-48.el5     
  14. java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 
  15.  
  16. # yum -y remove libgcj-4.1.2-48.el5 java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 
  17. 卸载完成 
完成之后,再来查看 java 的版本 
# java -version 
-bash: java: command not found 
说明卸载完成。
下面开始安装 JDK
我把有的软件都放在了 /setup/ 这个目录下了,下面来安装吧
 
  1. # cd /setup/jdk/ 
  2. # chmod +x jdk-6u33-linux-i586-rpm.bin   
要执行这个文件要用到 root 用户
 
  1. #./jdk-6u33-linux-i586-rpm.bin 
根据所显示的提示信息很顺利就能安装完成。
默认安装在 /usr/java 目录下, 我们做一个软连接
 
  1. # ln -s /usr/java/jdk1.6.0_33/ /usr/local/java 
设置环境变量 
 
  1. # vi /etc/profile 
  2. 安 ”i” 进入编辑模式 
  3. 在最后加入: 
  4. export JAVA_HOME=/usr/java/jdk1.6.0_33 
  5. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
  6. export PATH=$PATH:$JAVA_HOME/bin 
  7. 保存退出!
  8. 使生效: # source /etc/profile  
完成后再来查看版本信息
 
  1. # java -version 
  2. java version “1.6.0_33” 
  3. Java(TM) SE Runtime Environment (build 1.6.0_24-b07) 
  4. Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing) 
Apache 的安装
  1. # cd /setup/apache 
  2. # tar zxvf httpd-2.2.22.tar.gz 
  3. # cd httpd-2.2.22 
  4. # ./configure –prefix=/usr/local/apache 
  5. # make 
  6. # make install 
  7. 这里的 apche 只指定了安装目录其他的都是默认。
下面来启动一下
 
  1. # /usr/local/apache/bin/apachectl start 
接着就要查看 80 端口是否启动。
 
Apache 与 Tomcat 的连接器的安装
开始安装 apache 与 Tomcat 的连接器 tomcat-connectors-1.2.37-src.tar.gz
 
  1. # cd /setup/tomcat 
  2. # tar zxvf tomcat-connectors-1.2.37-src.tar.gz 
  3. # cd tomcat-connectors-1.2.37-src/native/ 
  4. # ./configure –with-apxs=/home/fiSUSEr/FIS/apache/bin/apxs 
  5. # make 
  6. # make install 
安装完成之后就会在 /usr/local/apache/modules/ 目录中有一个 mod_jk.so
# ls 
httpd.exp  mod_jk.so 
这样 Apache 与 Tomcat 的连接器安装成功了。
 
下面来安装一下 Tocmat
这个软件不用编译的,解压后就可以用了。
 
  1. # cd /setup/tomcat   
  2. # tar zxvf apache-tomcat-6.0.35.tar.gz   
  3. # mv apache-tomcat-6.0.35 app1 
  4. # echo “JAVA_HOME=/usr/java/jdk1.6.0_33″ >> /app1/bin/catalina.sh 
接下来,就可以试着启动一下。
 
  1. # /setup/tomcat/app1/bin/catalina.sh start 
查看端口是否启动起来
 
  1. # netstat -tlnp 
  2. tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      26633/java           
  3. tcp        0      0 :::8009                     :::*                        LISTEN      26633/java           
  4. tcp        0      0 :::8080                     :::*                        LISTEN      26633/java     
有这三个端口,说明 Topmcat 启动正常,你可以用浏览器来打开,一定能看到那个“猫”。
在第二台虚拟中只要有个 Tomcat 就行了,所有要在第二台虚拟中安装上 JDK,Tomcat 就可以了。
 
到此,Tomcat JDK Apache JK 安装完成,下面开始核心部分连接 Apache 与 Tomcat,并实现 Tomcat 的负载和集群。
 

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-12/126630p2.htm

下面来配置 tomcat 的负载均衡。在 server1=192.168.1.107 上完成
在 apache 中完成了配置后,就来配置 Tomcat
# cd /setup/tomcat/app1/conf/
编辑 server.xml 这个文件
所要做的工作是,如果是在同一台机器上做的,就要改端口了,所要改的端口如下:
<Server port=”8005″ shutdown=”SHUTDOWN”>
<Connector port=”8080″ protocol=”HTTP/1.1″ redirectPort=”8443″ />
<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″ />
这里显示的是文件中原始的端口,只要改这三个端口就可行了。
下面来配置来实现 tomcat 的负载,在配置文件中找到:
<Engine name=”Catalina” defaultHost=”localhost”>
改变为:
<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”server139″>
这里说明一下,句主要是 jvmRoute 这个参数,这个参数配置为 server139,这个是在 worker.properties 定义的一个 server,配置后就会实现 107 上的请求会转发到 139 上去,来实现负载,同样在 server2=192.168.1.139 的上配置也是相同的,只是 jvmRoute 的参数变为“server107”. 这样完成后,就可以测试一下了,这里有个测试的文件,index.jsp 文件内容如下:
  1. <%@ page language=“Java” import=“java.util.*” pageEncoding=“UTF-8”%> 
  2. <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”> 
  3. <html> 
  4.   <head>     
  5.     <title>My JSP ‘index.jsp’ starting page</title> 
  6.     <meta http-equiv=“pragma” content=“no-cache”> 
  7.     <meta http-equiv=“cache-control” content=“no-cache”> 
  8.     <meta http-equiv=“expires” content=“0”>     
  9.     <meta http-equiv=“keywords” content=“keyword1,keyword2,keyword3”> 
  10.     <meta http-equiv=“description” content=“This is my page”> 
  11.     <!– 
  12.     <link rel=”stylesheet” type=”text/css” href=”https://www.linuxidc.com/Linux/2015-12/styles.css”> 
  13.     –> 
  14.   </head> 
  15.   <body> 
  16.     This is my JSP page. <br> 
  17.   </body> 
  18. </html> 
把这个文件放到 webapps 目录下的 test 目录当然要先创建这个目录。要两 tomcat 中都要放入。
下面是测试的结果:

解说 Apache+Tomcat+JK 实现 Tomcat 的负载和集群

刷新后结果:

解说 Apache+Tomcat+JK 实现 Tomcat 的负载和集群

结果不同,是因为我放的网页不相同,使得结果更加清楚的显示出来。
这样就简单的实现的 Tomcat 的负载均衡。
下面来配置集群:
同样是编辑 server.xml 文件
改变后的文件如下所示:
 
  1. <?xml version=‘1.0’ encoding=‘utf-8’?> 
  2. <Server port=“8005” shutdown=“SHUTDOWN”> 
  3.   <Listener className=“org.apache.catalina.core.AprLifecycleListener” SSLEngine=“on” /> 
  4.   <Listener className=“org.apache.catalina.core.JasperListener” /> 
  5.   <Listener className=“org.apache.catalina.core.JreMemoryLeakPreventionListener” /> 
  6.   <Listener className=“org.apache.catalina.mbeans.ServerLifecycleListener” /> 
  7.   <Listener className=“org.apache.catalina.mbeans.GlobalResourcesLifecycleListener” /> 
  8.   <GlobalNamingResources> 
  9.     <Resource name=“UserDatabase” auth=“Container” 
  10.               type=“org.apache.catalina.UserDatabase” 
  11.               description=“User database that can be updated and saved”             factory=“org.apache.catalina.users.MemoryUserDatabaseFactory” 
  12.               pathname=“conf/tomcat-users.xml” /> 
  13.   </GlobalNamingResources> 
  14.   <Service name=“Catalina”> 
  15.     <Connector port=“8080” protocol=“HTTP/1.1” minProcessors=“10” maxProcessors=“1024” enableLookups=“false” acceptCount=“1024” 
  16.                connectionTimeout=“20000” useBodyEncodingForURI=“true” URIEncoding=“utf-8” compression=“on” compressionMinSize=“2048” noCompressionUserAgents=“gozilla,traviata” compressableMimeType=“text/html,text/xml,text/javascript,text/css,text/plain” 
  17.                redirectPort=“8443” /> 
  18.      
  19.     <Connector port=“8009” protocol=“AJP/1.3” redirectPort=“8443” useBodyEncodingForURI=“true” URIEncoding=“utf-8”/> 
  20.  
  21.     <Engine name=“Catalina” defaultHost=“localhost” jvmRoute=“server107”> 
  22.  
  23.       <Cluster className=“org.apache.catalina.ha.tcp.SimpleTcpCluster” channelSendOptions=“8”> 
  24.       <Manager className=“org.apache.catalina.ha.session.DeltaManager” expireSessionsOnShutdown=“false” 
  25.                      notifyListenersOnReplication=“true”/> 
  26.       <Channel className=“org.apache.catalina.tribes.group.GroupChannel”> 
  27.            <MemberShip className=“org.apache.catalina.tribes.membership.McastService” 
  28.                        bind=“192.168.1.139” 
  29.                        address=“228.0.0.4” 
  30.                        port=“45564” 
  31.                        frequency=“500” 
  32.                        droptTime=“3000”/> 
  33.            <Receiver className=“org.apache.catalina.tribes.transport.nio.NioReceiver” 
  34.                      address=“192.168.1.139” 
  35.                      port=“4000” 
  36.                      autoBind=“100” 
  37.                      selectorTimeout=“5000” 
  38.                      maxThreads=“6”/> 
  39.            <Sender className=“org.apache.catalina.tribes.transport.ReplicationTransmitter”> 
  40.                <Transport className=“org.apache.catalina.tribes.transport.nio.PooledParallelSender”/> 
  41.            </Sender> 
  42.            <Interceptor className=“org.apache.catalina.tribes.group.interceptors.TcpFailureDetector”/> 
  43.            <Interceptor className=“org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor”/> 
  44.       </Channel> 
  45.       <Valve className=“org.apache.catalina.ha.tcp.ReplicationValve”        filter=“.*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;”/> 
  46.       <Valve className=“org.apache.catalina.ha.session.JvmRouteBinderValve”/> 
  47.       <ClusterListener className=“org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener”/> 
  48.       <ClusterListener className=“org.apache.catalina.ha.session.ClusterSessionListener”/> 
  49.       </Cluster>             
  50.       <Realm className=“org.apache.catalina.realm.UserDatabaseRealm” 
  51.              resourceName=“UserDatabase”/> 
  52.       <Host name=“localhost”  appBase=“webapps” 
  53.             unpackWARs=“true” autoDeploy=“true” 
  54.             xmlValidation=“false” xmlNamespaceAware=“false”> 
  55.       </Host> 
  56.     </Engine> 
  57.   </Service> 
  58. </Server> 
这个是去掉注释的部分后的文件内容,其中橙色部分是配置集群的部分这些要手动写进去的。其中“bind=“192.168.1.139” ”这个 server2=192.168.1.139 上的集群配置。在 107 上要写成 107 的 ip 地址。如果是在同一台机器上的两个 tomcat,这个 ip 可以一样,只是下面的端口要改变一下。也就是这相要变一下port=“45564“
这里的配置还能实现 session 同享。这里也有个测试的网页。test.jsp
内容如下:
 
  1. <%@ page contentType=“text/html; charset=utf-8” %> 
  2. <%@ page import=“java.util.*” %> 
  3. <html><head><title>Cluster App Test</title></head> 
  4. <body> 
  5. Server Info: 
  6. <
  7. out.println(request.getLocalAddr() + ” : ” + request.getLocalPort()+”<br>“);%> 
  8. <
  9.   out.println(“<br> ID ” + session.getId()+”<br>“); 
  10.   // 如果有新的 Session 属性设置 
  11.   String dataName = request.getParameter(“dataName”); 
  12.   if (dataName != null && dataName.length() > 0) {
  13.      String dataValue = request.getParameter(“dataValue”); 
  14.      session.setAttribute(dataName, dataValue); 
  15.   } 
  16.   out.println(“<b>Session 列表</b><br>“); 
  17.   System.out.println(“============================”); 
  18.   Enumeration e = session.getAttributeNames(); 
  19.   while (e.hasMoreElements()) {
  20.      String name = (String)e.nextElement(); 
  21.      String value = session.getAttribute(name).toString(); 
  22.      out.println(name + ” = ” + value+”<br>“); 
  23.          System.out.println(name + ” = ” + value); 
  24.    } 
  25. %> 
  26.   <form action=“test.jsp” method=“POST”> 
  27.     名称:<input type=text size=20 name=“dataName”> 
  28.      <br> 
  29.     值:<input type=text size=20 name=“dataValue”> 
  30.      <br> 
  31.     <input type=submit> 
  32.    </form> 
  33. </body> 
也是放在 test 那个目录下
测试结果如下:

解说 Apache+Tomcat+JK 实现 Tomcat 的负载和集群

刷新后的结果:

解说 Apache+Tomcat+JK 实现 Tomcat 的负载和集群

这样就看的很清楚两个 tomcat 的负载
下面来看是否 session 同步
名称和值中输入:1,1、2,2、3,3
结果如下所示:
 

解说 Apache+Tomcat+JK 实现 Tomcat 的负载和集群

 

解说 Apache+Tomcat+JK 实现 Tomcat 的负载和集群

这样可以清楚的看到 session 共享成功。
 
以上就是整个 Apache 与 Tomcat 的结合的整个过程,还有许多地方可能不是太正确,希望高人来指定一下。
 
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-12/126630.htm
 
正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计15954字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7988951
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...