Windchill9下Apache&Tomcat负载平衡的集群配置

进行集群配置的目的是为了提高Windchill系统Web端相关功能的执行效率和的用户访问速度。但是tom猫终归只是一只小猫,再强也不会变成一只老虎。在优化系统配置的同时我们更需要优化自己开发的程序,使其高效、健壮。ps:复杂程序或大数据量的交互操作建议将程序切换到MethodServer去执行,既在代码中使用

RemoteMethodServer.getDefault.invoke(xxx);

实现该功能需要同时配置Apache和Tomcat,本文在Windchill9.1M060环境下以同时运行3个Tomcat为例,下面逐一介绍。

一、复制并修改Tomcat的启动和停止路径

分别重命名为Tomcat2,Tomcat3,首先修改Tomcat的启动和关闭命令执行文件里的Tomcat路径。

修改{Tomcat_home}/bin目录里的以下四个文件里的CATALINA_HOME变量,改为

Tomcat2/Tomcat3

setenv CATALINA_HOME"d:\ptc\Windchill_9.1\Tomcat"wttomcat_start.bat

wttomcat_start,

wttomcat_stop.bat

wttomcat_stop

二、配置Apache

1、找到并打开${Apache_home}\conf\httpd.conf,启用以下module(去掉默认配置前的“#”)

LoadModule proxy_modulemodules/mod_proxy.soLoadModule proxy_connect_module

modules/mod_proxy_connect.soLoadModuleproxy_ftp_module

modules/mod_proxy_ftp.soLoadModuleproxy_http_module

modules/mod_proxy_http.soLoadModuleproxy_ajp_module

modules/mod_proxy_ajp.soLoadModuleproxy_balancer_module

modules/mod_proxy_balancer.so

2、找到并打开${Apache_home}\conf\extra\ajpWorkers.conf,修改默认的负载平衡的配置

修改前(示例):

<Proxy balancer://ajpWorker>BalancerMember ajp://pdmtest.com:8010 min=16 max=80 smax=40 ttl=900keepalive=Off timeout=90000 retry=1 flushpackets=on </Proxy>

修改后(示例):

<Proxy balancer://ajpWorker>BalancerMember ajp://pdmtest.com:8010 min=16 max=80

smax=40 ttl=900 keepalive=Off timeout=90000retry=1 flushpackets=on route=jvm1

BalancerMember ajp://pdmtest.com:8011min=16 max=80 smax=40 ttl=900 keepalive=Off

timeout=90000 retry=1 flushpackets=onroute=jvm2 BalancerMember ajp://pdmtest.com:8012

min=16 max=80 smax=40 ttl=900 keepalive=Offtimeout=90000 retry=1 flushpackets=on

route=jvm3</Proxy>

ajpWorker是AJP工作器的唯一标识,在之后Apache的配置中,也需要一一对应。

这里是对实现AJP协议的连接器(Tomcat)进行负载平衡的配置,如果连接器在不同主机上,那端口号可以相同,否则必须修改端口号使其唯一,此文讲述的是通常情况,也就是多个Tomcat安装在同一台物理主机上,后面所叙述的端口修改都是基于这类情况。

值得注意的是,8010、8011、8012是3个Tomcat的访问端口,route是指定每个连接器的标识符,必须唯一,后面Tomcat的配置会说明如何使用。

可以按照上述格式,定义多个参与负载平衡的连接器。

3、找到并打开conf\extra\httpd-vhosts.conf,清空默认文件内容,增加以下内容替换默认的虚拟主机配置

<VirtualHost *:80> ServerAdminwebmaster@${mail_host} ServerName ${host} ServerAlias

${host} ProxyPass / balancer://ajpWorker/stickysession=jsessionid nofailover=On

ProxyPassReverse /balancer://ajpWorker/</VirtualHost>

注意:这里的ajpWorker与第2步<Proxy>里指定的相同。

4\找到并打开conf\extra\app-Windchill-AJP.conf,这里定义了请求转发的核心代码

系统默认内容

<IfModule mod_proxy_ajp.c> ProxyPassMatch

^(/Windchill/((?i).*\.jsp(.*)|servlet/.*|.*\.jar))$balancer://ajpWorker$1 nocanon</IfModule>

balancer://后面的ajpWorker需修改为与第2、第3步配置的名称相同。

三、配置Tomcat

打开{Tomcat}/conf/server.xml,进行以下配置:

1、修改3个Tomcat的Server port值分别为8006,8007,8008

<Server port="8006"shutdown="SHUTDOWN">

2、修改3个Tomcat的Connectorport值分别为8010,8011,8012,需与前面Apache(2.2)里配置的端口相同。

<Connector port="8012"channelSocket.maxPort="-1" redirectPort="8443"protocol="AJP/1.3"

tomcatAuthentication="false"enableLookups="false" maxPostSize="-1"

useBodyEncodingForURI="true"URIEncoding="UTF-8" backlog="0" maxThreads="320"

minSpareThreads="16"maxSpareThreads="40"/>

3、找到<Engine/>节点,为其添加属性jvmRoute=jvm1(jvm2、jvm3),这3个值需与前面Apache(2.2)里配置的route相同。

修改后:

<Engine name="Catalina"defaultHost="localhost" jvmRoute="jvm1">

到此为止,负载均衡集群基本配置完成,但是还有最重要的一项未配,既实现各个Tomcat(Web容器)之间的session共享,以确保不同Tomcat间切换时不丢失数据。

session丢失所引起的最直观的问题表现:

1、使用OOTB搜索功能。系统提示:您的会话数据已过期。请重复您的操作。

2、无法正常登陆并访问info*Engine管理器里的条目。

3、无法进入队列管理器查看条目。提示:会话数据已经失效。

即所有与seesion相关的功能均会出现异常。

建议:进行如下配置前,先验证以上问题的存在。

解决办法如下:

9.1和9.0的Tomcat版本(6和5)不一样,所以配置也略有不同。

在server.xml里找到Cluster节点并注释掉,使用以下内容替换,同时增加<Receiver/>节点

9.0下的配置

<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"

channelSendOptions="6"managerClassName="org.apache.catalina.ha.session.BackupManager"

expireSessionsOnShutdown="false"useDirtyFlag="true" notifyListenersOnReplication="true"

mapSendOptions="6"><ReceiverclassName="org.apache.catalina.cluster.tcp.ReplicationListener"tcpListenAddress="auto" 

tcpListenPort="4001"tcpSelectorTimeout="100"tcpThreadCount="6"/></Cluster>

属性channelSendOptions和mapSendOptions,是设置Tomcat进行I/O操作时的选择,这里采用了官方推荐的实现类,org.apache.catalina.ha.session.BackupManager,比默认实现类DeltaManager更加高效。

<Receiver/>里的属性tcpListenPort每个Tomcat都需不同。可改为4001,4002,4003等。

至此,所有配置全部完毕,删除Tomcat和info*engine的缓存,启动服务,验证前面的3个问题是否存在。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值