《负载均衡配置文件 apche》由会员分享,可在线阅读,更多相关《负载均衡配置文件 apche(7页珍藏版)》请在金锄头文库上搜索。
1、负载均衡配置文件负载均衡配置文件 apcheapchetomcat 集群配置 2008-04-02 14:36:50 Apache + Tomcat 集群配置 一、 环境说明 Windows XP apache_2.0.59-win32-x86-no_ssl.msi http:/httpd.apache.org/ mod_jk-apache-2.0.59.so http:/tomcat.apache.org/download-connectors.cgi apache-tomcat-5.5.23.zip http:/tomcat.apache.org/download-55.cgi 或(自己测
2、试用的)Windows XP apache_2.2.8-win32-x86-openssl-0.9.8g.msimod_jk-1.2.26-httpd-2.2.4.sojakarta-tomcat-5.0.30我的程序分别安装到 D:webserverApache GroupApache2 D:webserverTomcatClustertomcat1 D:webserverTomcatClustertomcat2 Apache 安装完后,在右下角状态栏中可以看到 Apache Service Monitor 可以控制 Apache 的状态。 验证 Apache 是否安装成功,可以访问 htt
3、p:/localhost 如果能看到 Apache 的预制页面,说明安装成功,如果不行,可以访问http:/localhost:8080 试试(可能因为 IIS 已经使用了 80 端口, 我的就是 8080, 可以修改 Apache 的配置文件来修改) 二、 负载均衡 找到 Apache 安装目录下 conf 目录中的 httpd.conf 文件。 在文件最后添加一句: include “D:webserverApache GroupApache2confmod_jk.conf“ 接着在 conf 目录中新建文件 mod_jk.conf 并添加下面的内容: #加载 mod_jk Module
4、LoadModule jk_module modules/mod_jk-apache-2.0.59.so #指定 workers.properties 文件路径 JkWorkersFile conf/workers.properties #指定哪些请求交给 tomcat 处理,“controller“为在workers.propertise 里指定的负载分配控制器名 JkMount /*.jsp controller 在 conf 目录下新建 workers.properties 文件并添加如下内容: #server worker.list = controller #=tomcat1= wo
5、rker.tomcat1.port=11009 worker.tomcat1.host=localhost worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor = 1 #=tomcat2= worker.tomcat2.port=12009 worker.tomcat2.host=localhost worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor = 1 #=controller,负载均衡控制器= worker.controller.type=lb worker.controller.balan
6、ced_workers=tomcat1,tomcat2 worker.controller.sticky_session=1 (解释一下 AJP13 是 Apache JServ Protocol version 1.3) 将 mod_jk-apache-2.0.59.so 复制到 Apache 的 modules 目录中。 接下来配置 2 个 Tomcat 打开 tomcat1conf server.xml 将 Server port 改为 11005 将 Define Connector port 改为 11080 打开 tomcat2confserver.xml 将 Server por
7、t 改为 12005 将 Define Connector port 改为 12080 好了,现在建立一个测试程序 分别在两个 Tomcat 的 webapps 中建立 test 目录,并新建 test.jsp文件,内容如下: 启动 apache, tomcat1, tomcat2 访问 http:/localhost:8080/test/test.jsp (或者 http:/localhost/test/test.jsp)不断刷新页面,可以在两个Tomcat 的控制台中看到,交替输出“=“, 这样就实现了负载均衡。 三、 集群配置 集群除了负载均衡,另一个主要功能是 Session Repl
8、ication。 打开 tomcat1conf server.xml 将部分的注释去掉。 再打开 tomcat2conf server.xml 将部分的注释也去掉,并将中的 tcpListenPort 的值改为 4002。以避免与 Tomcat1 冲突。 添加一个新的测试程序 test2.jsp Cluster App Test Server Info: “);% ID “ + session.getId()+“); / 如果有新的 Session 属性设置 String dataName = request.getParameter(“dataName“); if (dataName !=
9、null session.setAttribute(dataName, dataValue); out.println(“Session 列表“); 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+“
10、); System.out.println( name + “ = “ + value); % 名称: 值: 分别在 2 个 tomcat 的 webappstest 中新建 WEB-INF 目录,在 WEB-INF 中添加 web.xml 内容如下: TomcatDemo 主要是添加,distributable 元素用来告诉servlet 容器,程序将部署在分布式 Web 容器中。 重新启动 tomcat1 和 tomcat2. 访问http:/localhost:8080/test/test2.jsp (或http:/localhost/test/test2.jsp) 随意添加 key-v
11、alue, 可以看到两个 tomcat 交替显示 session 中的值,各个 tomcat 的 session 是同步的。 再来修改 tomcat1confserver.xml,找到 为其添加 jvmRoute 属性,值为 apache 的confworkers.properties 中配置的 tomcat 名字。 同样修改 tomcat2confserver.xml 的相同部分 jvmRoute 是 tomcat 路由标示,由此区分两台 tomcat 主机。一次会话,就有一个 sessionID,这个 sessionID 后面会跟上 jvmRoute 设置的值,这样一次会话,就只会让一个
12、tomcat 处理。 重新启动 tomcat1, tomcat2 访问 http:/localhost:8080/test/test2.jsp 可以看到session.getId()的值在原 session id 后面多了 jvmRoute 的值。 ID 46A5843FF4A1E0A84338225AC02F6430.tomcat1 随意添加 key-value,可以看到 session 信息只在 tomcat1 中输出。再打开一个浏览器,并访问http:/localhost:8080/test/test2.jsp 其 session id 可能变为 ID 11478E5BE5FE388E4845205B4133A30F.tomcat2 其值也只会在 tomcat2 中输出。 现在把 tomcat1 关闭,再次刷新访问 tomcat1 的那个浏览器,可以看到 session 信息输出到了 tomcat2 的控制台中,并且 session 信息仍然保留着