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信息仍然保留着