>

行使httpd对Tomcat进行负荷均衡布局

- 编辑:乐百家599手机首页 -

行使httpd对Tomcat进行负荷均衡布局

Apache 汤姆cat负载均衡布局,tomcat负载均衡

Apache 汤姆cat负载均衡能确定保证较高的可用性和系统天性,那么些是通过Apache与汤姆cat之间的通信来完成的。Apache和汤姆cat之间的简报基本有两种格局:Mod_Jk、HTTP_Proxy、AJP_Proxy其中以Mod_Jk最为流行,何况官方的文书档案也极度全。

Mod_JK是Apache的三个模块,其通过AJP公约落到实处与汤姆cat之间的报道,汤姆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 模块使用代理工夫来一连Tomcat。在配置从前请确认保障是不是使用的是 2.2.x 版本的 Apache 服务器。因为 2.2.x 版本对那一个模块进行了重写,大大的加强了其效果和安静。

http_proxy 方式是依附 HTTP 公约的代理,因而它供给 Tomcat 必得提供 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与汤姆cat之间的电视发表来产生的。...

动用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

实行拓扑:

www.lo599.com 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_www.lo599.com,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

www.lo599.com 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

  用浏览器张开

www.lo599.com 3   www.lo599.com 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   

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

正文永恒更新链接地址:

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

汤姆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来区分每台机器的权重,权重数值越大收获的顾客央浼数就越来越多。所以,只要重点关切这几个文件的剧情就行了。 
 
实施: 

尝试系统:CentOS 6.6_x86_64

  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 

试验前提:提前筹划好编写翻译情状,防火墙和selinux都关门

连锁参数表明: 

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

worker.tomcat12.socket_keepalive=0#此属性将告诉操作系统在未激活的接连中发送KEEP_ALIVE音讯(发送间隔时间注重于操作系统的设置,一般为120秒),那样将卫戍防火墙切断未激活的互连网连接。      

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

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

实施拓扑:

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

www.lo599.com 5

worker.tomcat12.reply_timeout=330000#此属性告诉web server在抽取远端的Tomcat已死并实时的切换到集群中的别的一个Tomcat的回应以前等待一段时间。      

一、两台机器安装JAVA遇到

worker.tomcat12.reply_timeout=0#此属性表达了web server在检验到汤姆cat失败后什么进展复原工作(暗中认可正是0,全体复苏)

1.安装JAVA:

worker.loadbalancer.sticky_session=0#发布是或不是将对SESSION ID的呼吁路由回到同样的汤姆cat worker。(私下认可是0,session不复制) 

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

  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 

2.安插情状变量:

造成上述全体之后,你会发觉两台tomcat确实已经负载了,可是叁个新的难题又生出,会话的难题。第一遍提交和第三次提交不在同一台服务器,那大约可以说是数据错失。

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的对话复制! 

二、两台机器安装tomcat

这几天有关tomcat的对话复制,有二种广泛的主意:利用tomcat本人的粗略集群效果与利益,扶助复制会话。另外一种就是行使memcache那类缓存程序来缓存会话。

1.安装tomcat:

前日自然是首荐第一种方式,利用tomcat的简约意义扩充对话复制。 详见 利用Memcached来保存汤姆cat的session会话: http://www.linuxidc.com/Linux/2012-05/60773.htm

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

www.lo599.com 6

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状态:

本文由乐百家服务器发布,转载请注明来源:行使httpd对Tomcat进行负荷均衡布局