Apache-Httpd

HTTPD 多次使用同一個埠

  • November 7, 2017

我在集群中執行 3 個 tomcat(不同的 httpd 和 AJP13 埠),前面有一個 apache。

看起來 jkstatus 管理器中只有一個 tomcat 保持執行,另外兩個錯誤

截屏

錯誤日誌表明埠已綁定

30-Oct-2017 21:53:09.794 SEVERE [main] org.apache.catalina.core.StandardServer.await StandardServer.await: create[localhost:8006]: 
java.net.BindException: Address already in use (Bind failed)
       at java.net.PlainSocketImpl.socketBind(Native Method)
       at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
       at java.net.ServerSocket.bind(ServerSocket.java:375)
       at java.net.ServerSocket.<init>(ServerSocket.java:237)
       at org.apache.catalina.core.StandardServer.await(StandardServer.java:441)
       at org.apache.catalina.startup.Catalina.await(Catalina.java:758)
       at org.apache.catalina.startup.Catalina.start(Catalina.java:704)

執行 netstat 提示相同

[root@dev logs]# netstat -anop | grep 8009
tcp6       0      0 :::8009                 :::*                    LISTEN      28887/java           off (0.00/0/0)
tcp6       0      0 ::1:8009                ::1:58801               ESTABLISHED 28887/java           off (0.00/0/0)
tcp6       0      0 ::1:58791               ::1:8009                ESTABLISHED 29719/httpd          off (0.00/0/0)
tcp6       0      0 ::1:58801               ::1:8009                ESTABLISHED 29709/httpd          off (0.00/0/0)
tcp6       0      0 ::1:8009                ::1:58807               ESTABLISHED 28887/java           off (0.00/0/0)
tcp6       0      0 ::1:58807               ::1:8009                ESTABLISHED 29705/httpd          off (0.00/0/0)
tcp6       0      0 ::1:8009                ::1:58803               ESTABLISHED 28887/java           off (0.00/0/0)
tcp6       0      0 ::1:58803               ::1:8009                ESTABLISHED 29706/httpd          off (0.00/0/0)
tcp6       0      0 ::1:8009                ::1:58805               ESTABLISHED 28887/java           off (0.00/0/0)
tcp6       0      0 ::1:58805               ::1:8009                ESTABLISHED 29708/httpd          off (0.00/0/0)
tcp6       0      0 ::1:8009                ::1:58791               ESTABLISHED 28887/java           off (0.00/

我檢查了 server.xml 文件中不同的 tomcat 實例,並沒有看到在 http/ajp13 埠中再次使用的埠。

知道可能是什麼原因造成的嗎?

我得到的印像是您已經知道這一點:由於您正在執行您的 Tomcat 實例並偵聽相同的 IP 地址,因此您需要確保 Tomcat 使用的每個埠在每個實例中的設置都不同。這包括關閉埠:例如,您可以使用 8006、8007 和 8008(假設沒有其他任何東西使用這些埠)。

替代方法包括使用容器來託管實例或網路命名空間。這樣您就可以在每個實例中使用相同的埠。

引用自:https://unix.stackexchange.com/questions/402982