Apache集群配置(mod_jk).doc

上传人:hw****26 文档编号:3519622 上传时间:2019-06-01 格式:DOC 页数:13 大小:120KB
下载 相关 举报
Apache集群配置(mod_jk).doc_第1页
第1页 / 共13页
Apache集群配置(mod_jk).doc_第2页
第2页 / 共13页
Apache集群配置(mod_jk).doc_第3页
第3页 / 共13页
Apache集群配置(mod_jk).doc_第4页
第4页 / 共13页
Apache集群配置(mod_jk).doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、Apache+Tomcat 集群配置一、 技术基础Apache 和 Tomcat 同是 Apache 基金会下面的两个项目。一个是 HTTP WEB 服务器,另一个是 servlet 容器(servlet container) ,最新的 5.5.X 系列实现Servlet 2.4/JSP 2.0Spec,一般也可以把 Tomcat 看做是应用服务器。Apache 是目前比较受欢迎的网站服务器软件,它不但功能强大,而且完全免费,并且支持市场上流行的各种操作系统(Windows,Linux,Mac os)。Tomcat 也是 Apache 出品的,应用于对 Java Servlet/JSP 的支持

2、的应用服务器。Tomcat 除了支持 Java Servlet/JSP 之外,也可以当做网站服务器使用。但是在对于静态的 html 文件、图片文件等的解析效率上不如 Apache 的执行效率高。例如应用 tomcat 的服务器如果网站的访问量较大,系统资源占用会明显升高,服务器负担会加重,从而导致系统或服务器崩溃。因此在实际应用中,常常把 Tomcat 与 Apache 集成。当 Tomcat 与 Apache集成时,Apache 负责静态资源处理,tomcat 负责 jsp 和 java servlet 等动态资源的处理。在我们生产的环境中,往往需要 Apache 做前端服务器,Tomcat

3、做后端服务器。此时我们就需要一个连接器,这个连接器的作用就是把 所有Servlet/JSP 的请求转给 Tomcat 来处理。Tomcat 服务器的工作模式通常为进程外的 Servlet 容器,Tomcat 服务器与 Apache 之间通过专门的插件来通信。利用 apache 来解析*.html *.htm *.jpg *.gif *.js 等静态网页与内容当遇到*.jsp,* servlet 和*.do 时,通过一个 apache 中的 module 把这些内容抛给 Tomcat 来处理。第一个连接器监听 8080 端口,负责建立 HTTP 连接。在通过浏览器访问Tomcat 服务器的 We

4、b 应用时,使用的就是这个连接器。第二个连接器监听 8009 端口,负责和其他的 HTTP 服务器建立连接。在把Tomcat 与其他 HTTP 服务器集成时,就需要用到这个连接器。Web 客户访问 Tomcat 服务器上 JSP 组件的两种方式如图所示:二、 环境说明Apache: apache_2.2.2 Tomcat: apache-tomcat-5.5.17 (zip 版) mod_jk: mod_jk-apache-2.2.4.so(Apache 与 Tomcat 通信的插件)操作系统:windows XP 或 windows 2K三、 具体步骤第一部分:负载均衡负载均衡,就是 apa

5、che 将客户请求均衡的分给 tomcat1,tomcat2.等多个服务器的多个不同的 Tomcat 去处理!如此就把单个 Tomcat 的负担降到最低了!1. 安装 apche,tomcat注意:安装 apache 时必须写明主机地址或域名,邮箱随便填假设有两台机器负载,那么各装 1 个 tomcat2在 apache 安装目录下 conf 目录中找到 http.conf在文件最后加上下面一句话就可以了(假设我的 apache 在E:ideapache 目录下)include “E:ideapacheconfmod_jk.conf“作用:加入这句话指定 mod_jk 配置文件路径。3. ht

6、tp.conf 同目录下新建 mod_jk.conf 文件,内容如下#加载 mod_jk Module(把 mod_jk-apache-2.2.4.so 拷贝到E:ideapachemodules 文件夹)LoadModule jk_module modules/ mod_jk-apache-2.2.4.so#指定 workers.properties 文件路径JkWorkersFile conf/workers.properties#指定把哪些请求交给 tomcat 处理,“controller“为在workers.propertise 里指定的负载分配控制器JkMount /*.jsp c

