Tomcat 8(三)Apache2.2.25+Tomcat8.0.3集群配置

环境信息

操作系统:win8

Tomcat版本:Tomcat 8.0.3

Apache版本:httpd-2.2.25-win32-x86-openssl-0.9.8y

1. 安装Apache

1.1 下载WindowsApache

Apache下载地址:http://httpd.apache.org/download.cgi

在下载页面选择”Binaries”(哪个版本下的”Binaries”均可)


然后选择”win32/”


下载”httpd-2.2.25-win32-x86-openssl-0.9.8y”(Apache有两个版本no_ssl”和”openssl”,即不支持ssl和支持ssl选择”openssl”版是由于以后学习ssl会用到”openssl”)


1.2 安装Apache

双击” httpd-2.2.25-win32-x86-openssl-0.9.8y.msi”


Server信息随便填


选择Custom,可以自定义Apache的安装路径



安装完成


此时,在Windows右下角可以看到Apache图标


右键此图标,选择”Open Apache Monitor”,可以看到Apache Service Monitor界面


在浏览器下输入http://localhost,看到”It works”,表明Apache安装成功


1.3 修改Apache的启动类型

Apache默认是自动启动的,可以到”服务”下修改其启动类型

右键计算机-管理-服务和应用程序-服务,找到Apache2.2。右键Apache2.2,选择属性,修改启动类型即可


1.4 卸载Apache

打开”控制面板”,选择”卸载程序”,右键”Apache HTTP Server 2.2.25”,选择”卸载”

2. 部署Tomcat集群

2.1 创建Tomcat-Cluster目录

D盘下新建Tomcat-Cluster文件夹,在Tomcat-Cluster下新建两个文件夹Tomcat1,Tomcat2

2.2 配置Tomcat1

2.2.1Tomcat(Tomcat 8.0.3文件夹)下的文件拷贝到Tomcat1


2.2.2 创建测试项目TestCluster

在D:\ Tomcat-Cluster\Tomcat1\webapps下,创建TestCluster文件夹,然后将ROOT文件夹下的WEB-INF文件夹拷贝到TestCluster

打开TestCluster\WEB-INF\web.xml

在</web-app>上面添加<distributable/>

(设置<distributable/>,即表明集群下某一节点生成或改变的Session,将广播到该集群的其它节点)

在TestCluster文件夹下新建index.jsp

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ page import="java.text.SimpleDateFormat"%>  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.   <head>  
  6.     <title>TestCluster</title>  
  7.   </head>  
  8.   <body>  
  9.         Server Info:  
  10.     <%  
  11.       String dtm = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());  
  12.       System.out.println("["+request.getLocalAddr()+":"+ request.getLocalPort()+"]" + dtm);  
  13.       out.println("<br>["+request.getLocalAddr()+":" +request.getLocalPort()+"]" + dtm+"<br>");   
  14.     %>  
  15.     Session Info:  
  16.     <%  
  17.         session.setAttribute("name","dennisit");  
  18.         System.out.println("[Session Info] Session ID:"+session.getId());  
  19.         out.println("<br>[Session Info] Session ID:" + session.getId()+"<br>");  
  20.     %>  
  21.   </body>  
  22. </html>  

2.2.3 修改Tomcat1Server.xml(Tomcat1\conf\Server.xml)

a. Server标签下的8005端口改为7005Connector标签下8080,8009端口改为7080,7009(为了避免端口冲突)

b.在Engine标签内添加jvmRoute属性,将其设置为” Tomcat1”

c.将Cluster标签的注释打开

修改后的server.xml(为了看起来简洁,删掉了Tomcat自带的注释)

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version='1.0' encoding='utf-8'?>  
  2.   
  3. <!--将端口号由8005改为7005 -->  
  4. <Server port="7005" shutdown="SHUTDOWN">  
  5.   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />  
  6.   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  
  7.   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />  
  8.   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />  
  9.   <GlobalNamingResources>  
  10.     <Resource name="UserDatabase" auth="Container"  
  11.               type="org.apache.catalina.UserDatabase"  
  12.               description="User database that can be updated and saved"  
  13.               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"  
  14.               pathname="conf/tomcat-users.xml" />  
  15.   </GlobalNamingResources>  
  16.   <Service name="Catalina">  
  17.       
  18.     <!--将端口号由8080改为7080 -->  
  19.     <Connector port="7080" protocol="HTTP/1.1"  
  20.                connectionTimeout="20000"  
  21.                redirectPort="8443" />  
  22.       
  23.     <!--将端口号由8009改为7009 -->  
  24.     <Connector port="7009" protocol="AJP/1.3" redirectPort="8443" />  
  25.       
  26.     <!--在Engine标签添加jvmRoute属性-->  
  27.     <Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat1">  
  28.         
  29.       <!--将Cluster标签的注释去掉-->  
  30.       <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>  
  31.         
  32.       <Realm className="org.apache.catalina.realm.LockOutRealm">  
  33.         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  
  34.                resourceName="UserDatabase"/>  
  35.       </Realm>  
  36.       <Host name="localhost"  appBase="webapps"  
  37.             unpackWARs="true" autoDeploy="true">  
  38.         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
  39.                prefix="localhost_access_log" suffix=".txt"  
  40.                pattern="%h %l %u %t "%r" %s %b" />  
  41.       </Host>  
  42.     </Engine>  
  43.   </Service>  
  44. </Server>  

