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

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

228次阅读
没有评论

共计 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、短信等云产品特惠热卖中