Windchill9下Apache&Tomcat负载平衡的集群配置
时间:2023-12-31 03:37:02
集群配置的目的是改进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,修改默认负载平衡配置
修改前(示例):
修改后(示例):
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,清空默认文件内容,增加以下内容替换默认虚拟主机配置
${host} ProxyPass / balancer://ajpWorker/stickysession=jsessionid nofailover=On
ProxyPassReverse /balancer://ajpWorker/
注:这里的ajpWorker与第2步
4\找到并打开conf\extra\app-Windchill-AJP.conf,这里定义了要求转发的核心代码
默认系统内容
^(/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、找到 修改后: 到目前为止,负载均衡集群的基本配置已经完成,但仍有最重要的未匹配,不仅实现了每个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更加高效。 至此,所有配置全部完毕,删除Tomcat和info*engine的缓存,启动服务,验证前面的3个问题是否存在。