精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-07
最后修改:2011-05-17
前言
目前公司项目升级,一方面对代码进行重构,另外一方面优化服务器性能。下面就着重分享下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.
下载最新版本JK1.2.31,官方下载地址为http://tomcat.apache.org/download-connectors.cgi.
应用配置
1.Apache配置
安装Apache程序到指定目录,假设我们安装到d:/Apache2 ,找到该目录下面conf/httpd.conf .主要修改过程包括如下几个步骤:
重启apache服务,创建内容It works!到index.html中并且拷贝到wwwroot目录下,然后在游览器访问http://localhost,如果看到It works!字样,则说明apache配置成功。
2.JK配置
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so # 与tomcat整合实现负载均衡配置 JkWorkersFile conf.d/workers.properties # 访问url地址规则定义和过滤 JkMountFile conf.d/uriworkermap.properties JkShmFile logs/mod_jk.shm # 记录负载均衡日志 JkLogFile logs/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" # JkOptions indicates to send SSK KEY SIZE JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat JkRequestLogFormat "%w %V %T" # 定义需要由tomcat解析的访问url JkMount /* controller # 排除不需要由tomcat解析的地址,比如下面定义的dbm是php工程,所以访问目录就需要排除 JkUnMount /dbm* controller
# 定义worker,此处的list名称必须和mod_jk.conf文件中的controller名称一致 worker.list=controller # Define Node1 worker.tomcat1.port=8009 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=9009 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.controller.type=lb worker.controller.balance_workers=tomcat1, tomcat2 worker.controller.sticky_session=0 worker.controller.sticky_session_force=1 #loadbalancer ***************************************************************************************/
/*=controller !/*.html=controller !/*.css=controller !/*.gif=controller !/*.jpg=controller !/*.png=controller !/*.js=controller
上面都配置好了以后,别忘了添加Include conf.d/*.conf 到apache的httpd.conf配置文件中。目的让apache能够找到mod_jk.conf配置文件。
3.tomcat配置
这边我配置了两个tomcat,将下载的tomcat文件解压到d:\tomcat1和d:\tomcat2目录下,然后分别修改所在目录下面server.xml配置文件,tomcat1修改的截图如下:
tomcat2中的server.xml配置截图如下:
上面两个配置文件中的节点connector中的属性port和jvmRouter值需要和worker.properties中的设定一致。这个就不一一阐述了,相信搞程序的一看就明白。
测试集群
1. 创建test项目,这个我也就直接拷贝网上的例子。然后将项目拷贝到d:\webapps目录下面。 index.jsp内容:
<%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.*" %> <html><head><title>Cluster App Test</title></head> <body> Server Info: <% out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%> <% out.println("<br> ID " + session.getId()+"<br>"); // 如果有新的 Session 属性设置 String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.println("<b>Session 列表</b><br>"); System.out.println("============================"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"<br>"); System.out.println( name + " = " + value); } %> <form action="test2.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>
2. 启动两个tomcat,然后重启apache,直接在浏览器访问http://localhost/test。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 3108 次