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

南北软件在Tomcat群集环境下的部署

2008-11-06 18:34 162 查看

Tomcat群集

使用Tomcat作为应用服务器,在线用户数较多的情况下可以考虑使用多台服务器,
使用群集和负载均衡来解决。使用群集的环境中还需要配置一台负载均衡服务器(HTTP服务器)来实现统一的入口访问,和负载的均衡。

我们以两台Tomcat应用服务器和一台HTTP服务器作为例子(当然他们可以安装在一台物理机器上):
192.168.0.1:作为Http服务器
192.168.0.2和192.168.0.3:作为Tomcat服务器

下面是配置过程:
192.168.0.2和192.168.0.3:安装Tomcat,并部署snsoft.war。

(如果是在一台机器上安装,可以考虑安装目录下snsoft7拷贝两份或多份tomcat目录,分别命名为tomcat1目录,tomcat2目录。
在这种情况下如果希望用注册Windows服务程序自动启动的方式,按如下步骤:

去掉原来的 Tomcat5 服务: snsoft7/tomcat/bin 下 执行 service remove Tomcat5

添加两个服务Tomcat51,Tomcat52:

snsoft7/tomcat1/bin 下 执行 service install Tomcat51;

snsoft7/tomcat2/bin 下 执行 service install Tomcat52

桌面上加两个快捷方式:

服务程序1 "C:/Program Files/Snsoft7/tomcat1/bin/tomcat5w.exe" //ES//Tomcat51,

工作目录:"C:/Program Files/Snsoft7/tomcat1/bin/";

服务程序2 "C:/Program Files/Snsoft7/tomcat2/bin/tomcat5w.exe" //ES//Tomcat52,

工作目录:"C:/Program Files/Snsoft7/tomcat2/bin/";

分别进入服务程序1和服务程序2 做相关设置: Java 虚拟机最大内存 设为 1024, Java 启动的 工作目录分别设为
C:/Program Files/Snsoft7/tomcat1/bin 和 C:/Program Files/Snsoft7/tomcat2/bin

)

修改每台机器Tomcat配置文件server.xml(tomcat/conf目录下):去掉server.xml中Host元素下的Cluster的注解。
<!--去掉此处的注解 -->
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">

<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>

<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>

<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"
waitForAck="true"
/>

<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*/.gif;.*/.js;.*/.jpg;.*/.png;.*/.htm;.*/.html;.*/.css;.*/.txt;"/>

<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
</Cluster>
<!--去掉此处的注解 -->

如果多个Tomcat在同一台物理机器上,必须修改相关的端口号,保证Server Port,Connector,Coyote/JK2 AJP Connector的端口号唯一:
端口配置Tomcat1服务器端口Tomcat2服务器端口
Server Port80059005
Connector80009000
Coyote/JK2 AJP Connector80099009
Cluster tcpListenPort40014002
192.168.0.1上安装Apache(Apache 2.2.4:http://httpd.apache.org)

修改Apache的httpd.conf文件(安装目录的conf目录下):

将以下Module的注释去掉:及去掉下列行前面的#号

#LoadModule proxy_module modules/mod_proxy.so

#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

#LoadModule proxy_http_module modules/mod_proxy_http.so

改为

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

并在文件末尾增加一下内容:
ProxyRequests Off
ProxyPass /snsoft balancer://snsoftcluster stickysession=jsessionid nofailover=On
<Proxy balancer://snsoftcluster>
BalancerMember http://192.168.0.2:8000/snsoft BalancerMember http://192.168.0.3:8000/snsoft </Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
</Location>
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
</Location>

注意:BalancerMember中所列的为Tomcat服务器的IP地址及HTTP连接端口号,如果多个服务器在一个物理机器上,
注意修改端口号。例如
BalancerMember http://192.168.0.2:8000/snsoft BalancerMember http://192.168.0.2:9000/snsoft


测试,启动各Tomcat服务器及HTTP服务器。

首先测试各Tomcat服务器正常启动:
在浏览器地址栏上输入http://192.168.0.2:8000/snsoft/sample
http://192.168.0.3:8000/snsoft/sample,确保Tomcat访问正常。
在浏览器地址栏上输入http://192.168.0.1确保HTTP启动正常。

下列方法测试HTTP与Tomcat之间连接及负载均衡正常:在浏览器地址栏上输入http://192.168.0.1/snsoft/sample,
观察页面上显示的服务器及端口号:
request.ServerName=192.168.0.2
request.ServerPort=8080

或为
request.ServerName=192.168.0.3
request.ServerPort=8080

多测试几次,如果 各服务器的出现次数 基本相当,安装成功!

修改 Tomcat 服务器上 snconfig目录下的 Config.properties:
确保使用 其中一台服务器做分号服务器 以及消息通知的设置:

MakeCodeServerURL="http://192.168.0.2:8000/snsoft" //使用192.168.0.2:8000做分号服务器,192.168.0.2:8000的Config.properties中不要设置
ClusterTableUpdated=2
ClusterHost=192.168.0.2:8000,192.168.0.3:8000 //可以不含自己部分:己192.168.0.2机器上只需192.168.0.3:8000
LoginUsersFromHostList=192.168.0.2:8000,192.168.0.3:8000

具体来讲:192.168.0.2:8000机器上的 Config.properties 加以下内容:
ClusterTableUpdated=2
ClusterHost=192.168.0.3:8000  // 多个时用逗号隔开
LoginUsersFromHostList=192.168.0.2:8000,192.168.0.3:8000

192.168.0.3:8000机器上的 Config.properties 加以下内容:
MakeCodeServerURL="http://192.168.0.2:8000/snsoft"
ClusterTableUpdated=2
ClusterHost=192.168.0.2:8000 // 多个时用逗号隔开
LoginUsersFromHostList=192.168.0.2:8000,192.168.0.3:8000


将Apache的htdocs目录下的 index.html 内容改为如下内容:
<html>
<head>
<META http-equiv="refresh" content="0;URL=/snsoft/Login.jsp">
</head>
<body></body>
</html>


重启动各服务器,在浏览器地址栏上输入http://192.168.0.1登陆并使用系统
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: