Farm Deployer 在 Tomcat 集群中不工作
我已經設置了 apache-tomcat 集群(Ubuntu Server),並且我使用了 tomcat 支持的集群技術和 mod_jk 跟隨連結。我已經設置了一個負載均衡器和兩個 Web 伺服器。
主要問題是部署 WAR 文件以及部署到哪個 Web 伺服器?我了解了 Farmed Deployment,它將戰爭文件部署到集群中的其他 tomcat 伺服器,但我還沒有讓它工作。我以以下方式在兩個 Web 伺服器上的元素中使用了場部署程序。
網路伺服器 1(192.168.1.101)
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/usr/share/tomcat/temp/" deployDir="/usr/share/tomcat/webapps/" watchDir="/usr/share/tomcat/watch/" watchEnabled="true"/>
網路伺服器 2(192.168.1.102)
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/usr/share/tomcat/temp/" deployDir="/usr/share/tomcat/webapps/" watchDir="/usr/share/tomcat/webapps/" watchEnabled="false"/>
我將 WAR 放在 web 伺服器 1 上的監視目錄中,但它沒有部署到其他伺服器。有人得到這個工作,有什麼我做錯了嗎?,請讓我知道!
謝謝!
更新:1
我可以在 catalina.out 日誌中的任何一台機器上看到以下資訊,
14 Aug, 2011 9:12:11 PM org.apache.catalina.ha.deploy.FarmWarDeployer start SEVERE: FarmWarDeployer can only work as host cluster subelement!
它甚至不部署到 webserver1,也不部署到 webserver2。訪問網站時出現 404 錯誤。還有什麼幫助…?還有一件事,我沒有從 apt 儲存庫安裝 tomcat,而是從原始碼建構它,這對我們的 java 應用程序非常有效。
您應該查看的第一個位置是
catalina.out
,它會告訴您可能出了什麼問題。如果您不能使其與多播一起使用,只需嘗試靜態成員資格 (我認為它會更簡單)。
下面是我的配置:
將
<Cluster
節點放在<Host
元素內:<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.5.149" port="4000" selectorTimeout="100" maxThreads="6"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor"> <Member className="org.apache.catalina.tribes.membership.StaticMember" port="4001" securePort="-1" host="192.168.5.199" domain="staging-cluster" uniqueId="{0,1,2,3,4,5,6,7,8,9}"/> </Interceptor> </Channel> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/usr/share/tomcat6/tempdir/" deployDir="/usr/share/tomcat6/webapps/" watchDir="/usr/share/tomcat6/watchdir/" watchEnabled="true"/> </Cluster> </Host> </Engine>
- element 中的
address
屬性<Receiver
是node1 的IP 地址。(在你的情況下是 .101)- 正在偵聽節點 1 (4000-4100)上的
port
複制消息Member's port
in正在偵聽節點 2 上的<Interceptor
集群消息Member's host
是節點 2 的 IP 地址 (.102 )
server.xml
在節點 2 上:<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.5.199" port="4001" selectorTimeout="100" maxThreads="6"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor"> <Member className="org.apache.catalina.tribes.membership.StaticMember" port="4000" securePort="-1" host="192.168.5.149" domain="staging-cluster" uniqueId="{0,1,2,3,4,5,6,7,8,9}"/> </Interceptor> </Channel> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/usr/share/tomcat6/tempdir/" deployDir="/usr/share/tomcat6/webapps/" watchDir="/usr/share/tomcat6/watchdir/" watchEnabled="false"/> </Cluster>
確保 Tomcat 可以寫入
tempDir
和watchDir
文件夾:chmod g+w tempDir watchDir chgrp tomcat tempDir watchDir
如果您不這樣做,您將收到以下錯誤:
Aug 13, 2011 10:28:33 PM org.apache.catalina.ha.deploy.FarmWarDeployer messageReceived SEVERE: Unable to read farm deploy file message. java.io.IOException: Permission denied
記得添加
<distributable/>
到webapps/ROOT/WEB-INF/web.xml
:<web-app xmlns="http://java.sun.com/xml/ns/javaee" ... <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <distributable/> </web-app>
每當您將文件複製
.war
到節點 1 上的文件watchdir
夾中時,您都會在以下內容中看到類似內容catalina.out
:Aug 14, 2011 1:40:58 AM org.apache.catalina.ha.deploy.WarWatcher check INFO: check cluster wars at /usr/share/tomcat6/watchdir Aug 14, 2011 1:40:59 AM org.apache.catalina.ha.deploy.FarmWarDeployer fileModified INFO: Installing webapp[/cas] from /usr/share/tomcat6/webapps/cas.war Aug 14, 2011 1:40:59 AM org.apache.catalina.ha.deploy.FarmWarDeployer remove INFO: Cluster wide remove of web app /cas Aug 14, 2011 1:40:59 AM org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive cas.war
在節點 2 上:
Aug 14, 2011 1:40:59 AM org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive cas.war
祝你好運!