SharedIT | 묻고 답하기(AMP)

apache-L4-tomcat 이중화 설정

안녕하세요 선배님들. 미들웨어 직무로 입사하게 된지 얼마 안된 새내기입니다. 


회사에서 신규 홈페이지를 구상중에 있으며, 

apache 두대

     L4 (tomcat ip vip 설정 후 분기) 

tomcat 두대 

상기 구조로 연결하려 합니다. 

톰캣 서버에는 각각 admin 컨테이너, web 컨테이너 해서 두 개의 컨테이너 띄울 예정입니다.


L4에서 트래픽 분기시켜주는 것과 별도로 

tomcat 단에서도 세션 클러스터링을 해주려 합니다.  

아직 L4 단에서 VIP 설정도 안 된 상태입니다. 


이 때, 작업 순서를 어떻게 가져가야할지를 모르겠어서 여쭤봅니다.

참고할 만한 자료를 공유해주셔도 감사드리겠습니다!

4개의 답변이 있습니다.

앵그리파파
  0 추천 | 약 한 달 전

우선, 세션 유지를 위해 L4 로드 밸런서를 구성하세요. 

세션 지속성은 클라이언트가 하나의 백엔드 서버(톰캣 인스턴스)와 세션을 설정하면 해당 클라이언트의 후속 요청이 동일한 백엔드 서버로 전송되도록 보장합니다.

일반적으로 세션 유지는 클라이언트의 IP주소 또는 세션 쿠키와 같은 특정 식별자를 기반으로 합니다.

그 다음으로 톰캣 세션 클러스터링을 설정하세요.

여러 톰캣 인스턴스에 걸쳐 세션 데이터를 복제하도록 톰캣의 세션 클러스터링 기능을 구성합니다. 

** 톰캣의 server.xml 파일에서 <Cluster> 요소를 구성하는 작업 포함 **

또한, 세션 관리자 구현 및 클러스터링 구성을 지정하려면 웹 애플리케이션의 context.xml 내에 <Manager> 요소를 구성해야 합니다.

마지막으로 클러스터링을 지원하도록 로드 밸런서를 구성하세요.

** L4 로드 밸런서가 톰캣의 세션 클러스터링과 원활하게 작동하도록 구성되었는지 확인 **

로드 밸런서에 따라 개별 톰캣 인스턴스의 가용성을 모니터링하도록 상태 확인을 구성하고 클러스터링과 함께 작동하도록 세션 유지 설정을 조정하는 작업 포함이 포함될 수 있습니다.

참고로, 백엔드 서버를 사용할 수 없게 되거나 클라이언트 세션을 다른 서버로 마이그레이션해야 하는 경우를 포함하여 다양한 시나리오에서 세션 장애 조치가 예상대로 작동하는지 설정을 철저히 확인해 보세요. 

그리고 세션이 만료될 때 적절하게 정리되도록 톰캣과 웹 애플리케이션 모두에서 적절한 세션 시간 초과 설정을 구성하세요. 

** 오래된 세션 데이터 문제를 방지하려면 애플리케이션 코드에서 세션만료를 적절하게 처리히세요. **

gusxo314 | 약 한 달 전

감사합니다 선배님. 알려주신 정보가 큰 자산이 되었습니다. 

topkslee
  0 추천 | 약 한 달 전

단순 L4에서 LB는 세션 clustering이 되지 않습니다.

session clustering을 이용하시려면 tomcat session clustering 구성하시면 됩니다.

1. L4 설정

2. WEB 서버 (2대)

- worker.properties 설정

- httpd.conf 설정

- vhosts.conf 설정

3. WAS 서버 (2대)

- server.xml 설정

- web.conf 설정


저 순서로 하면 될겁니다. 

항목별 상세 내용은 구글링 (worker.properties 설정 등등) 검색하면 많이 나올겁니다.

여기 참고해보세요.

https://www.didim365.com/blog/20200526-blog-2/


gusxo314 | 약 한 달 전

큰 도움이 되었습니다. 감사합니다!

wansoo
  0 추천 | 약 한 달 전

L4 스위치로 로드 발랜싱을 하고, 톰캣과 아파치를 연동해서 사용하는 개념으로 구성하면 되지 않을까 싶어 보이네요.

L4에 가상 IP를 넣고, 아파치 둘을 선택적으로 접속할 수 있게 구성하고...

톰캣은 아파치와 1대 1로 묶는 방식으로 아파치를 앞단에 두고, 톰캣을 아파치 뒷단에서 두어 연동하는 방식이 낫지 않을까 싶어 보이네요.

L4 스위치에서는 아파치에 대한 연결 설정을 하고, 아파치와 톰캣이 각각 연동되는 구성으로...

gusxo314 | 약 한 달 전

web 앞단에도 L4가 존재하고, web-was 사이의 L4로 분기시켜주는 방안을 구성했던겁니다! 
외부 L4 - WEB - 내부 L4 - WAS 이런식으로요.

내부 L4의 로드밸런싱 기능과 TOMCAT의 세션 클러스터링 기능을 동시에 사용하는 방안이 있을까해서 질문 글 올렸습니다!

 

wansoo | 약 한 달 전

내부 L4가 톰캣에 대한 가상 IP를 가지도록 할 것이기 때문에 web 앞단의 L4와 같은 개념으로 구성하면 될것 같은데요.

내부 L4에 톰캣에 대한 가상 IP를 가지고 있도록 하고...

웹1이나 웹2가 내부 L4에 대한 가상 IP로 톰캣에 접속을 시도하면 될 것 같고...

내부 L4가 적절하게 부하를 분산시키면서 톰캣1이나 톰캣2로 연결 시켜 주도록 구성하면 될 것 같네요.

gusxo314 | 약 한 달 전

선배님께서 말씀해주신 방안으로 저도 진행하고자 하여 인프라 네트워크 직무 선배님께 여쭤보니 

L4로는 트래픽만 분기해주기 때문에, 하나의 was에 문제가 생겨 연결돼있던 세션이 끊어지면 로그인부터 다시 해줘야하는 단점이 있다고 하시더라구요. 

그래서 세션(로그인 정보 + 결제 정보 등)이 연결된 was에 문제가 생겨도 바로 다른 was에서 세션 클러스터링을 통해 세션 정보를 바로 받아올 수 있는 방안을 생각해보라고 하십니다.

혹시 이런 부분도 아시는 게 있으신지 조심스레 여쭤봅니다.  

차바라기
  0 추천 | 약 한 달 전

아래 사이트 참고 해보세요 저도 이러한 부분 많이 도움을 받았습니다.

https://kldp.org/node/144220


gusxo314 | 약 한 달 전

답변 감사합니다!