您的位置:首页 > 运维架构 > Tomcat

在windows 2000,XP 下通过mod_jk2.so整合Tomcat5.0 和 Apache2.0

2011-01-05 01:00 399 查看
在windows 2000,XP 下通过mod_jk2.so整合Tomcat5.0 和 Apache2.0

------- dreamsky15(阿贤) 原创

准备工作:
分别到www.sun.comwww.apache.org 下载

JDK1.4 : j2sdk-1_4_2_04-windows-i586-p.exe
Tomcat5 :
jakarta-tomcat-5.0.14.exe
apache2:apache_2.0.48-win32-x86-no_ssl.exe
jk2 :
jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip

版本可能有所更新。

1.安装JDK1.4,指定安装在
C:/JDK1.4目录下;
2.确认80和8080端口不被占用,特别是IIS是否占用80端口,否则要修改端口设置;
3.安装Tomcat5.0,指定安装在C:/Tomcat5.0目录下,
指定JAVA虚拟机目录为刚才安装的
C:/JDK1.4;
4.安装apache2,指定安装在 C:/ 根目录下,那么它自己会自动创建Apache2目录,
得到 C:/Apache2
最终目录;
5.设置windows系统环境变量中的系统变量:

path:
C:/JDK1.4/bin;C:/JDK1.4/jre/bin;

classpath:
C:/JDK1.4;C:/JDK1.4/lib;C:/JDK1.4/lib/dt.jar;C:/JDK1.4/lib/tools.jar;C:/Tomcat5.0/common/lib/servlet-api.jar;C:/Tomcat5.0/common/lib/tools.jar;
6.重启电脑
7.用浏览器访问
http://localhost/http://localhost:8080/

