복슬이
1k
2010-11-15 07:24:29
7
40341

[질문] 웹서버가 두대 이상이면 session 처리는 어떻게 하죠?


안녕하세요.

 

전 한번도 두 대 이상의 웹서버를 로드를 분산해(L4 스위칭을 이용) 시스템을 구축해본적이 없습니다. 그래서 궁금한 점이 몇가지 있습니다.

 

1. 로그인인과 같은 session, cookie를 이용할때 서로 데이터 공유는 어떻게 하나요?

 

2. 예를 들어 게시판에 첨부파일을 저장하게 되면 해당 웹서버 하드에 저장되는데 다른 서버에서 첨부파일을 접근할려면 어떻게 해야되나요?

 

3. WAS는 로드밸런싱을 위해 어떤기능을 지원해주나요?

- 제가 알기론 Weblogic 같은 경우 Master 웹서버에서 소스파일을 수정하면 연계된 다른쪽에 알아서 수정사항이 반영되어 동기화가 된다고 하던데 맞는 건가요?

- Tomcat등 비상용 WAS에서는 이런 기능이 없는지요?

 

4. 이런걸 클러스트링이라 하나요?

 

궁금한게 많이 있네요 ㅡㅡ;

0
  • 답변 7

  • sizers
    2010-11-15 11:30:17
    미천한 지식으로 답변드립니다.

    1. 쿠키는 client에 저장되므로 전혀 문제될것이 없습니다. 세션같은 경우에 문제가 되는데 L4장비(통상 L7스위치도 L4라고 부릅니다)에서 세션을 관리해주면서 특정 IP의 클라이언트는 특정 서버로 고정시켜주는 방식으로 해결했습니다.

    2. 그래서 통상 1개의 서버로 파일을 몰아주거나 별도의 NAS장비를 달게 됩니다.

    3. 배포와 로드밸런싱은 별개의 기능입니다. WAS쪽은 저도 지식이 없어 잘 모르겠습니다만 로드벨런싱은 통상 L4(L7)장비를 쓰는 것이 일반적입니다.

    4. 클러스터링과 로드벨런싱은 다른개념입니다. 클러스터링은 여러개의 머신으로 1개의 서비스를 수행하는 것이고 로드밸런싱은 여러개의 머신으로 여러개의 동일한 서비스를 수행하면서 로드를 분산시키는 목적으로 사용합니다. 안정성을 높인다는 측면에선 비슷하지만 엄연히 다른 개념입니다.
  • 제타건담
    7k
    2010-11-15 11:34:00
    일단 제가 알고있는 아주 조그만한 선에서 말씀드리면..
    클러스트링인걸로는 알고 있습니다..WAS 2대를 묶어서 하나처럼 동작시키게 하는것은요..
    톰캣에서도 메뉴얼을 보면 클러스트링 셋팅 방법이 있어보이는걸로 알아서..그쪽을 보시면 될것 같구요..
    로드밸런싱은 제가 예전에 프로젝트 했을 당시 tomcat을 이용해서 했을때는 tomcat에서는 별도로 하는건 없었습니다..
    로드밸런싱을 담당했던건 L4 스위치 단에서 했구요..
    그때 관련 프로그래머랑 와서 로드밸런싱 관련 협의를 했던걸로 기억합니다..
    사용자가 방문수에 따라 하느냐..아니면 관련 규칙을 만들어서 하느냐..머..이런것들이었던걸로 기억하네요..
    그리고 제 경험으로는..
    A나 B 서버중 어느 한쪽으로 붙었으면 차후에 로그인을 해도 계속 거기로 붙었던걸로 기억을 합니다..
    물론 어느 한쪽 서버에 문제가 생기면 다른쪽으로 붙긴 하지만..
    L4 스위치가 사용자관련 어떤 매핑테이블을 갖고 있어서..
    그렇게 하지 않나 하는 추측을 해봅니다..
    그래도 확실하게 하기 위해선 클러스트링을 하는게 좋죠..
    저 같은 경우는 DB도 한 서버가 아니라..양쪽 모두에 DB서버를 두고 그걸 하나로 묶어주는 솔루션 없이 진행하다보니..
    그것도 문제가 있었었는데..
    그 부분은 dblink 이용해서 해결했습니다..오라클이어서요..^^..
    걍 제 오래전 경험담을 주저리주저리 얘기해봤습니다..한 5년전 얘기라..가물가물하네요..
  • jee1lee
    36
    2010-11-15 11:53:26
    보통 LB 셋팅할때 접속자 주소를 HASH 해서 특정 서버로만 밀어 주도록 설정합니다.
    장점은 셋팅이 간편하고 개발자가 신경쓸것이 없다는 것이구요.
    단점은 접속된 서버 다운시 LB 에서 다른 서버로 밀어 줄 경우 세션 정보가 없어서 에러가 발생한다는 것입니다.
  • eww1212
    923
    2010-11-15 14:28:32
    쿠키를 쓰면 자바단에서 세션 없으면 쿠키 체크하고 있으면 그걸로 세션 만들고 하는 작업을 해주면 끝

    쿠키 안쓰면 좀 돈이 들어감(WAS에 따라 공짜인 것도 있음)
    윗분 말씀대로 특정 접속은 계속 하나의 웹서버로만 가게 만들거나
    세션을 was끼리 자동으로 공유 하는 설정을 잡으시던가 하면 됨

    2번은 SE등에게 문의 하시면 여러대 컴터 하드의 파일을 자동으로 동기화 하는게 있어요

  • 조병장
    3k
    2010-11-15 14:30:54
    세션 클러스트링은 성능 오버헤드가 꽤 있다는걸로 알고 있습니다.
    왠만하면 쿠키 암호화 잘해서 쿠키 이용하시는게 좋을거 같습니다.
  • otwm
    1k
    2010-11-15 16:07:47
    L4 스티키 방식으로....
  • skynle
    382
    2010-11-15 18:18:42
    여기서 한가지 고민해야 할 것은..
    WAS가 다운돼서 세션이 끊기고.. 그리고 그 세션이 유지되지 않으면.. 안된다..
    라는 가정인데..
    실 업무에서 저런게 얼마나 될까요.? ^^
    더구나 WAS가 죽는 상황이라는 최악의 상황일건데..
    이런경우 사실.. 에러 뱉어내고.. 그냥 처음부터 다시접속하게 해주는것도 방법일듯..
    혹은.. 세션에 넣어둘 정보를 세션디비를 만들어 넣어둬도 되고요..
    JBOSS 같은 WAS를 사용하면 몇가지 설정으로 세션도 공유가 가능하고요..

    하지만.. 역시.. 너무 사치스런 고민이 아닐까 한다는...
    -2
  • 로그인을 하시면 답변을 등록할 수 있습니다.