기술지원 문의

로드밸런싱 및 세션 유지 및 서비스 중단없이 변경된 클래스 적용
정성원 / 2003-04-10 00:00

여기 게시판에서 많은 도움을 얻었기에 저도 몇자 적어봅니다.

* 아파치+resin입니다.

1. 로드밸런싱
   #resin.conf    
    
    

    서버 시작
     $RESIN_HOME/bin/httpd.sh -pid 1.pid -server 1 start   //=>첫번째 인스턴스 기동
     $RESIN_HOME/bin/httpd.sh -pid 2.pid -server 2 start   //=>두번째 인스턴스 기동
    
     서버 중지
     $RESIN_HOME/bin/httpd.sh -pid $RESIN_HOME/1.pid stop  //=>첫번째 인스턴스 중지
     $RESIN_HOME/bin/httpd.sh -pid $RESIN_HOME/2.pid stop  //=>두번째 인스턴스 중지

2. 클래스 변경시 restart하여야 하는 문제점 

   클래스를 변경하고 재컴파일한 후에 레진을 restart하여야 하는 것은 
   큰 부담이고 여간 불편한 방법이 아닙니다.
   그런데 레진을 듀얼 인스턴스로 운영할 경우 하나의 인스턴스만으로도 서비스는 가능하기 때문에
   다른 서버를 restart하여도 서비스는 중단되지 않습니다. 그리고 변경된 클래스는 적용이 되는 것을
   확인 하였습니다. 다음과 같은 방법으로 세션도 공유되므로 중단 없는 서비스가 가능하겠지요.

3. 세션 유지
    여러개의 인스턴스를 운영할 경우 세션을 공유해야 합니다. 세션을 공유하는 방법에는 몇가지가 있습니다.
    www.caucho.com에 있는 내용을 인용합니다.

    1) 파일을 이용하는 방법
       
       #resin.conf 설정
       
         
         WEB-INF/sessions
         

       

       클래스를 자주 변경해서 자주 restart를 해야하는 경우 유용하다고 나와있습니다.
       세션유지를 WEB-INF/session/ 아래에 파일로 하기 때문에
       서버를 리스타트해도 세션이 살아있을 수 있습니다. 
       세션 파일들은 하루동안 계속 남아있습니다.       
       그러나 듀얼로 인스턴스를 운영할 때 약간 오작동이 있는 것 같습니다. 
       개발시에만 사용할 것을 권장하고 있습니다.
    
    2) TCP-ring을 이용하는 방법       
       
       #resin.conf 설정       

       
        
 

       

       
       세션은 몇개의 머신에 분산되어 저장되므로 하나의 데이터베이스에 저장되는것보다
       훨씬 더 훌륭하게 분산될 수 있다고함.       


    3) 데이터베이스를 이용하는 방법

       #resin.conf 설정       
       
       
          
    test
    
  

       


       test는 resin.conf 에 데이터소스를 정의하는 곳에서 참고할 수 있습니다. 

       
          test
  ....


       데이터베이스를 이용하는 방법은 가장 이해하기 쉬운 방법입니다. 
       장점은 간단하다는 것이고 단점은 병목현상을 유발할 수 있다는 것입니다.      
       
       위와 같이 설정을 하면 자동으로 아래와 같이 테이블을 생성한답니다.(예.MySQL)
       CREATE TABLE session (
         id VARCHAR(64) NOT NULL,
         data BLOB,
         mod_time TIMESTAMP,
         PRIMARY KEY(id)
       ) 
   
참고) http://www.caucho.com/resin/ref/sessions.xtp   

* 영어읽기에 친숙하신 분들은 직접 참고하셔도 좋을듯.