일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자바스크립트
- Android
- Web Service
- Apache Lucene
- 안드로이드
- Bootstrap
- STS
- asp.net
- Eclipse
- MSsql
- decompiler
- varags
- TextBox
- javascript
- scrollView
- SpringSource Tool Suite
- 이클립스
- 자바
- html
- 컬럼명
- 웹뷰
- Java
- C#
- Maven
- MS-SQL
- jsp
- WebView
- Redirect
- MANTIS
- 웹 서비스
- Today
- Total
bboks.net™
톰캣 Parallel Depployment 본문
다른 서비스와 연동중인 서버에 새로운 버전을 배포할 때마다 서버를 내리기 부담스러워 hot deploy를 할 수 있는 방법을 고민하다가 Parallel Deployment를 알게되었다.
tomcat parallel deployment는 tomcat7부터 지원한다.
자세한 내용은 여기에서 확인
우선 parallel deploy 기능을 사용하기 위해서는 server.xml에 unpackWARs="ture" autoDeploy="true"로 설정이 되어 있어야 한다. (7부터는 자동으로 설정이 되어 있는 듯)
1. 기존 서비스(test.war)가 운영중인 상태
2. webapps에 test##2.war를 배포
3. test##2.war 파일의 압축이 풀리면서 test##2라는 디렉토리 생성
4. 해당 서비스로 접속을 해보면 test##2로 연결이 된다.
tomcat manager를 통해 확인해보면 서비스가 2개 구동중인 것을 확인할 수 있다.
위와 같이 동작하는 이유는 ##에 있다.
##은 context version을 의미하며, 숫자가 높을수록 최신이 된다.
버전을 붙이지 않으면 None specified로 보여진다.
연결이 되는 순서는 다음과 같은데
1. 새로운 요청은 가장 최신의 버전으로 연결. 따라서 새로운 서비스에 새로운 세션
2. 요청에 세션정보가 있으면 세션 메니저가 버전을 확인하고, 기존 세션은 기존의 서비스로 연결
3. 요청에 세션정보가 있으나 기존 서비스가 존재하지 않으면 최신 버전으로 연결
추가
1. @Scheduled 스케쥴러는 동시에 동작
2. 웹 페이지 세션은 유지되지 않음
[참조] Tomcat Parallel deployment