2.3 配置Tomcat2

将Tomcat1下的文件拷贝到Tomcat2

修改Tomcat2Server.xml

a.将端口7005,7080,7009改为9005,9080,9009

b.Engine标签内的jvmRoute改为” Tomcat2”

2.4 启动Tomcat集群

(如果之前配置过Tomcat的环境变量,要先将Tomcat的环境变量删除)

双击Tomcat1\bin\startup.batTomcat2\bin\startup.bat

在浏览器下输入:http://localhost:7080/TestCluster/index.jsp,即可访问集群下Tomcat1节点的TestCluster


在浏览器下输入:http://localhost:9080/TestCluster/index.jsp,即可访问集群下Tomcat2节点的TestCluster


可以看到Tomcat1、Tomcat2两个节点的Session一样

3. 整合ApacheTomcat集群

整合ApacheTomcat集群可以使用mod_proxy_balancer也可以使用mod_jk

3.1 使用mod_proxy_balancer

a. D:\Program Files\Apache 2.2\conf下新建mod_proxy_balancer.conf

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. LoadModule proxy_module modules/mod_proxy.so    
  2. LoadModule proxy_ajp_module modules/mod_proxy_ajp.so    
  3. LoadModule proxy_balancer_module modules/mod_proxy_balancer.so    
  4. LoadModule proxy_connect_module modules/mod_proxy_connect.so      
  5. LoadModule proxy_http_module modules/mod_proxy_http.so  
  6. <Proxy balancer://TestCluster>  
  7. BalancerMember ajp://127.0.0.1:7009 loadfactor=1  
  8. BalancerMember ajp://127.0.0.1:9009 loadfactor=1  
  9. #BalancerMember http://127.0.0.1:7080 loadfactor=1  
  10. #BalancerMember http://127.0.0.1:9080 loadfactor=1  
  11. </Proxy>  
  12. ProxyPass / balancer://TestCluster/  

LoadModule-加载模块

Proxy-负责定义代理,该代理下可以包含多个处理请求的节点

BalancerMember-处理请求的节点(设置ajp、http均可)

loadfactor-权重。某一节点的权重越大,分配到该节点的请求越多

ProxyPass -ApacheProxy转发请求的条件(ProxyPass /*.jsp balancer://TestCluster/,表明Apachehttp://localhost/下的所有jsp请求转发给balancer://TestCluster/处理)

b. 修改httpd.conf

打开httpd.conf(Apache 2.2\conf\httpd.conf),在尾部添加一行代码

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. include conf/mod_proxy_balancer.conf  

c. 测试

重启Apache,然后在浏览器下输入http://localhost/TestCluster/index.jsp,可看到如下页面


刷新之后,看到如下页面


两次请求,分别转发到了Tomcat1节点、Tomcat2节点,并且两个节点的Session一样

3.2 使用mod_jk

a. 下载Windowsmod_jk.so

Windowsmod_jk.so下载地址:http://tomcat.apache.org/download-connectors.cgi

点击页面的” Binary Releases”,然后点击”windows/”


下载tomcat-connectors-1.2.39-windows-i386-httpd-2.2.x.zip


解压该文件,可得到”mod_jk.so”。将”mod_jk.so”拷到Apache 2.2\modules目录下

b. Apache 2.2\conf下新建workers.properties

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. worker.list=controller,Tomcat1,Tomcat2  
  2. #========Tomcat1========  
  3. worker.Tomcat1.port=7009  
  4. worker.Tomcat1.host=localhost  
  5. worker.Tomcat1.type=ajp13  
  6. worker.Tomcat1.lbfactor=1  
  7. #========Tomcat2========  
  8. worker.Tomcat2.port=9009  
  9. worker.Tomcat2.host=localhost  
  10. worker.Tomcat2.type=ajp13  
  11. worker.Tomcat2.lbfactor=1  
  12. #========controller========  
  13. worker.controller.type=lb  
  14. worker.controller.balanced_workers=Tomcat1,Tomcat2  
  15. worker.controller.sticky_session=false  

(如果worker.controller.sticky_session设为true,则同一用户的同一session始终和一个Tomcat节点交互)

c. Apache 2.2\conf下新建mod_jk.conf

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. LoadModule jk_module modules/mod_jk.so  
  2. JkWorkersFile conf/workers.properties  
  3. JkMount /* controller  

JkWorkersFile-workers.properties的位置

JkMount-Apache将http://localhost/下的所有请求转发给controller处理

d. 修改httpd.conf

打开httpd.conf(Apache 2.2\conf\httpd.conf),将尾部的include conf/mod_proxy_balancer.conf注释掉,并添加一行代码

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. include conf/mod_jk.conf  

e. 测试

重启Apache,然后在浏览器下输入http://localhost/TestCluster/index.jsp,可看到如下页面


刷新之后,看到如下页面


两次请求,分别转发到了Tomcat1节点、Tomcat2节点,并且两个节点的Session一样


ApacheTomcat集群整合后,Apache是接收请求的入口,它根据设置的转发请求条件,决定将哪些请求转发个Tomcat处理

通常的应用场景为:Apache作为Web Server,它只负责处理静态页面,而动态页面会交给Tomcat(App Server)处理


参考文章:

http://blog.csdn.net/lifetragedy/article/details/7712691

http://www.cnblogs.com/leader_89/archive/2011/08/01/2109181.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值