728x90
반응형

 구조도

 

 

  * win32(vista)에서 설치했습니다.

 

 

   # 1 . 기본 설치 - Apache, Tomcat ( 생략 )

   # 2 . mod_jk 설치

     - mod_jk.so 다운로드

      apache사이트 접속 -> Tomcat프로젝트 -> Tomcat Connection -> Download -> Binary Releases

     - worker.properties 설정

    

     # load balancing할 wlb를 list에 등록한다.

     # load balancing될 worker들의 경우 list에 등록하지 않아도 된다.

     worker.list=wlb

 

     # load balancing될 worker들을 정의한다.

 

     worker.t1.type=ajp13

     worker.t1.host=xross.domain.co.kr

     worker.t1.port=8009
     worker.t1.lbfactor=1
     #worker.t1.redirect=t2

     # redirect : t1을 사용하다 failover발생시 t2를 사용하겠다는 뜻


     worker.t2.type=ajp13
     worker.t2.host=xross.domain.co.kr
     worker.t2.port=8019
     worker.t2.lbfactor=1
     #worker.t2.activation=disabled

     # activation : t2에서 failover발생시 전멸 -_-;;

 

     # load balancing할 worker 속성 지정, (t1,t2)를 wlb하위에 추가한다.

     worker.wlb.type=lb
     worker.wlb.balance_workers=t1, t2

 

     # security기법인 status는 생략

 

 

 

  

   # 3. Apache 설정

      - mod_jk.so 파일을 ${apache_home}/module 에 위치 ( apache내 다른곳에 위치 시켜도 무관 )

      - 작성한 workers.properties파일을 ${apache_home}/conf하위에 위치 ( apache내 다른곳에 위치 시켜도 무관 )

 

      - mod_jk.conf 작성

 

          LoadModule jk_module modules/mod_jk.so

          JkWorkersFile conf/include/workers.properties

          JkLogFile logs/mod_jk.log

          JkLogLevel info

          JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

          JkMount /*.* wlb

      ** LoadModule : mod_jk.so모듈을 추가시킴

      ** JKWorkersFile : mod_jk에서 사용할 properties파일을 지정

      ** JkMount : [url pattern] [worker name] : 해당 url 패턴시 작업할 worker를 지정

      (load balancing의 경우 load balancing을 담당하는 worker를 지정하여야 한다. )

      ** httpd.conf 파일에 설정값을 직접 넣을수도 있지만 지저분해지는 관계로 파일을 따로 빼서 사용

      ( linux의 경우 conf.d 폴더에 넣으면 자동으로 include 됨. )

 

     - httpd.conf 수정

     Include conf/include/mod_jk.conf

     ** 작성한 mod_jk.conf를 추가한다.

 

 

 

 

   # 3. Tomcat 설정 ( virtual hosting )

 

       - conf/server.xml 수정

            <Engine name="Catalina" defaultHost="xross.domain.co.kr">
                <Host name="xross.domain.co.kr" appBase="webapps"
                   unpackWARs="true" autoDeploy="true"
                   xmlValidation="false" xmlNamespaceAware="false">
               </Host>

                <Host name="pod.domain.co.kr" appBase="webapps"
                   unpackWARs="true" autoDeploy="true"
                   xmlValidation="false" xmlNamespaceAware="false">
               </Host>

               <Host name="cmp.domain.co.kr" appBase="webapps"
                   unpackWARs="true" autoDeploy="true"
                   xmlValidation="false" xmlNamespaceAware="false">
               </Host>

            </Engine>

            ** defaultHost : mod_jk의 worker들의 host name과 맞춰주도록 하자

            ** 서로 다른 이름의 2개의 Host를 추가한다. ( 총 host는 xross, pod, cmp 3개가 된다. )

 

       - 설정 폴더 생성

       conf하위에 엔진명(Catalina)과 같은 이름의 폴더 하위에 host이름과 같은 폴더를 생성해준다.

 

           - ${ apache_home }/conf/${ engine_name }/${ host_name }

           ex> conf/Catalina/cmp.domain.co.kr

 

       - Context 생성및 WebApplication 지정 (생략)

           ** 5.5버젼에서는 해당 호스트 하위폴더의 ROOT.xml를 기본 "/" 패스로 인식하므로

                ROOT.xml을 만들고 추가 context를 지정해줄수 있다. ( server.xml파일에 가능하면 하지말자 )

 

 

 

 

   # 4. Tomcat 설정 ( mod_jk 연동및 load balancing 설정 )

 

       - showdown port 변경

           <Server port="8006" shutdown="SHUTDOWN">

           해당 열을 찾아 Tomcat간에 겹치지 않도록 수정한다.

           ** Tomcat을 한 서버에서 여러개 동시에 사용할 경우 shutdown port에 따라 서로에게 영향을 줄수도 있다.

 

       - HTTP port 변경

           <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
             <Connector port="8089" maxHttpHeaderSize="8192"
                  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                  enableLookups="false" redirectPort="8443" acceptCount="100"
                  connectionTimeout="20000" disableUploadTimeout="true" />

           해당 열을 찾아 Tomcat간에 겹치지 않으며 80 외의 다른 port를 쓰도록 한다.

           ** 80port는 apache에서 사용하며, tomcat간의 port설정을 찝찝하므로 겹치지 않게 했다.

 

        - AJP port변경

            <!-- Define an AJP 1.3 Connector on port 8009 -->
            <Connector port="8019
                   enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

           해당 열을 찾아 worker.properties에 입력한 worker의 port값과 일치하게 바꾸어 준다.

           ** 위 처럼 입력시 worker t2 를 사용하게 된다. 나머지 Tomcat은 8009로 입력해주어야 한다.

  

 

 

 

   테스트 !!!

   Tomcat과 apache를 다 띄워 놓고 여러개의 브라우져에서 접속하여 보자. ( 안되면 apache와 상의 )

 

 

 

 

  추가 : Load balancing 중 session문제

   : mod_jk의 load balancing방식은 기본적으로 round robin이지만 한번 왔던 요청은 같은 Engine에 보내준다.

     그러나 위와 같이만 설정하면 mod_jk는 예전에 보냈던 위치를 찾지 못하고 다른 Engine에게 보내줄수도 있다.

     각 Engine에 jvmRoute를 명시하고 worker의 property에 route를 추가하여 각 Engine을 명시해주면 mod_jk가

     각 Engine을 인식하고 바른곳으로 요청을 보내준다.

 

    - Tomcat server.xml <Engine>설정

        <Engine name="Catalina" defaultHost="dev.domain.co.kr" jvmRoute="jvm1">

 

    - worker.properties 설정

        worker.t1.route=jvm1

        ** 각 worker마다 각각 Engine을 설정해준다.

 

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,