Apache-Httpd
HTTPD 多次使用同一個埠
我在集群中執行 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(假設沒有其他任何東西使用這些埠)。
替代方法包括使用容器來託管實例或網路命名空間。這樣您就可以在每個實例中使用相同的埠。