Apache+tomcat集群

(一)前期准备

在windows 2003下,通过apache,tomcat,jk方式,构造一个集群。以下是要首先准备的东西:

1、jdk,我用的版本是jdk1.6。
2、apache,我用的版本是2.2.4,下载地址:http://archive.apache.org/dist/ 这里面好多东西,自己找吧。
3、tomcat,我用的版本是5.5.25的解压版本,下载地址:http://archive.apache.org/dist/ 这里面好多东西,自己找吧。
4、jk,这个jk的版本,本来有两个的,但是版本2已经被废弃掉了,目前可用的jk版本是1.2.25。每个apache的版本,都会有一个特定的jk与之对应,所以这里要用的jk也必须是为apache-2.2.4开发的那个才行。下载地址:http://archive.apache.org/dist/ 这里面好多东西,自己找吧。

有了这四样东西,我们就可以开始做集群了。注意:http://archive.apache.org/dist/这个网站里有apache的所有东西。

(二)安装

1、安装jdk:配置JAVA_HOME环境变量。

2、安装apache也没有什么难度,就是在安装过程中要配置域名、网址和管理员邮箱之类的信息,这个信息完全可以按照提示,然后修改下填入即可,之后想修改的话直接到配置文件中改就行了。除了这个地方,还要保证机器上的80端口没有被其他程序占用。至于安装路径,完全取决于个人爱好。其他的默认就行了。安装成功后,系统右下角的托盘区会有个图标,我们可以通过这个启动apache,如果那个小红点变成绿色,说明服务已经正常启动了(如果服务没有启动起来,说明安装过程中的配置有错误,建议卸载后重装)。如果按照默认,端口是80的话,那打开浏览器,输入:http://localhost/ ,应该可以看到 " It works “的字样。这样就可以进入下一步了。

3、解压缩tomcat,记得要做两份。这里不妨将两个tomcat命名为:tomcat- 5.5.25_1和tomcat-5.5.25_2,其实这两个文件夹中的东西是完全一样的。但是我为了在同一台机器上做集群,那就要保证两个 tomcat运行起来不会在端口上起冲突。进入tomcat-5.5.25_1/conf目录,用文本编辑器打开并修改server.xml,修改Server、HTTP的Connector、AJP的Connector端口。

4、jk这东西是一个连接模块,不用安装,直接将mod_jk-apache-2.2.4.so这个文件拷贝到apache安装目录下的modules文件夹下面就行了。

这样,安装完成,下面开始配置。

(三)配置

这个地方才是搭建集群的关键所在,我也会尽我的可能写的详细点。

1、配置tomcat

为防止冲突,进入第二个tomcat主目录,然后进入conf目录,打开server.xml修改配置。主要是修改端口,我把默认的端口加2,那么tomcat- 5.5.25_1下AJP的Connector port=8011,tomcat- 5.5.25_2下AJP的Connector port=8013,下面配置集群需要这两个端口,当然了Server、HTTP的Connector端口也需要修改为不冲突。

2、配置apache

(1)进入apache的主目录,然后进入conf文件夹,用文本编辑器打开httpd.conf,在该文件末尾加上如下几行:

### 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk-apache-2.2.4.so

### 配置 mod_jk
JkWorkersFile conf/workers.properties           #加载集群中的workers
JkMountFile conf/uriworkermap.properties    #加载workers的请求处理分配文件
JkLogFile logs/mod_jk.log                                #指定jk的日志输出文件
JkLogLevel warn                                                  #指定日志级别

(2)不要改变目录,新建一个文件:workers.properties,该文件用来配置web容器的信息。该文件的内容如下:

# worker列表
worker.list=controller, status

#第一个server的配置,server名为s1
#ajp13 端口号,在tomcat下server.xml配置,AJP的Connector
worker.s1.port=8011
#tomcat的主机地址,如不为本机,请填写ip地址
worker.s1.host=localhost
worker.s1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.s1.lbfactor=1

#第二个server的配置,server名为s2
worker.s2.port=8013
worker.s2.host=localhost
worker.s2.type=ajp13
worker.s2.lbfactor=1

#server名为controller,用于负载均衡
worker.controller.type=lb
worker.retries=3   #重试次数
#指定分担请求的server列表,用逗号分隔
worker.controller.balanced_workers=s1,s2
#设置用于负载均衡的server的session可否共享
worker.controller.sticky_session=1
worker.status.type=status

(3)不要改变目录,新建一个文件:uriworkermap.properties,文件内容如下:

/*=controller                         #所有请求都由controller这个server处理
/jkstatus=status                   #所有包含jkstatus请求的都由status这个server处理

!/*.gif=controller                   #所有以.gif结尾的请求都不由controller这个server处理,以下几个都是一样的意思
!/*.jpg=controller
!/*.png=controller
!/*.css=controller
!/*.js=controller
!/*.htm=controller
!/*.html=controller

这里的"!”类似于java中的"!”,是“非”的意思。
这样,apache一块就配置好了。

3、再修改tomcat配置:这里两个tomcat都要配置。

仍然是打开第一步中的那个server.xml文件,找到<Engine name="Catalina" defaultHost="localhost">这一行,在里面加上一句:jvmRoute="s1",即把该句改为:<Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">。这里的s1就是第二步中配置的用于负载均衡的server的名称。如果该tomcat的端口是第二步中s1用的端口,那这里就写s1,第二个tomcat就应该是s2了。

这样,配置就完成了。

(四)运行

进入两个tomcat的bin目录,执行两个tomcat的startup.bat启动这两个 tomcat,然后将apache重新启动后,运行起来看看效果吧。如果不出意外,两个tomcat的窗口应该是你一次我一次的打印日志信息了,而且此时 session也是共享了的。

到这里,集群搭建好了,负载均衡也实现了。

(五)写一个jsp页面,测试:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html>
<head>
</head>
<body>
<%
System.out.println("sessionID="+request.getSession().getId());
%>
hello world<br>
<img alt="" src="images/a.jpg" height="100%" width="100%">
</body>
</html>
测试时发现图片不能正常显示,那么需要按照当前应用的目录结构把图片拷贝到Apache2.2\htdocs\目录下即可。同时测试时注意后台打印的 sessionID是否一样。

(六)有人说:从2.X以后apache自身已集成了mod_jk.so的功能,配置更加简单,我没有做过测试,有时间再做。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值