24
2012
09

Apache2+Tomcat7+mod_jk2.2.3集群负载均衡配置(目前最强悍)

前言

  目前公司项目升级,一方面对代码进行重构,另外一方面优化服务器性能。下面就着重分享下Apache的集群和负载均衡配置。虽然网上相关的文章数不胜数,不过感觉写的都不是很到位。我这篇文章主要是根据我在实际项目配置的过程中一点点的记录下来的,希望能够帮到需要的人,从而人少走点弯路。。。

 

准备环境

1. Apache

  下载最新的apache版本2.2.18,官方下载地址为http://httpd.apache.org/download.cgi#apache22.

2. Tomcat

   下载最新tomcat版本7.0.14,官方下载地址为http://tomcat.apache.org/download-70.cgi.

3.Tomcat Connectors (mod_jk)

    下载最新版本JK1.2.31,官方下载地址为http://tomcat.apache.org/download-connectors.cgi.

 

应用配置

 

1.Apache配置

 

  安装Apache程序到指定目录,假设我们安装到d:/Apache2 ,找到该目录下面conf/ht tpd.conf  (写成ht tp.conf中间多个空格的原因是由于博客所用虚拟主机限制,文章中不能出现此文件名).主要修改过程包括如下几个步骤:

  • 查找DocumentRoot 关键字,修改默认的应用目录d:/Apache2/htdocs 为d:/wwwroot ,主要方便以后发布程序。

  • 查找<Directory "D:/Apache2/htdocs"> 修改为<Directory "D:/wwwroot">

  • 查找DirectoryIndex 关键字,在末尾添加index.jsp index.php etc.

  重启apache服务,创建内容It works!到index.html中并且拷贝到wwwroot目录下,然后在游览器访问http://localhost,如果看到It works!字样,则说明apache配置成功。

 

2.JK配置

  在d:\apache2目录下面创建conf.d 文件夹,主要用来存放集群需要的配置文件。

  • 创建mod_jk.conf存放到d:\apache2\conf.d中。具体配置内容如下:

Html代码  收藏代码
  1. LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so   

  2.   

  3. # 与tomcat整合实现负载均衡配置  

  4. JkWorkersFile conf.d/workers.properties  

  5. # 访问url地址规则定义和过滤  

  6. JkMountFile conf.d/uriworkermap.properties  

  7.   

  8. JkShmFile logs/mod_jk.shm  

  9.   

  10. # 记录负载均衡日志  

  11. JkLogFile logs/mod_jk.log       

  12.    

  13. # Set the jk log level [debug/error/info]  

  14. JkLogLevel info  

  15.    

  16. # Select the log format  

  17. JkLogStampFormat  "[%a %b %d %H:%M:%S %Y]"  

  18.    

  19. # JkOptions indicates to send SSK KEY SIZE  

  20. JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories  

  21.    

  22. # JkRequestLogFormat  

  23. JkRequestLogFormat "%w %V %T"  

  24.    

  25. #对tomcat项目别名,此处一定要配置,否则你项目的静态文件无法调用  

  26. Alias /OneByOne /opt/wwwroot/webapps/OneByOne  

  27. #设置tomcat发布文件的权限,必须配置,否则报403错误  

  28. <Directory "/opt/wwwroot/webapps">  

  29. #Options FollowSymLinks    

  30. Options Indexes FollowSymLinks    

  31. #Options Indexes MultiViews    

  32. AllowOverride None    

  33. Order deny,allow                              

  34. #Deny from all                          

  35. allow from all  

  36. Satisfy all    

  37. </Directory>  

  38. # 定义需要由tomcat解析的访问url  

  39. JkMount /* controller    

  40. # 排除不需要由tomcat解析的地址,比如下面定义的dbm是php工程,所以访问目录就需要排除  

  41. JkUnMount /dbm* controller    

 
  • 新建并且编辑workers.properties文件,负载均衡配置如下所示:

 Html代码  收藏代码

  1. # 定义worker,此处的list名称必须和mod_jk.conf文件中的controller名称一致  

  2. worker.list=controller   

  3. # Define Node1  

  4. worker.tomcat1.port=8009  

  5. worker.tomcat1.host=localhost  

  6. worker.tomcat1.type=ajp13  

  7. worker.tomcat1.lbfactor=1  

  8. worker.tomcat1.connection_pool_size=10  

  9. worker.tomcat1.connection_pool_timeout=600  

  10. worker.tomcat1.socket_connect_timeout=300  

  11.    

  12. # Define Node2  

  13. worker.tomcat2.port=9009  

  14. worker.tomcat2.host=localhost  

  15. worker.tomcat2.type=ajp13  

  16. worker.tomcat2.lbfactor=1  

  17. worker.tomcat2.connection_pool_size=10  

  18. worker.tomcat2.connection_pool_timeout=600  

  19. worker.tomcat2.socket_connect_timeout=300  

  20.    

  21. # Load-balancing behaviour  

  22. worker.controller.type=lb  

  23. worker.controller.balance_workers=tomcat1, tomcat2  

  24. worker.controller.sticky_session=0  

  25. worker.controller.sticky_session_force=1  

  26. #loadbalancer   

  27. ***************************************************************************************/  

 
  • 新建并编辑uriworkermap.properties文件,具体的配置代码如下: 

Html代码  收藏代码
  1. /*=controller  

  2. !/*.html=controller  

  3. !/*.css=controller  

  4. !/*.gif=controller  

  5. !/*.jpg=controller  

  6. !/*.png=controller  

  7. !/*.js=controller  

 

     上面都配置好了以后,别忘了添加Include conf.d/*.conf 到apache的ht tpd.conf配置文件中。目的让apache能够找到mod_jk.conf配置文件。

 

3.tomcat配置

 

     这边我配置了两个tomcat,将下载的tomcat文件解压到d:\tomcat1和d:\tomcat2目录下,然后分别修改所在目录下面server.xml配置文件,tomcat1修改的截图如下:

     

bfed5702-9625-366c-bbb0-a9cd5e356afa.jpg
  

tomcat2中的server.xml配置截图如下:


317ff22d-c066-3bcc-a9ee-bc4c8cd810dc.jpg

上面两个配置文件中的节点connector中的属性port和jvmRouter值需要和worker.properties中的设定一致。这个就不一一阐述了,相信搞程序的一看就明白。

 

测试集群

 

   1. 创建test项目,这个我也就直接拷贝网上的例子。然后将项目拷贝到d:\webapps目录下面。

    index.jsp内容:

 

Java代码  收藏代码
  1. <%@ page contentType="text/html; charset=GBK" %>  

  2.   

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

  4.   

  5. <html><head><title>Cluster App Test</title></head>  

  6.   

  7. <body>  

  8.   

  9. Server Info:  

  10.   

  11. <%  

  12.   

  13. out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>  

  14.   

  15. <%  

  16.   

  17.   out.println("<br> ID " + session.getId()+"<br>");  

  18.   

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

  20.   

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

  22.   

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

  24.   

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

  26.   

  27.      session.setAttribute(dataName, dataValue);  

  28.   

  29.   }  

  30.   

  31.   out.println("<b>Session 列表</b><br>");  

  32.   

  33.   System.out.println("============================");  

  34.   

  35.   Enumeration e = session.getAttributeNames();  

  36.   

  37.   while (e.hasMoreElements()) {  

  38.   

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

  40.   

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

  42.   

  43.      out.println( name + " = " + value+"<br>");  

  44.   

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

  46.   

  47.    }  

  48.   

  49. %>  

  50.   

  51.   <form action="test2.jsp" method="POST">  

  52.   

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

  54.   

  55.      <br>  

  56.   

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

  58.   

  59.      <br>  

  60.   

  61.     <input type=submit>  

  62.   

  63.    </form>  

  64.   

  65. </body>  

  66.   

  67. </html>  

  

   2. 启动两个tomcat,然后重启apache,直接在浏览器访问http://localhost/test。

转自:http://blog.csdn.net/kobe_lzq/article/details/7047834

« 上一篇: 使用mod_jk2.so整合了... 下一篇: 发现Z-Blog 腾讯微博同步... »
与此文相关的文章,有兴趣就接着看看吧:

 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。