锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2023-12-31 03:37:02 8012连接器

集群配置的目的是改进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

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

修改前(示例):

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

修改后(示例):

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

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

这是实现AJP协议的连接器(Tomcat)配置负载平衡。如果连接器在不同的主机上,端口号可以相同,否则端口号必须修改才能独特。本文讲述了通常的情况,即多个Tomcat安装在同一个物理主机上,后面描述的端口修改都是基于这种情况。

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

多个参与负载平衡的连接器可根据上述格式定义。

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

ServerAdminwebmaster@${mail_host} ServerName ${host} ServerAlias

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

ProxyPassReverse /balancer://ajpWorker/

注:这里的ajpWorker与第2步指定的相同。

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

默认系统内容

ProxyPassMatch

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

balancer://后面的ajpWorker与第二步和第三步配置的名称相同。

三、配置Tomcat

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

1、修改3个Tomcat的Server port8006、8007,8007,8008

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

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

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

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

3、找到为节点添加属性jvmRoute=jvm1(jvm2、jvm3)这三个值需要与前面相匹配Apache(2.2)里配置的route相同。

修改后:

到目前为止,负载均衡集群的基本配置已经完成,但仍有最重要的未匹配,不仅实现了每个Tomcat(Web容器之间session共享,以确保不同Tomcat间切换时不丢失数据。

session丢失造成的最直观的问题表现:

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

2.不能正常登录和访问info*Engine管理器中的条目。

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

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

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

解决方案如下:

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

在server.xml里找到Cluster并注释节点,同时添加以下内容节点

9.0下的配置

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

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

mapSendOptions="6">

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

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

里的属性tcpListenPort每个Tomcat都需要不同。可改为4001、4002、4003等。

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

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章