무정지 배포관련해서 궁금해서 글 올려봅니다.

2017-06-23 18:52

안녕하세요. 가입하고 처음으로 써보는 글이네요.

현재 회사에서 Continuous delivery 관련해서 개발프로세스부터 아키텍트를 바꿔가고 있는 중인데 무정지 배포 관련해서 문제가 생겨 이렇게 글 남겨봅니다

Apache 1개 + Tomcat n개의 Horizontal Clustering으로 mod_jk를 통해 sticky session으로 로드밸런싱 되는 구조로 테스트를 하고 있습니다. 여기서 문제가 생긴게, 톰캣1번이 죽을 경우 다른 톰캣으로 옮겨지면서 JSESSIONID에 suffix로 붙는 jvmRoute 명이 바뀌는데 저희 소스코드상에서 JSESSIONID를 DB에 유니크한 key로 쓰고있는 코드가 많다는 점입니다. suffix가 바뀌게 되면 DB에서 데이터를 못찾아 올텐데 해결할 수 있는 방법이 있을까요?

톰캣에서 JvmRouteBinderValve를 extends하면 session id 생성규칙은 바꿀 수 있을법한데 문제는 apache에 jk_mod에서도 suffix를 사용하기떄문에 어떤 문제가 발생할지 몰라 손을 못대고 있습니다. nginx에서도 비슷한 방식으로 로드밸런싱 하는걸로 알고있는데 분명히 답이 있을 법한데 못찾아서 이렇게 글 남깁니다

비슷한 경험이 없는 4년차 개발자로서는 Continuous delivery 구축이라는게 쉬운게 아니네요...

3개의 의견 from SLiPP

2017-06-28 09:30

JSESSIONID를 DB상에서 유니크 키로 사용한다는 것에 문제가 있다고 보는데요..LB 밑단에 테라코타같은 세션 클러스트링을 두면 어떨지 모르지만...(방향이 맞는지도 모름..)

실제 키로 사용되어질 용도라면 별도의 유니크키를 헤더 같은 곳에서 주고 받는게 좋다고 생각듭니다.

혹시라도 질문에 대한 문제를 해결하면 아마도... LB부터 Tomcat, Nginx..기타등등 또다른 곳에서 다른 문제가 발생할거 같다는 생각이 듭니다. 정확한 답변은 아니지만 JSESSIONID 를 DB의 키로 사용하는 부분에 대해 고민해 보는게 좋지 싶습니다.

2017-06-29 10:18

@jhindhal.jhang @eclipse4j 답변 감사합니다. 근본적으로 JSESSIONID가 Unique한 키로 쓴다는게 가장 큰 문제였던것 같네요... 전체적으로 코드를 갈아엎는걸 제안해봐야할것같아요

의견 추가하기

연관태그

← 목록으로