본문 바로가기

Apache / Tomcat

톰캣 1대에 서비스 여러개 설정하기

반응형

나같은 경우 로컬 개발환경이나 테스트 서버의 경우 수많은 프로젝트들이 존재한다.
운영환경도 아닌 개발 및 테스트 환경에서 프로젝트가 추가될때마다 톰캣을 추가하는것은 사실 불필요하다.

어차피 내부 개발인력과 테스터 인력들만이 접속해서 확인할텐데 그때마다 톰캣을 새로 추가하는것은 오히려 리소스 낭비이다.
그래서 나는 로컬이나 테스트서버의 경우 1개의 톰캣에 3~4가지의 서비스들(프로젝트들)을 올려서 사용한다.

톰캣에 여러 서비스를 올리는것은 간단하다. TOMCAT_HOME/conf/server.xml 에서 service 부분을 추가해 주면 된다.


[server.xml]


     </service>


     <Service name="testProject">

        <Connector port="8090" protocol="HTTP/1.1" connectionTimeout="5000" redirectPort="8443"
        enableLookups="true" disableUploadTimeout="true" reloadable="false" URIEncoding="UTF-8" />

        <Connector port="8099" enableLookups="false" redirectPort="8090" protocol="AJP/1.3" URIEncoding="UTF-8" />

        <Engine name="testProject" defaultHost="localhost">
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
            <Host name="localhost" appBase="D:/Project/test/" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
                <Context path="" reloadable="false" privileged="true" docBase="D:/Project/test/WebContent" workDir="" crossContext="true" />
            </Host>
        </Engine>

    </Service>

</server>



이때 주의할점은 크게 다음과 같다.
1. Service Name 과 Engine Name은 서로 동일해야 한다
2. Connector port 와 ajp Connector port 는 다른 포트들과 충돌하지 말아야 한다



사실 내 로컬PC의 톰캣 1대에는 10여가지가 넘는 서비스들이 등록되어 있다. 그렇다고 해서 서비스들을 다 사용하는건 아니다.
톰캣 시작시 해당 프로젝트들을 로딩하므로 당장 필요없는 서비스들은 주석처리해두고 필요한것만 사용한다.

참고로 운영서버에서에서도 1개의 톰캣에 2개 이상의 서비스를 올려서 사용하는것도 본적이 있다.
사용자가 많지 않으면 큰 상관 없지만 대외적으로 공개되는 사이트라면 톰캣 분리를 추천하다.


톰캣에 여러 서비스를 사용할시 메모리, cpu와 같은 자원을 공유하여 사용하므로 톰캣 장애시 동시에 모든 서비스가 불가능하게 된다.