HTTPD는 동일한 포트를 여러 번 사용합니다.

HTTPD는 동일한 포트를 여러 번 사용합니다.

저는 Apache가 앞에 있는 클러스터에서 3개의 Tomcat(다른 httpd 및 AJP13 포트)을 실행하고 있습니다.

하나의 Tomcat만 계속 실행 중인 것처럼 보이고 나머지 두 개의 오류는 jkstatus 관리자에 있습니다.

스크린샷

오류 로그는 포트가 바인딩되었음을 나타냅니다.

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/

다른 Tomcat 인스턴스에 대한 server.xml 파일을 검사했는데 http/ajp13 포트가 다시 사용되는 것을 볼 수 없습니다.

원인이 무엇인지 아시나요?

답변1

나는 당신이 이미 이것을 알고 있다는 인상을 받았습니다. 동일한 IP 주소에서 수신 대기하는 Tomcat 인스턴스를 실행하고 있기 때문에 Tomcat이 사용하는 모든 포트가 각 인스턴스에서 다르게 설정되었는지 확인해야 합니다. 여기에는 포트 닫기가 포함됩니다. 예를 들어 8006, 8007 및 8008을 사용할 수 있습니다(다른 포트가 이러한 포트를 사용하지 않는다고 가정).

대안으로는 컨테이너를 사용하여 인스턴스 또는 네트워크 네임스페이스를 호스팅하는 것이 있습니다. 이렇게 하면 모든 인스턴스에서 동일한 포트를 사용할 수 있습니다.

관련 정보