7、ontrollerJKMount /*.do controllerJKMount /*servlet controller(注:为了配置方便,务必使 servlet 都以 servlet 结尾)-备注:这里也可以设置是否把*.jpg,*.js,*.html,*.htm,*.txt,*.gif, *.xml, *.dtd等静态内容的请求交给 tomcat 处理(最好不这样处理),一般都是静态内容给 apache 而动态内容给 tomcat,那么只要在这里分配*.jsp,*.do,*servlet 等这些动态内容给 tomcat 即可,其他静态内容给 apache 处理,具体的配置路径请见注意事项

8、 2。作用:配置插件与属性文件并且处理各种请求格式的分配4. 在 http.conf 同目录下新建 workers.properties 文件,内容如下 :worker.list = controller,tomcat1,tomcat2 #server 列表,命名controller 与 mod_jk.conf 文件中的 controller 相对应#=tomcat1=worker.tomcat1.port=8009 #ajp13 端口号,在 tomcat 下server.xml 配置,默认 8009,ajp 为 tomcat 与 apache 通讯协议worker.tomcat1.host=

9、localhost #tomcat 所在主机地址,如不为本机,请填写 ip 地址worker.tomcat1.type=ajp13 #使用 ajp13 协议worker.tomcat1.lbfactor = 1 #server 的加权比重,值越高,分得的请求越多,都为 1 时为平均分配#=tomcat2=worker.tomcat2.port=8009 #ajp13 端口号,在 tomcat 下server.xml 配置,默认 8009,ajp 为 tomcat 与 apache 通讯协议(ps:若有端口冲突,请在 tomcat/conf/server.xml 文件中的改为然后把 worker

10、.tomcat2.port=8009 改为 worker.tomcat2.port=9009)worker.tomcat2.host=localhost #tomcat 所在主机地址,如不为本机,请填写 ip 地址worker.tomcat2.type=ajp13 #使用 ajp13 协议worker.tomcat2.lbfactor = 1 #server 的加权比重,值越高,分得的请求越多,都为 1 时为平均分配#=controller 负载均衡控制器=worker.controller.type=lbworker.controller.balanced_workers=tomcat1,t

11、omcat2 #指定分担请求的 tomcatworker.controller.sticky_session=1 #允许负载均衡控制器复制 session 5. 编写一个测试 jsp建立一个目录 test.里面新建一个 test.jsp,内容为把 test 放到 tomcat1,tomcat2 的 webapps 下6. 启动 apache,tomcat1,tomcat2,进行测试通过 http:/(apache 配置时候的主机地址)/test/test.jsp 访问,查看 tomcat1 的窗口,可以看到打印了一行“=“再刷新一次,tomcat2 也打印了一条,再刷新,可以看到请求会被tom

12、cat1,tomcat2 轮流处理,实现了负载均衡!第二部分,配置集群只配置负载均衡还不行,还要 session 复制,也就是说其中任何一个tomcat 的添加的 session,是要同步复制到其它 tomcat, 集群内的 tomcat 都有相同的 session1. 修改 tomcat1, tomcat2 的 server.xml将集群部分配置的在注释符删掉即可.集群部分的配置如下:(只要把此部分的注释符去掉即可)如图所示:注:这种集群配置方法会使得多个不同的 tomcat 每步操作都轮流执行命令,而 session 也会共享,且互相不影响执行效果!另外,可以关注一下如果想要一个 tomc

13、at 始终负责一个 session 到其生命周期结束或网页关闭,然后另一个 tomcat 负责下一个 session 到其生命周期结束或网页关闭。这也是一种轮流操作,只不过这种操作是轮流 session 操作,要想得到这种效果,必须设置 jvmRoute(给控制器设置序列),方法如下:在 tomcat 的 conf 中的 server.xml 文件中修改如下:如图所示:2.修改测试项目 test修改刚才的 test/test.jsp,内容如下Cluster App TestServer Info:“);%ID “ + session.getId()+“);/ 如果有新的 Session 属性设

14、置String dataName = request.getParameter(“dataName“);if (dataName != null 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()

15、;out.println( name + “ = “ + value+“);System.out.println( name + “ = “ + value);%名称:值:然后在 test 目录 新建 WEB-INF 目录,WEB-INF 下新建 web.xml,内容如下TomcatDemo注意:如果是你自己的应用程序的话,那么在你的应用程序的 web.xml 加入 就是表示此工程会被允许让 tomcat 复制 session!(重点,如果忘记加 distributable 那么会造成 session 无法复制的问题!)ok,重启 apache,tomcat1,tomcat2,输入网址 htt

16、p:/ (apache 配置时候的主机地址)/test/test.jsp 3.测试结果先输入一个 session 提交,然后不输直接提交,只要可以在后台看到两边的tomcat 会都有同一个 session 的信息显示,那么 session 复制就成功了!四、 注意事项以下针对本公司的 upload 工程做进一步的注意事项介绍:1. 配置 apache 时要注意配置好 apache 机器的网络地址或域名2. 为了直接打网址就可以打开工程主页可以把 Tomcat 中 webappsROOT 文件全部删除后把自己工程目录内的文件复制进 ROOT 文件夹就是把tomcat 中绑定的 upload 工程

17、目录下的所有文件和文件夹放进 ROOT 目录内即可,即把 ROOT 目录看作是 upload 工程目录。把 Apache 中的 htdocs 文件夹原来的文件删除掉,然后把自己的工程目录内的静态文件夹以及文件复制进 htdocs 文件夹即可:以 upload 为例,具体目录结构如下所示:htdocs(相当于 eclipse 中 upload 工程的主目录 upload)pages(upload 工程目录中的 pages 文件夹以及此文件夹中所有静态内容)upload(upload 工程目录中的 upload 文件夹以及此文件夹中所有静态内容)其次还要进行一项配置:在 apache/conf/h

18、ttpd.conf 中修改如下:DirectoryIndex index.html,192.168.1.112/upload/index.jsp即添加一个 upload 工程内的 index.jsp 首页,那么你在地址栏打192.168.1.112 即可显示整个工程页面了!3. 由于某些 servlet 没有以 servlet 结尾,那么必须把每个 servlet 的全名写进 mod_jk.conf 的指定请求处理中,否则不会识别 servlet,具体如下:JkMount /*checkUserName controllerJkMount /*UploadServlet controllerJ

19、kMount /*getUploadInfo controllerJkMount /*getAppendUploadInfo controllerJkMount /*getFileInfo controllerJkMount /*insertFileInfo controllerJkMount /*getGroupUploadInfo controllerJkMount /*getGroupAppendUploadInfo controllerJkMount /*insertGroupFileInfo controllerJkMount /*updateFileInfo controllerJkMount /*initUid controllerJkMount /*userAction.zip controllerJkMount /*UploadFileNormal controller4由于本项目使用了 url 改写,导致 mod_jk.conf 中无法识别改写后的页面,解决方法:把 WEB-ROOT 下的 urlrewrite.xml 具体如下修改(以.shtml 为后缀)/user/(.*)/(0-9+).shtml$/user/(.*).shtml

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。