LabHub

Tomcat & nginx 운영 · WAR 배포와 무중단 · 실습

WAR 배포와 병행 배포로 무중단 전환

LabHub 에서 이어서 보기

목표

WAR 배포의 실제 동작을 확인하고, 병행 배포(Parallel Deployment) 로 세션을 끊지 않고
버전을 올린 뒤, 검증까지 하는 배포 스크립트를 작성할 수 있게 됩니다.

왜 중요한가

단일 WAS 환경에서 무중단 배포를 하려면 L4 앞단에서 서버를 빼고 넣어야 한다고
생각하기 쉽습니다. 그런데 톰캣에는 원래 병행 배포 기능이 있습니다.
파일명에 ##버전 을 붙이면 같은 컨텍스트에 여러 버전이 공존하고,
기존 세션은 구버전으로, 신규 요청은 신버전으로 갑니다.
많은 SI 현장이 이 기능을 모른 채 새벽 정지 배포를 반복합니다.
또 하나 — 배포 스크립트가 전개 완료를 기다리지 않으면 실패한 배포를
성공으로 보고합니다. 그게 정지 배포보다 훨씬 나쁩니다.

단계

1. Tomcat 을 기동하고 /opt/lab/samples/labhub-1.0.0.war
/opt/tomcat/webapps/labhub##001.war 로 배포합니다.
http://127.0.0.1:8080/labhub/version1.0.0 을 반환해야 하고,
catalina.outlabhub##001 배포 기록이 남아야 합니다.
(이 배포 기록이 이후 단계의 증거로 쓰입니다.)
2. 전개된 디렉터리를 확인해 /root/tc/explode.csv 를 만듭니다.
첫 줄은 path,exists. 아래 네 경로에 대해 Y/N 을 적습니다.
WEB-INF/web.xml, WEB-INF/classes, WEB-INF/lib, META-INF
3. /opt/lab/samples/labhub-2.0.0.war
/opt/tomcat/webapps/labhub##002.war 로 배포합니다.
이때 ##001먼저 지우지 말고 두 버전이 공존하게 두세요.
http://127.0.0.1:8080/labhub/version 이 이제 2.0.0 을 반환해야 하고,
catalina.outlabhub##001labhub##002 배포 기록이 모두 있어야 합니다.
4. /root/tc/parallel.md 를 작성합니다. 아래 세 가지가 본문에 들어가야 합니다.

참고

단계 8개

  1. 첫 버전 배포
  2. 전개 결과 확인
  3. 두 번째 버전 병행 배포
  4. 세션 드레이닝 이해 정리
  5. 구버전 내리기
  6. 실행 가능 JAR 기동
  7. WAR 와 JAR 비교표
  8. 배포 스크립트 작성