服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

Apache与Tomcat集群配置


发布日期:2020年04月03日
 
Apache与Tomcat集群配置
PS:今天整理硬盘发现这个有用的收藏与大家分享!

环境说明

Windows XP

apache_winxno_sslmsi

mod_jkapacheso

apachetomcatzip

我的程序分别安装到

D:\webserver\Apache Group\Apache

D:\webserver\TomcatCluster\tomcat

D:\webserver\TomcatCluster\tomcat

Apache安装完后在右下角状态栏中可以看到 Apache Service Monitor 可以控制Apache的状态

验证Apache是否安装成功可以访问 如果能看到Apache的预制页面说明安装成功如果不行可以访问试试(可能因为IIS已经使用了端口 我的就是 可以修改Apache的配置文件来修改)

负载均衡

找到Apache安装目录下conf目录中的文件

在文件最后添加一句

include D:\webserver\Apache Group\Apache\conf\nf

接着在conf目录中新建文件nf并添加下面的内容

#加载mod_jk Module

LoadModule jk_module modules/mod_jkapacheso

#指定 workersproperties文件路径

JkWorkersFile conf/workersproperties

#指定哪些请求交给tomcat处理controller为在workerspropertise里指定的负载分配控制器名

JkMount /*jsp controller

在conf目录下新建workersproperties文件并添加如下内容

#server

workerlist = controller

#========tomcat========

workertomcatport=

workertomcathost=localhost

workertomcattype=ajp

workertomcatlbfactor =

#========tomcat========

workertomcatport=

workertomcathost=localhost

workertomcattype=ajp

workertomcatlbfactor =

#========controller负载均衡控制器========

ntrollertype=lb

ntrollerbalanced_workers=tomcattomcat

ntrollersticky_session=

(解释一下AJP是 Apache JServ Protocol version

将mod_jkapacheso 复制到Apache的modules目录中

接下来配置个Tomcat

打开tomcat\conf\ serverxml

将Server port 改为

<Server port= shutdown=SHUTDOWN>

将Define Connector port改为

<Connector port= maxHttpHeaderSize=

将AJP Connector port改为

<Connector port= enableLookups=false redirectPort= protocol=AJP/ />

打开tomcat\conf\serverxml

将Server port 改为

<Server port= shutdown=SHUTDOWN>

将Define Connector port改为

<Connector port= maxHttpHeaderSize=

将AJP Connector port改为

<Connector port= enableLookups=false redirectPort= protocol=AJP/ />

好了现在建立一个测试程序

分别在两个Tomcat的webapps中建立test目录并新建testjsp文件内容如下

<%

Systemoutprintln(===========

%>

启动apache tomcat tomcat

不断刷新页面可以在两个Tomcat的控制台中看到交替输出=========== 这样就实现了负载均衡

集群配置

集群除了负载均衡另一个主要功能是Session Replication

打开tomcat\conf\ serverxml将<Cluster>部分的注释去掉

再打开tomcat\conf\ serverxml将<Cluster>部分的注释也去掉并将<Cluster>中<Receiver>的tcpListenPort的值改为以避免与Tomcat沖突

添加一个新的测试程序testjsp

分别在个tomcat的webapps\test中新建WEBINF目录在WEBINF中添加webxml内容如下

主要是添加<distributable/>distributable元素用来告诉servlet容器程序将部署在分布式Web容器中

重新启动tomcat和tomcat

随意添加keyvalue 可以看到两个tomcat交替显示session中的值各个tomcat的session是同步的

再来修改tomcat\conf\serverxml找到

<Engine name=Catalina defaultHost=localhost>

为其添加jvmRoute属性值为apache的conf\workersproperties中配置的tomcat名字

<Engine name=Catalina defaultHost=localhost jvmRoute=tomcat>

同样修改tomcat\conf\serverxml的相同部分

<Engine name=Catalina defaultHost=localhost jvmRoute=tomcat>

jvmRoute是tomcat路由标示由此区分两台tomcat主机一次会话就有一个sessionID这个sessionID后面会跟上jvmRoute设置的值这样一次会话就只会让一个tomcat处理

重新启动tomcat tomcat

可以看到sessiongetId()的值在原session id后面多了jvmRoute的值

ID AFFAEAACFtomcat

随意添加keyvalue可以看到session信息只在tomcat中输出

再打开一个浏览器并访问 其session id可能变为

ID EBEFEEBAFtomcat

其值也只会在tomcat中输出

现在把tomcat关闭再次刷新访问tomcat的那个浏览器可以看到session信息输出到了tomcat的控制台中并且session信息仍然保留着

上一篇:浅谈IIS6 和Tomcat5 的整合

下一篇:SVN服务器端与Eclipse中的客户端配置详解