两个网站,它们分别是apache和Tomcat的默认首页;
如果不成功则要重新检查设置;
8.解压
jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip
9.在解压文件的 doc/mod_jk2
目录下有 INSTALL.txt 英文文档教你安装,你可以作为参照。
10.在解压文件的 modules 目录下有 mod_jk2.so 文件,将其复制到
C:/Apache2/modules;
11.在解压文件的 conf 目录下有 workers2.properties.sample文件,将其复制到
C:/Apache2/conf
目录下,将文件名改为workers2.properties,增加两行:
[uri:/*.jsp]
group=lb

这表明要Tomcat解释所有以 jsp 为后缀的文件。

增加
[uri:/servlet/*]
group=lb

这表明要Tomcat解释/servlet/目录下的所有文件,
所以所有servlet最好映射到 /servlet/
路径下,其他的文件不要放到这个目录下。
(注:tomcat中所有没有在 web.xml 中注册的 servlet默认映射到 /servlet/
路径下。
但前提条件是你要修改tomcat的 web.xml ,去掉两处
<servlet-name>invoker</servlet-name>的注释,来激活这个功能。)

这样做,是为了令到Tomcat专职解释所有 jsp 和 servlet ,而将
html,txt等类型的文件交给强大的Web服务器——apache解释,各司其职,分担Tomcat的压力。

12.备份好C:/Apache2/conf/httpd.conf防止不测,修改 C:/Apache2/conf/httpd.conf
文件,原文件有很多行LoadModule,
在其后增加一行:
LoadModule jk2_module
modules/mod_jk2.so
这个在 INSTALL.txt 英文文档里有说;

找到 DocumentRoot "C:/Apache2/htdocs" ,修改为你指定的根目录
DocumentRoot
"C:/Tomcat5.0/webapps"

正反斜杠无所谓,最好用 / ;

同样找到<Directory "C:/Apache2/htdocs">
修改为<Directory
"C:/Tomcat5.0/webapps">

找到 DirectoryIndex index.html index.html.var
在后面增加 index.jsp
使得apache将index.jsp也作为默认首页。

13.将原来 <VirtualHost *:80> 相关的设置注释去掉,自定义你的实际参数;
其中
DocumentRoot
/www/docs/dummy-host.example.com
改为DocumentRoot
"C:/Tomcat5.0/webapps"

将 AddDefaultCharset ISO-8859-1
改为
AddDefaultCharset
gb2312
使得apache默认是简体中文。
14.
启动Tomcat5.0,apache2
你会看到apache service
monitor 控制台窗口下的状态栏文字由原来的
Apache/2.0.48 (Win32)
变为
Apache/2.0.48
(Win32) mod_jk2/2.0.4

分别访问 http://localhost/jsp-examples/
http://localhost:8080/jsp-examples/
测试其中的jsp例子,如果都能正确运行,证明配置成功!!!
恭喜你!
:)

有错误或疑问,请多多交流。

===============================================================================

===============================================================================

目前比较常用的负载均衡技术主要有:

1. 基于DNS的负载均衡

通过DNS服务中的随机名字解析来实现负载均衡,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们也就访问不同地址上的Web服务器,从而达到负载均衡的目的。

2. 反向代理负载均衡 (如Apache+JK2+Tomcat这种组合)

使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的。这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。

3. 基于NAT(Network Address Translation)的负载均衡技术 (如Linux Virtual
Server,简称LVS)


网络地址转换为在内部地址和外部地址之间进行转换,以便具备内部地址的计算机能访问外部网络,而当外部网络中的计算机访问地址转换网关拥有的某一外部地址时,地址转换网关能将其转发到一个映射的内部地址上。因此如果地址转换网关能将每个连接均匀转换为不同的内部服务器地址,此后外部网络中的计算机就各自与自己转换得到的地址上服务器进行通信,从而达到负载分担的目的。

上面是采用了Apache httpd作为web服务器的,即作为Tomcat的前端处理器,根据具体情况而定,有些情况下是不需要Apache httpd作为
web 服务器的,如系统展现没有静态页面那就不需要Apache httpd,那时可以直接使用Tomcat作为web 服务器来使用。使用Apache
httpd主要是它在处理静态页面方面的能力比Tomcat强多了。

1、 用户的网页浏览器做完本地 DNS和企业授权的DNS之的请求/响应后,这时候企业授权的DNS(即21cn BOSS
DNS)会给用户本地的DNS服务器提供一个NAT请求分配器(即网关)IP。

2、 NAT分配器,它会根据特定的分配算法,来决定要将连接交给哪一台内部 Apache
httpd来处理请求。大多数的NAT请求分配器提供了容错能力:根据侦测各种WEB服务器的失效状况,停止将请求分配给已经宕掉的服务器。并且有些分配器还可以监测到WEB服务器机器的负载情况,并将请求分配给负载最轻的服务器等等。Linux
Virtual Server是一个基于Linux操作系统上执行的VS-NAT开源软件套件,而且它有丰富的功能和良好的说明文件。商业硬件解决方案 Foundry
Networks的ServerIron是目前业界公认最佳的请求分配器之一。

3、 Apache httpd +
Mod_JK2在这里是作为负载均衡器,那为什么要做集群呢?如果集群系统要具备容错能力,以便在任何单一的硬件或软件组件失效时还能100%可用,那么集群系统必须没有单点故障之忧。所以,不能只架设一台有mod_jk2的Apache
httpd,因为如果 httpd或mod_jk2失效了,将不会再有请求被会送交到任何一个Tomcat 实例。这种情况下,Apache
httpd就是瓶劲,特别在访问量大的网站。

4、 Mod_JK2负载均衡与故障复原,决定把Apache
httpd当成web服务器,而且使用mod_jk2将请求传送给Tomcat,则可以使用mod_jk2的负载均衡与容错功能。在集群系统中,带有
mod_jk2的Apache httpd可以做的事情包括:

A、
将请求分配至一或多个Tomcat实例上你可以在mod_jk2的workers.properties文件中,设定许多Tomcat实例,并赋于每个实例一个lb_factor值,以作为请求分配的加权因子。

B、
侦测Tomcat实例是否失败当Tomcat实例的连接器服务不再响应时,mod_jk2会及时侦测到,并停止将请求送给它。其他的Tomcat实例则会接受失效实例的负载。

C、
侦测Tomcat实例在失效后的何时恢复因连接器服务失效,而停止将请求分配给Tomcat实例之后,mod_jk2会周期性地检查是否已恢复使用性,并自动将其加入现行的Tomcat实例池中。

5、
Tomcat中的集群原理是通过组播的方式进行节点的查找并使用TCP连接进行会话的复制。这里提示一下就是,对每个请求的处理,Tomcat都会进行会话复制,复制后的会话将会慢慢变得庞大。

6、 Mod_jk2同时支持会话亲和和会话复制。在tomcat
5中如何实现会话亲和和会话复制?把server.xml中的标签去掉就实现会话亲和,把标签加上就实现会话复制。

7、 会话亲和:就是表示来自同会话的所有请求都由相同的Tomcat
实例来处理,这种情况下,如果Tomcat实例或所执行的服务器机器失效,也会丧失Servlet的会话数据。即使在集群系统中执行更多的Tomcat实例,也永远不会复制会话数据。这样是提高集群性能的一种方案,但不具备有容错能力了。

8、 使用会话复制,则当一个Tomcat实例宕掉时,由于至少还有另一个Tomcat实例保有一份会话状态数据,因而数据不会丧失。但性能会有所降低。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: