Apache+2Tomcat 集群及调优

一、集群配置

1.1 所需软件

  a) apache_2.2.4-win32-x86-no_ssl.msi;

  b) apache-tomcat-6.0.28.rar

  c) mod_jk-apache-2.2.4.so

1.2 Apache的配置

1.   在apache安装目录下conf目录中找到http.conf,在文件最后加上下面一句话就可以了,如下图:

include conf/mod_jk.conf

2.   将mod_jk-apache-2.2.4.so文件放入如下文件夹中

路径:C:\Apache\Apache2.2\modules

3.   http.conf同目录下新建mod_jk.conf文件,内容如下:  

#加载mod_jk Module

LoadModule jk_module modules/mod_jk-apache-2.2.4.so

 

#指定 workers.properties文件路径

JkWorkersFile conf/workers.properties

 

#指定请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器

 

JkMount /* controller

4.   在http.conf同目录下新建 workers.properties文件,内容如下:  

worker.list = controller   #server 列表

 

#========tomcat1========

 

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

worker.tomcat1.host=10.2.121.184  #tomcat的主机地址,如不为本机,请填写ip地址

worker.tomcat1.type=ajp13

worker.tomcat1.lbfactor = 1   #server的加权比重,值越高,分得的请求越多

 

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

 

worker.tomcat2.port=8009       #ajp13端口号,在tomcatserver.xml配置,默认8009

worker.tomcat2.host=10.2.121.234  #tomcat的主机地址,如不为本机,请填写ip地址

worker.tomcat2.type=ajp13

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

#========controller,负载均衡控制器========

worker.controller.type=lb

worker.controller.balanced_workers=tomcat1,tomcat2   #指定分担请求的tomcat

worker.controller.sticky_session=1

worker.controller.recovery_options=3

 

#worker.controller.socket_keepalive=1

#worker.controller.connection_pool_size=50

#worker.controller.connection_pool_minsize=25

#worker.controller.connection_pool_timeout=600

#worker.controller.socket_timeout=20

说明:

recovery_options属性说明了web server在检测到Tomcat失败后如何进行恢复工作。默认情况下,web server将转发请求给处于负载平衡模式中的另一个Tomcat。属性值为0,说明全部恢复;属性值为1,说明如果在Tomcat接到请求后出现失败状况,则不进行恢复;属性值为2,说明如果在Tomcat发送http头给客户端后出现失败状况,则不进行恢复;属性值为3,说明如果在Tomcat接到请求后出现失败状况或者在Tomcat发送http头给客户端后出现失败状况,则不进行恢复。此属性在jk 1.2.6版本被增加进来,以求避免Tomcat的死机和在支持ajp13的servlet引擎上发生的问题。此属性默认为全部恢复。

因在默认的情况下,JK检测tomcat的工作情况,所以浪费了很多资源,这个资源多到比tomcat正常工作所需的资源的1.6倍还多。如果不检测恢复,则效率高了,处理的请求数可以是原来的2.6倍多,而且tomcat还不死--没响应,反而使出错的数量比检测恢复之后出错的数量还少,性能还加强了

1.3 Tomcat的配置

  修改tomcat1/tomcat2配置文件server.xml,设置jvmRoute:

l  在184服务器的Tomcat 配置文件server.xml配置,如下图:

l  在234服务器的Tomcat 配置文件server.xml配置,如下图:

1.4集群测试

1.  在184服务器的tomcat 默认首页index.html

(路径:%TOMCAT_HOME%\webapps\ROOT\index.html),在页面的顶部增加:

Access tomcat1

2.  在234服务器的tomcat 默认首页index.html

(路径:%TOMCAT_HOME%\webapps\ROOT\index.html),在页面的顶部增加:

Access tomcat2

3.  启动apache,tomcat1,tomcat2,进行测试:

通过http://localhost 访问,访问到Tomcat 欢迎界面显示访问的是 234的tomcat节点;再刷新一次,显示访问的是 184的tomcat节点,可以看到请求会被tomcat1,tomcat2轮流处理,实现了负载均衡

  如图:

  

二、Apache负载均衡调优

1.         Httpd.conf 释放httpd-mpm.confhttpd-default.conf

打开httpd.conf配置文件

l  #Include conf/extra/httpd-mpm.conf 前的 # 注释去掉

l  #Include conf/extra/httpd-default.conf 前的 # 注释去掉

2.         配置httpd-mpm.conf

通过  httpd -l 可以,查看自己的Apache部署的是哪个模块。

C:\Apache\Apache2.2\bin\httpd -l
  Complied in modules:
    core.c
    mod_win32.c
    mpm_winnt.c
    http_core.c
    mod_so.c

看到里面有mpm_winnt.c ,我们就在httpd-mpm.conf<IfModule mpm_winnt_module>进行配置

l  配置mpm_winnt_module 模块

<IfModule mpm_winnt_module>
    ThreadLimit  350    
    ThreadsPerChild     350
    MaxRequestsPerChild    10000
    Win32DisableAcceptEx
    EnableMMAP off
    EnableSendfile off
</IfModule>

3.         配置httpd-default.conf

Timeout50
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

备注:timeout 设置apache等待一个连续读写操作的时间长度,也就是连接后,apache 等待客户端完成请求发送的时间,或者相应开始之后,apache写出数据到客户端连接的时间长度,
无论对于那种应用来说,300秒的缺省值都有些过长了,意味着,如果客户端发生某种未知因素导致的迟滞连接,服务器的一个连接和与之对应的所有资源都要维持300秒,这个对于重载服务器来说实在是有些过长了,建议将此值设置得小一些,这个长度只要足够保证各种客户端的应用能够正常传递数据即可。视各种客户端的连接状况和服务器的繁忙程度。一般来说设置3-5
KeepAlive On
//
使用保持连接功能,即客户一次请求只能响应一个文件,建议用户将此参数的值设置为on,即允许保持连接的功能;如果同一页面包含大量的静态文件的应用,设置为on,以提高性能;如果用于主要为动态页面的应用,设置为off,以节约内存资源;如果服务器前跑有squid或者其他七层设备,设置为On
MaxKeepAliveRequests 100 
//
在使用保持连接功能时,设置客户一次请求连接能响应文件的最大上限;也就是每个连接允许请求的数量(最多保持多少个活动的长链接)。如果将此设置为“0”,将不限制请求的数目。建议将此值设为100-500之间的一个值,以确保最优的服务器性能。
 KeepAliveTimeout 5
在使用保持连接功能时,两个相邻的连接时间间隔超过5秒就切断连接;也就是设置持久连接中服务器在两次请求之间等待的秒数,对于高负荷服务器来说keeplivetimeout 值较大会导致一些性能方面的问题,超时值越大,与空闲客户端保持的连接进程就越多;

三、Session 复制控制

对于大多数集群服务器为防止session丢失,需要考虑session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它tomcat,集群内的tomcat都有相同的session。具体的配置过程如下:

1.   去掉tomcat1和tomcat2中的注释:

2.   将tomcat中的4001端口修改成4002:

3.   增加jvmRoute,tomcat1和tomcat2都需要:

  

注意:tomcat1下jvmRoute=”tomcat1”,tomcat2下jvmRoute=”tomcat2”。

4.   测试session复制

l  在184服务器,%TOMCAT_HOME%\webapps\ROOT目录下,创建test.jsp,内容如下:  

<%@ page contentType="text/html; charset=GBK"%>

<%@ page import="java.util.*"%>

 

 

Server Info:

<%

out.println(request.getLocalAddr()+" : "+ request.getLocalPort()+"

");%>

<%

  out.println("

ID "+ session.getId()+"

");

 

  // 如果有新的 Session 属性设置

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

  if(dataName !=null&& dataName.length()>0){

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

     session.setAttribute(dataName, dataValue);

  }

 

  out.print("Session列表");

 

  Enumeration e = session.getAttributeNames();

  while(e.hasMoreElements()){

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

     String value = session.getAttribute(name).toString();

     out.println( name +" = "+ value+"

");

         System.out.println( name +" = "+ value);

   }

%>

<form action="index.jsp" method="POST">

    名称:<input type=text size=20 name="dataName">

     <br>

    :<input type=text size=20 name="dataValue">

     <br>

    <input type=submit>

   </form>

</body>

</html>

 

l  将test.jsp拷贝到234服务器%TOMCAT_HOME%\webapps\ROOT目录下下,

l  重启apache,tomcat1,tomcat2,输入网址http://localhost/ test.jsp

l  新建一个名称为 crazyiter ,值为 jiangge的session,提交查询,新开一个IE窗口,再提交查询,如图,可以看到,两个tomcat是负载均衡,并且session同步的

  说明:在没有联网的情况下,按照上面的配置启动tomcat要报错,如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值