응용 프로그램을 중지하지 않고 새 .WAR 응용 프로그램을 배포 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1663757

  •  12-09-2019
  •  | 
  •  

문제

이봐, 나는 성배를 처음 접했고 배포에 대해 궁금합니다. .war가 프로덕션에 배포되면 다운 타임없이 응용 프로그램을 어떻게 업데이트 할 수 있습니까?

도움이 되었습니까?

해결책

컨텍스트가 다시로드되는 동안 (서버를 다시 시작하지 않음) 전쟁 파일을 핫 파일을 배포하더라도 (서버를 다시 시작하지 않음) 여전히 다운 타임이있을 것입니다. 이것은 성배가 아닙니다.

Dogbert가 말했듯이, 유지 보수 페이지를 세우는 것이 가장 좋습니다 (Tomcat 앞에서 Apache를 사용하는 것이 좋습니다)과 앱 서버를 종료하고 새 전쟁을 업로드 한 다음 서버를 다시 시작하십시오.

다른 팁

Apache로 두 개의 Tomcat 인스턴스를 설정할 수 있습니다 mod_proxy_balancer 설명대로 앞에 여기. 응용 프로그램의 재배치를 위해 "롤링 업그레이드"전략이 적용될 수 있습니다 (APP1과 APP2가 두 개의 Tomcat 인스턴스라고 가정).

  1. Apache의 밸런서 관리자에서 tomcat@app1을 비활성화하십시오
  2. Tomcat@app1에 응용 프로그램을 재배치하십시오
  3. APP1로 테스트를 수행하고 모든 것이 작동하는지 확인하십시오.
  4. 밸런서-매너에서 tomcat@app1을 활성화하십시오
  5. 밸런서-관리자에서 tomcat@app2를 비활성화하십시오
  6. Tomcat@app2에 응용 프로그램을 재배치하십시오
  7. 밸런서-매너에서 tomcat@app2를 활성화하십시오

그리고 당신은 끝났습니다. 그렇게하려면 여러 물리적 또는 가상 머신이 필요하지 않습니다. 단일 상자에서도 가능합니다. 애플리케이션 업그레이드에 데이터베이스가 변경되면 조심하십시오. 위의 내용은 예를 들어 캡슐화 될 수 있습니다 간트 스크립트, 따라서 간단한 "성배 클러스터 재배치"는 필요한 모든 것을 수행합니다. 이러한 대본은 현재 내 목록에 있지만 언제 완료 될지 전혀 모른다.

Tomcat을 사용하는 경우 병렬 배포라고하는 것이 가능합니다.

http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#parallel_deployment

문서에 설명 된대로 전쟁 파일을 버전 번호로 이름을 지정합니다.

  • foo ## 42.war
  • foo ## 43.war

앱이 전쟁으로 포장되면 Run-App을 사용하는 것처럼 소스 파일의 변경 사항은 자동으로 전파되지 않습니다. 일반적으로 나는 항상 효과적으로 실시간 코드가있는 컴파일 된 코드의 경우 라이브 업데이트를 수행하는 것이 약간 위험하다고 생각합니다. 개발 중에 홀수 배포 글리치에 대처할 수 있지만, 생산에서는 안전하게 플레이하고 약간의 가동 중지 시간으로 살기를 원합니다.

내가 아는 것은 Groovy 파일 또는 .gsp one을 변경할 수 있고 저장 후 변경 사항을 브라우저에서 사용할 수 있다는 것입니다. 그러나 다른 유형의 파일이있는 경우이 기능은 확실하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top