Centos5

Tomcat Solr 超時

  • April 9, 2012

(Plesk 10.4 centos 5.8 linux apache2 伺服器,Tomcat5 在埠 8080 和 Apache Solr)

我在請求 domain.com:8080 或 www.domain.com:8080 或 ip.ad.dr.ess:8080 時收到“連接已超時”

我能找到的每一個原因似乎都不是這樣:

  • Plesk 認為 Tomcat 執行良好並將其列為活動服務。
  • 防火牆目前在埠 8080 上有一條接受所有規則。
  • catalina tomcat 日誌 (/var/log/tomcat5) 中沒有任何相關內容 - 只是上次啟動 tomcat 的一些內容。所有失敗的請求都沒有記錄。
  • netstat -lnp | grep 8080給出以下內容,我相信這 意味著 Tomcat 正在偵聽來自任何 ip 和任何埠的所有 ip 地址上的埠 8080 的請求(如果我錯了,請糾正我):

:

tcp     0      0 0.0.0.0:8080       0.0.0.0:*     LISTEN      4018/java

這涵蓋了我能找到的所有導致超時的原因——所以我一定錯過了一些基本的東西。

似乎 Tomcat 正在執行,正在偵聽正確的埠,正在獲取適當的 IP 地址,沒有被防火牆阻擋,並且在以日誌中記錄的方式接收請求後沒有失敗(所以我相信它可以不要記憶體不足,或類似的東西)。

我完全不知道如何繼續調試它。我一定忽略了一些明顯的事情。任何人都可以幫忙嗎?

好吧,事實證明有防火牆,然後有防火牆

我天真地假設在 Parrallels/Plesk/VZ 防火牆 UI 中的埠上設置允許訪問規則就足以阻止防火牆阻止對該埠的訪問。我錯了,這個 UI 並沒有觸及基於 iptables 的完全獨立的防火牆層,它阻止了除選定 IP 之外的所有訪問 8080。

在我的 Plesk 設置中(可能特定於我的託管安排,我不確定)解決方案是添加規則/etc/firewall/include,如下所示:

$IPTABLES -I INPUT -p tcp --dport 8080 -s ip.ad.dr.ess -j ACCEPT
$IPTABLES -I OUTPUT -p tcp --sport 8080 -d ip.ad.dr.ess -j ACCEPT

…隨後是service firewall restart(將 ip.ad.dr.ess 交換為您要列入白名單的 IP 地址)。我很確定在大多數託管安排中,您可以將這些行作為命令執行/sbin/iptables而不是$IPTABLES,但是擁有自定義防火牆設置文件非常方便。

我想這是“如果你給一個男人拐杖(比如 Plesk),他會認為他可以依靠那個拐杖”的例子

引用自:https://serverfault.com/questions/377573