Apache,Tomcat集群和负载均衡 教程

我是参考别人的文章,但是有问题,后来找了一些才知道,如果按照我的步骤不行则可以找到apache的log文件看是什么出错了,谷歌下就找到原因解决就可以了

参考地址1:  http://hi.baidu.com/luodaijun/blog/item/5bbe4cfb5ffef864034f56a1 .html

--------------------------------------------------------------------------------------
第一步:
我用apache2.2的版本和tomcat7的2个版本测试通过

下载tomcat7和apache2.2后,在下载  mod_jk.so 
http://apache.etoak.com//tomcat/tomcat-connectors/jk/binaries/windows/tomcat-connectors-1.2.32-windows-i386-httpd-2.2.x.zip

安装apache2.2,解压缩2个tomcat 后,先修改tomcat的端口我修改后的端口是8580和8680

列一个tomcat端口修改地方如下,另一个雷同
A.<Server port="8605" shutdown="SHUTDOWN">

B.<Connector port="8680" protocol="HTTP/1.1" 
                       connectionTimeout="20000" 
                       redirectPort="8443" />

C.<Connector port="8609" protocol="AJP/1.3" redirectPort="8443" />     (注意这个是后面配置需要用到的端口,而不是上面的8680)

把下载的mod_jk.so解压放到apache的   modules/mod_jk.so   目录下

第二步:
到apache的conf目录下打开httpd.conf,在最后一行加入下面代码
#指定 mod_jk.conf 配置文件路径
include "D:\software\java\apache\conf\mod_jk.conf"

在改目录下新建 mod_jk.conf文件,最好使用UTF-8编码的文件,我是用这个的
加入以下代码:
#加载mod_jk Module
LoadModule jk_module modules/mod_jk.so

#将下载的 mod_jk-1.2.30-httpd-2.2.3.so 文件放入到Apache_Home\modules下
# 配置 mod_jk
#加载集群中的workers
JkWorkersFile conf/workers.properties

#加载workers的请求处理分配文件
JkMountFile conf/uriworkermap.properties

#指定jk的日志输出文件
JkLogFile logs/mod_jk.log

#指定日志级别
JkLogLevel warn

#指定哪些请求交给tomcat处理,"controller"为在 workers.propertise里指定的负载分配控制器名 
JkMount /* controller

再创建文件 workers.properties
#server 列表
worker.list=controller,tomcat1,tomcat2

#========tomcat1========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.port=8509
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcat1.lbfactor=1

#========tomcat2========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.port=8609
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcat2.lbfactor=1

#========controller,负载均衡控制器========
#server名为controller,用于负载均衡
worker.controller.type=lb
#重试次数
worker.retries=3
#指定分担请求的tomcat
worker.controller.balanced_workers=tomcat1,tomcat2
#粘性Session(默认是打开的) 当该属性值=True(或1)时,代表Session是粘性的,即同一Session在集群中的同一个节点上处理,Session不跨越节点。在集群环境中,一般将该值设置为False
worker.controller.sticky_session=false
#设置用于负载均衡的server的session可否共享有不少文章说设置为1是可以的,也有设置为0才可以的
worker.controller.sticky_session=1
#worker.controller.sticky_session_force=1
#worker.status.type=status

再创建 uriworkermap.properties
#在Apache_Home\conf下建立uriworkermap.properties文件
#配置内容:
#所有请求都由controller这个server处理
/*=controller
#所有包含jkstatus请求的都由status这个 server处理
#/jkstatus=status
#这里的"!”是“非”的意思。
!/*.gif=controller
!/*.jpg=controller
!/*.png=controller
!/*.css=controller
!/*.js=controller
!/*.htm=controller
!/*.html=controller

第3步:
创建jsp文件,在tomcat下面新建test文件夹,在test文件夹里面新建test.jsp文件,代码如下
<%
     System.out.println("===========================");
%>

启动apache,tomcat1,tomcat2,进行测试
通过  http://localhost/test/test.jsp  访问,查看tomcat1的窗口,可以看到打印了一行"=========="

然后配置集群,让tomcat的session共享,不过有别人说  如果session中存放的为javabean,javabean必须实现Serializable接口,如果没有实现会报错误 Exception thrown: class java.lang.IllegalArgumentException  

第4步:
修改tomcat的server.xml文件
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"> 加上jvmRoute属性
在将 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>   注释去掉

然后在test 新建WEB-INF目录,WEB-INF下新建web.xml,内容如下
<web-app xmlns=" http://java.sun.com/xml/ns/j2ee" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
             <display-name>TomcatDemo</display-name>
              <distributable/>
</web-app>
注意:在你的应用的web.xml加入    <distributable/>  即可
ok,讲test复制到tomcat1,tomcat2的webapps下,重启tomcat1,tomcat2, apache
 
 
======================================================================
附加UTF-8的URL编码问题
Apache和Tomcat集成后,要使服务器支持UTF-8的中文地址,应该设置8009端口的<connector></connector>标签:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"    />
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值