先将配置列出如下,这些是通过Apache与Tomcat之间
分类:巴黎人-服务器

Apache +汤姆cat负载均衡配置,tomcat负载均衡

Apache +汤姆cat负载均衡能保险较高的可用性和系统性子,这么些是由此Apache与汤姆cat之间的报纸发表来变成的。Apache和汤姆cat之间的广播发表基本有三种办法:Mod_Jk、HTTP_Proxy、AJP_Proxy其中以Mod_Jk最为盛行,并且官方的文书档案也极度全。

Mod_JK是Apache的贰个模块,其通过AJP合同落到实处与Tomcat之间的电视发表,汤姆cat通过设置Connector监听AJP的连日央浼。

 

小心:假使期待apache与tomcat通讯使用 HTTP 公约则需求使用 HTTP_Proxy,请看最终。

 

安装Mod_JK:

tar zxvf tomcat-connectors-1.2.40-src.tar.gz

cd tomcat-connectors-1.2.40-src/

cd native/

./configure --with-apxs=/home/soft/httpd-2.4.10/bin/apxs --prefix=/home/soft/tomcat-connectors-1.2.40
make 

make install
可选

make clean

make distclean

注:安装结果貌似不会装到/tomcat-connectors-1.2.40,但会往本地apache httpd 写入文件,例如增添了:modules/mod_jk.so

 

负载均衡布局步骤:
1.在apache安装目录下conf目录中找到httpd.conf,在最后加上配置 Include conf/mod_jk.conf
2.将mod_jk.so文件归入Apachemodules文件夹
3.新建mod_jk.conf文件并安顿
4.新建workers.properties和uriworkermap.properties文件并配置
5.修改各样tomcat配置文件server.xml,主要对应端口和设置engine的jvmRoute属性

 

mod_jk.conf 内容:
# 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk.so
# workers.properties 位置
JkWorkersFile conf/mine_jk/workers.properties
#加载workers的乞求管理分配文件
JkMountFile conf/mine_jk/uriworkermap.properties
# 日志贮存地方
JkLogFile logs/mine_mod_jk.log
# 设置日志品级 [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

workers.properties 内容:
# 定义worker,此处的list名称必得和mod_jk.conf文件中的 dispatcher 名称相同  
worker.list=dispatcher,status
# Define Node1  
worker.tomcat1.port=8019  
worker.tomcat1.host=localhost  
worker.tomcat1.type=ajp13  
worker.tomcat1.lbfactor=1  
#worker.tomcat1.connection_pool_size=10  
#worker.tomcat1.connection_pool_timeout=600  
#worker.tomcat1.socket_connect_timeout=300  
# Define Node2  
worker.tomcat2.port=8029  
worker.tomcat2.host=localhost  
worker.tomcat2.type=ajp13  
worker.tomcat2.lbfactor=1  
#worker.tomcat2.connection_pool_size=10  
#worker.tomcat2.connection_pool_timeout=600  
#worker.tomcat2.socket_connect_timeout=300  

# Load-balancing behaviour  
worker.dispatcher.type=lb  
worker.dispatcher.balance_workers=tomcat1, tomcat2
#sticky_session session亲和的安装
worker.dispatcher.sticky_session=0
worker.dispatcher.sticky_session_force=1
#loadbalancer
worker.status.type=status

uriworkermap.properties 内容:
#点名需要提交tomcat管理,"dispatcher"为在workers.propertise里钦命的载重分配调整器
/*.jsp=dispatcher
/jkstatus=status
!/*.gif=dispatcher
!/*.jpg=dispatcher
!/*.png=dispatcher
!/*.css=dispatcher
!/*.js=dispatcher
!/*.htm=dispatcher
!/*.html=dispatcher

 

Tomcat设置:

筹算八个tomcat,将它们的router分别设成tomcat1和tomcat2,配置它们的connector为ajp,端口分别为8019和8029。

配备实现后,运行apache和tomcat,访谈 能够查看集群状态(前提是计划了status类型的worker)

 

有能够看看其余人写的,很详细:

 

小心:假诺期望apache与tomcat通讯使用 HTTP 契约则须求运用 HTTP_Proxy:

http_proxy

那是行使 Apache 自带的 mod_proxy 模块使用代理技艺来延续汤姆cat。在配备之前请保管是不是使用的是 2.2.x 版本的 Apache 服务器。因为 2.2.x 版本对那个模块进行了重写,大大的巩固了其效果和安居。

http_proxy 格局是基于 HTTP 合同的代理,因而它供给 汤姆cat 必需提供 HTTP 服务,也正是说必需启用 汤姆cat 的 HTTP Connector。

自个儿用的linux源码编写翻译的apache,mod_proxy.so和mod_proxy_http.so已经自带了,别的版本的apache应该也许有,若无就独自安装 库 文件

############## http_proxy 方式索要的mod_proxy.so ##############
LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
############## http_proxy 格局须要的mod_proxy_http.so ##############
LoadModule proxy_http_module modules/mod_proxy_http.so
上边的开始和结果在 apache配置文件 httpd.conf 中,放手此中的笺注就能够运用 库了,

还必要在httpd.conf文件的末段加上:

############## http_proxy 方式 ##############
#http_proxy格局要求加载 mod_proxy.so 和 mod_proxy_http.so,将位置的 两行对应的 LoadModule  放手注释
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass /

在这里个布局中,大家把富有 的伏乞代理到 ,那也正是 汤姆cat 的探访地址,除了 images、css、js 多少个目录除了那一个之外。大家一样能够行使 mod_proxy 来做负载均衡,再看看上边这一个布局

ProxyPass /images !

ProxyPass /css !

ProxyPass /js !

 

ProxyPass / balancer://example/

<Proxy balancer://example/>

BalancerMember

BalancerMember

BalancerMember

</Proxy>

运维apache和tomcat就足以测量试验了。

查看商议

+汤姆cat负载均衡布局,tomcat负载均衡 Apache 汤姆cat负载均衡能保障较高的可用性和种类质量,那么些是透过Apache与Tomcat之间的简报来形成的。...

行使httpd对汤姆cat进行负荷均衡布局

试验系统:CentOS 6.6_x86_64

尝试前提:提前盘算好编译情状,防火墙和selinux都关门

实验证实:本实验共有2台主机,IP分配如拓扑

试验软件:jdk-8u60-linux-x64  apache-tomcat-8.0.24  tomcat-connectors-1.2.41  httpd-2.2.15  httpd-devel-2.2.15

施行拓扑:

图片 1

一、两台机械安装JAVA情况

1.安装JAVA:

wget
tar xf jdk-8u60-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
ln -sv jdk1.8.0_60 jdk

2.布局情状变量:

vim /etc/profile.d/jdk.sh
--------------------------------------------------->
JAVA_HOME=/usr/local/jdk
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
<---------------------------------------------------
. /etc/profile.d/jdk.sh

二、两台机械安装tomcat

1.安装tomcat:

wget
tar xf apache-tomcat-8.0.24.tar.gz -C /usr/local/
cd /usr/local/
ln -sv apache-tomcat-8.0.24 tomcat

2.安插情形变量:

vim /etc/profile.d/tomcat.sh
--------------------------------------------------->
CATALINA_BASE=/usr/local/tomcat
PATH=$CATALINA_BASE/bin:$PATH
export PATH CATALINA_BASE
<---------------------------------------------------
. /etc/profile.d/tomcat.sh

3.查看tomcat及JAVA状态:

catalina.sh version

图片 2

4.提供运行脚本:

vim /etc/init.d/tomcat
-------------------------------------------------------->
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_OPTS='-Xms64m -Xmx128m'
JAVA_HOME=/usr/local/jdk
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME

case $1 in
start)
 exec $CATALINA_HOME/bin/catalina.sh start ;;
stop)
 exec $CATALINA_HOME/bin/catalina.sh stop;;
restart)
 $CATALINA_HOME/bin/catalina.sh stop
 sleep 2
 exec $CATALINA_HOME/bin/catalina.sh start ;;
*)
 echo "Usage: `basename $0` {start|stop|restart}"
 exit 1
 ;;
esac
<--------------------------------------------------------
chmod +x /etc/init.d/tomcat
chkconfig --add tomcat

5.编辑tomcat配置文件,只加多jvmRoute参数:

  在19.66上:

vim /usr/local/tomcat/conf/server.xml
----------------------------------------------->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="汤姆catA">            //指明那是汤姆catA主机

  在19.74上:

vim /usr/local/tomcat/conf/server.xml
----------------------------------------------->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatB">

6.提供测量检验页面:

     在19.66上:

mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
vim /usr/local/tomcat/webapps/test/index.jsp
------------------------------------------------------------------------>
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <%
            out.println("This is TomcatA");
        %>
    </body>
</html>
------------------------------------------------------------------------>
service tomcat start

  在19.74上:

mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
vim /usr/local/tomcat/webapps/test/index.jsp
------------------------------------------------------------------------>
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <%
            out.println("This is TomcatB");
        %>
    </body>
</html>
------------------------------------------------------------------------>
service tomcat start

三、利用mod_jk模块对tomcat实行负荷均衡

选用httpd反向代理tomcat时有二种方法,分别要用到mod_proxy和mod_jk那五个模块。mod_jk须求卓殊编写翻译安装,而mod_proxy须要选拔httpd的proxy_module、proxy_balancer_module、proxy_http_module、proxy_ajp_module模块,确认保证卫安全装时这几个模块都被安装了。从httpd2.2开始,那几个模块暗许就是设置的,所以那边大家一向用yum安装就可以。

下边先演示利用mod_jk模块对tomcat举办负荷均衡。此模块只须要在一台机器上设置,大家这边在19.66上设置。

1.安装httpd:

yum -y install httpd httpd-devel          //安装httpd-devel为了提供apxs

2.安装mod_jk.so模块:

wget
tar xf tomcat-connectors-1.2.41-src.tar.gz
cd tomcat-connectors-1.2.41-src/native/
./configure --with-apxs=/usr/sbin/apxs
make && make install

3.提供额外的httpd模块配置文件:

vim /etc/httpd/conf.d/httpd-jk.conf
------------------------------------------------------>
# Load the mod_jk
LoadModule  jk_module  modules/mod_jk.so                //加载mod_jk.so模块
JkWorkersFile  /etc/httpd/conf.d/workers.properties    //此模块自身要用到的配备文件
JkLogFile  logs/mod_jk.log
JkLogLevel  debug
JkMount  /*  lb1                                        //访谈根下的全数内容都发到集群lb第11中学来
JkMount  /status/  stat1

4.配置mod_jk模块的安排文件workers.properties:

vim /etc/httpd/conf.d/workers.properties
-------------------------------------------------------->
worker.list = lb1,stat1
worker.汤姆catA.type = ajp13                        //httpd连接tomcat所用的格局
worker.TomcatA.host = 192.168.19.66
worker.TomcatA.port = 8009
worker.TomcatA.lbfactor = 1                        //权重
worker.TomcatB.type = ajp13
worker.TomcatB.host = 192.168.19.74
worker.TomcatB.port = 8009
worker.TomcatB.lbfactor = 1
worker.lb1.type = lb                              //调解方式
worker.lb1.sticky_session = 0                    //是或不是接纳session绑定
worker.lb1.balance_workers = TomcatA, TomcatB
worker.stat1.type = status

   5.起步测验:

service httpd start

  用浏览器张开

图片 3   图片 4

四、利用mod_proxy模块对tomcat实行负荷均衡

1.如故在19.66上编写制定就可以,使用http公约:

cd /etc/httpd/conf.d/
mv httpd-jk.conf httpd-jk.conf.bak
vim httpd-proxy.conf
-------------------------------------------------------------->
<Proxy balancer://lb1>
  BalancerMember loadfactor=1 route=TomcatA
  BalancerMember loadfactor=1 route=TomcatB
  ProxySet lbmethod=byrequests              //基于权重将总结诉求个数实行调整
</Proxy>

ProxyPass / balancer://lb1/
ProxyPassReverse / balancer://lb1/
<--------------------------------------------------------------
service httpd restart

2.使用ajp协议:

cd /etc/httpd/conf.d/
mv httpd-jk.conf httpd-jk.conf.bak
vim httpd-proxy.conf
-------------------------------------------------------------->
<Proxy balancer://lb1>
  BalancerMember ajp://192.168.19.66:8009 loadfactor=1 route=TomcatA
  BalancerMember ajp://192.168.19.74:8009 loadfactor=1 route=TomcatB
  ProxySet lbmethod=byrequests
</Proxy>

ProxyPass / balancer://lb1/
ProxyPassReverse / balancer://lb1/
<--------------------------------------------------------------
service httpd restart

以上两种方式都得以兑现负载均衡,刷新页面照旧能够看出效果,这里就不在给出图片了。至此,实验全部终了,多谢!

越来越多汤姆cat相关教程见以下内容:

CentOS 6.6下安装配置汤姆cat境况 

RedHat Linux 5.5安装JDK+Tomcat并部署Java项目   

汤姆cat权威指南(第二版)(中国和英国高清PDF版+带书签)   

汤姆cat 安全体署与个性优化  

Linux下行使Xshell查看汤姆cat实时日志中文乱码施工方案  

CentOS 64-bit下安装JDK和汤姆cat并安装汤姆cat开机运转操作步骤  

CentOS 6.5下安装Tomcat   

汤姆cat 的详尽介绍:请点这里
汤姆cat 的下载地址:请点这里

正文永恒更新链接地址:

实验系统:CentOS 6.6_x86_64 实验前提:提前希图好编写翻译意况,防火墙和selinux都关门 实验求证:本实验共有...

  1. # cat uriworkermap.properties   
  2. /*=controller  
  3. !/*.jpg=controller 
  4. !/*.gif=controller 
  5. !/*.png=controller 
  6. !/*.bmp=controller 
  7. !/*.html=controller    
  8. !/*.htm=controller 
  9. !/*.swf=controller   
  10. !/*.css=controller   
  11. !/*.js=controller 

</VirtualHost>

  1. a、安装Aapche  
  2. # tar -xzf httpd-2.2.22.tar.gz  
  3. # chown root.root -R httpd-2.2.22  
  4. # cd httpd-2.2.22  
  5. # ./configure --prefix=/usr/local/apache  
  6. # make && make install  
  7.  
  8. b、编译mod_jk模块  
  9.  
  10. # tar -xzf tomcat-connectors-1.2.32-src.tar.gz   
  11. # cd tomcat-connectors-1.2.32-src  
  12. # cd native/  
  13. #  ./configure --with-apxs=/usr/local/apache/bin/apxs   
  14. # make && make install  
  15. # ll /usr/local/apache/modules/mod_jk.so   
  16. -rwxr-xr-x 1 root root 1076923 Feb 20 14:17 /usr/local/apache/modules/mod_jk.so  
  17.  
  18. c、加载mod_jk  
  19. # vim /usr/local/apache/conf/httpd.conf   
  20. #充实的从头到尾的经过  
  21. LoadModule jk_module modules/mod_jk.so  
  22. JkWorkersFile /usr/local/apache/conf/workers.properties  
  23. JkMountFile   /usr/local/apache/conf/uriworkermap.properties  
  24. JkLogFile /usr/local/apache/logs/mod_jk.log  
  25. JkLogLevel info  
  26. JkLogStampformat "[%a %b %d %H:%M:%S %Y]"  
  27.  
  28. #报告apache,如何处理有关类形的文书(这几行可要可不用,只要urlworkermap.properties里面有定义也是能够的! :)  
  29. JkMount /* controller  
  30. JkMount /*.jsp  controller  
  31. JkMount /*.action controller  
  32.  
  33.  
  34. # cat /usr/local/apache/conf/workers.properties  
  35. # cat workers.properties   
  36. worker.list=controller 
  37. #========tomcat1========  
  38. worker.tomcat1.port=8009        
  39. worker.tomcat1.host=192.168.10.56    
  40. worker.tomcat1.type=ajp13 
  41. worker.tomcat1.lbfactor = 1     
  42. worker.tomcat12.connection_pool_timeout=750      
  43. worker.tomcat12.socket_keepalive=0      
  44. worker.tomcat12.socket_timeout=3000     
  45. worker.tomcat12.connect_timeout=1000      
  46. worker.tomcat12.reply_timeout=3300   
  47.  
  48. #========tomcat2========  
  49. worker.tomcat2.port=8009       
  50. worker.tomcat2.host=192.168.10.57   
  51. worker.tomcat2.type=ajp13 
  52. worker.tomcat2.lbfactor = 1   
  53. worker.tomcat12.connection_pool_timeout=750      
  54. worker.tomcat12.socket_keepalive=0      
  55. worker.tomcat12.socket_timeout=3000      
  56. worker.tomcat12.connect_timeout=1000      
  57. worker.tomcat12.reply_timeout=3300    
  58.  
  59. #=======balance controller====     
  60. worker.controller.type=lb 
  61. worker.retries=3     
  62. worker.controller.balance_workers=tomcat1,tomcat2     
  63. worker.controller.sticky_session=1 

 

如今有关tomcat的对话复制,有二种普及的办法:利用tomcat自个儿的简单集群效应,扶持复制会话。别的一种就是行使memcache这类缓存程序来缓存会话。

        <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

图片 5

     

有关参数表明: 

     String dataValue = request.getParameter("dataValue");

只要仅仅只是浏览,那么难题只怕不是很引人瞩目,当然假如你登入了,那么系统又会提示让您登陆。于是,就有了tomcat的对话复制! 

 

worker.tomcat12.socket_timeout=300000#此属性表达连接在未激活的场所下持续多长期,web server将积极切断之。      

                      maxThreads="6"/>

worker.loadbalancer.sticky_session=0#发挥是还是不是将对SESSION ID的诉求路由回到一样的汤姆cat worker。(暗中同意是0,session不复制) 

worker.tomcat2.lbfactor = 1   #server的加权比重,值越高,分得的伸手越来越多 

worker.tomcat12.reply_timeout=330000#此属性告诉web server在吸收接纳远端的汤姆cat已死并实时的切换来集群中的别的贰个Tomcat的回答此前等待一段时间。      

LoadModule jk_module modules/mod_jk.so

变成上述全体之后,你会开掘两台tomcat确实已经负载了,不过二个新的难题又发生,会话的主题材料。首次提交和第三遍提交不在同一台服务器,那差不离能够说是数据错失。

 

worker.tomcat12.connect_timeout=10000# 此属性表明了web server等待PONG回应的时日(以ms为单位)。      

<%

worker.tomcat12.socket_keepalive=0#此属性将报告操作系统在未激活的延续中发送KEEP_ALIVE信息(发送间距时间正视于操作系统的装置,经常为120秒),那样将防止防火墙切断未激活的互连网连接。      

 

今日当然是首推第一种方法,利用tomcat的归纳意义拓宽对话复制。 详见 利用Memcached来保存汤姆cat的session会话: http://www.linuxidc.com/Linux/2012-05/60773.htm

6.底下jsp可以用作测量检验程序安排在tomcat1,tomcat2

汤姆cat的负荷均衡(apache的mod_jk来实现): 
 
1、基于Apache的mod_jk来实现: 
        apache   
        /     
      tom1    tom2 
 
在成就两台tomcat1,tomcat2的安装之后,希望能够完成负载均衡,使用mod_jk能够完毕节点的故障苏醒功效,即三个节点出现难题,mod_jk会其不加入负载,在节点故障苏醒后,mod_jk会让其参预负载,对此节点是或不是战败,对顾客来讲是晶莹的。 
 
落到实处流程: 
a、客商访问数据达到Apache后,即使是静态内容,Apache立时回应; 
b、假诺Apache开采客商央求的是动态内容如jsp,就将呼吁丢给内部的一台tomcat来拍卖。 
c、每趟客户重复访问时,都被分配到一样台机器上(可以做会话粘滞或是会话复制) 
 
正文情状在事先的功底上新增一台机械(做负载均衡器),其实负担负载均衡的主要性是由贰个安插文件完毕!那正是workers.propertise。通过定义worker.list,port,host,type,lbfactor的值来定义每一台tomcat的主机;通过lbfactor来分别每台机械的权重,权重数值越大收获的顾客乞请数就更加的多。所以,只要重视关怀那个文件的剧情就行了。 
 
实施: 

         ServerName localhost

worker.tomcat12.reply_timeout=0#此属性表达了web server在检测到汤姆cat退步后怎么进展还原专门的学业(暗中同意便是0,全部过来)

                    <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

软件版本:httpd-2.2.21-win32-x86-openssl-0.9.8r.msi  apache-tomcat-6.0.33   tomcat-connectors-1.2.32-windows-i386-

 

XP SP3 ,jdk1.6.0_13 软件版本:httpd-2.2.21-win32-x86-openssl-0.9.8r.msi apache-tomcat-6.0.33 tomcat-connectors-1.2.32-windows-i386- httpd-2.2.x 小编是在...

#========controller,负载均衡调节器======== 

        -->

<distributable/> 此应用将与集合服务器复制Session

     String name = (String)e.nextElement();

worker.tomcat1.type=ajp13 

        <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

                 expireSessionsOnShutdown="false"

 

 

<VirtualHost *:80>

worker.tomcat1.port=8009         #ajp13 端口号,在tomcat下server.xml配  置,默认8009 

  <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> --另贰个为tomcat2       

#========tomcat2======== 

            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>

worker.controller.type=lb 

     <br>

            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

ProxyRequests Off

本人是在一台机械上作的测验,因为本人达成了apache的负荷均衡以至tomcat6的集群和session的复制,

 

 

 

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

末尾加上负载均衡布局

 

 

 

</body>

         ServerAlias localhost

 

成功安排的结果是tomcat1,tomcat2的后台打字与印刷session内容一律,通过apache访谈诉求被分发

</Location>

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

 

 

本文由巴黎人手机版发布于巴黎人-服务器,转载请注明出处:先将配置列出如下,这些是通过Apache与Tomcat之间

上一篇:打印机的类型也是非常多的,在中国这样的行业 下一篇:没有了
猜你喜欢
热门排行
精彩图文