핫 서버에서 애플리케이션의 다운 타임을 최소화하거나 제거하기 위해 Java EAR을 배포 하시겠습니까?

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

  •  03-07-2019
  •  | 
  •  

문제

이것이 Javarebel이하는 일이라고 들었지만 사용자가 이전 버전에서 활성을 유지할 수 있도록 새 버전의 귀를 배치하는 다른 좋은 방법이 있습니까? 응용 프로그램 서버에 JBOSS를 사용합니다 ...

도움이 되었습니까?

해결책

Javarebel이하는 일이 아닙니다. Javarebel (설명에 따르면)은 메모리의 클래스를 고용합니다. 업데이트 된 클래스가 클라이언트의 논리를 깨뜨릴 수 있으므로 시스템에 대한 기존 연결의 경우 허용되지 않습니다.

일단 내가 일하고 있던 회사가 비슷한 문제를 겪었고 이런 식으로 해결되었습니다.

  • 스마트 라우터는로드 밸런서로 사용되었습니다
  • 새 버전은 (새로운) 클러스터의 노드의 50%에 배포되었습니다.
  • 새로운 연결은 이러한 업데이트 된 노드에 엄격하게 전달되었으며 오래된 노드는 오래된 노드간에 균형을 이루었습니다.
  • 오래된 노드는 오프라인으로 나왔습니다 (한 번의 클라이언트 당 클라이언트 수를 한계 내에 유지하기 위해 1-10)
  • 동시에 새 버전이 오프라인 "기존"노드에 배포되었고 새 노드로 자랐습니다.
  • EJB 클러스터링으로 인해 세션과 콩은 다른 오래된 노드에 의해 픽업되었습니다.
  • 결국 (몇 시간 안에) 하나의 오래된 노드 만 남았고, 기존 버전의 단일 인스턴스가 있고 이전 버전을 사용하는 모든 클라이언트가 연결되었습니다.
  • 마지막 오래된 클라이언트가 연결이 끊어 졌을 때 해당 노드가 너무 무너졌습니다.

이제 저는 네트워킹 녀석이 아니며 많은 세부 사항을 줄 수 없습니다 (라우터 하드웨어 등). 제가 이해한다면, 제대로 기억한다면, 우리는 새로운 버전의 응용 프로그램을 배포하기 위해 추가 Weblogic 도메인을 설정해야한다는 점을 제외하고는 매우 쉽게 설정 될 수 있습니다 (그렇지 않으면 JNDI 이름의 이전 제품과 충돌 할 것입니다).

도움이되기를 바랍니다.

PS Ichorus는 앱이 클라이언트 서버에 배포되었다고 말하는 의견을 제공했습니다. 따라서 라우터 트릭을 실현할 수 없습니다. 자, 지금은 하나의 실행 가능한 솔루션 만 볼 수 있습니다 (지금은 21:52입니다.

  • "버전"JNDI 이름으로 새 버전을 개발합니다. 예 : 고객 Bean이 버전 1의 EJB/Customer에있는 경우 버전 2에서는 EJB/Customer2에 있습니다.
  • 안정적인 기본 인터페이스 (공장 스타일)가있는 응용 프로그램에 비즈니스 정면이있어 고객 Bean을 요청할 때 가장 높은 VARCENED JNDI 이름을 찾으려고 시도합니다 (물론 모든 통화가 아닌 한 시간 동안 캐시 할 수 있습니다. ). 그 외관은 별도의 응용 프로그램으로 배포 될 수 있으며, 결코 거의 업데이트되지 않거나 거의 업데이트되지 않습니다.
  • 이제 모든 새로운 클라이언트가 배포 된 최신 응용 프로그램에 액세스 할 수 있으며 응용 프로그램은 충돌하지 않습니다.

이 접근법은 신중한 계획과 테스트를 받아야하지만 IMHO가 작동해야합니다.

최근에 비슷한 방식으로 몇 가지 응용 프로그램을 수정하여 동일한 도메인에서 공존 할 수 있도록 (다른 데이터 소스에 동일한 JNDI 이름을 사용하기 전).

다른 팁

이해하는 것처럼 Weblogic은 Ear 버전 업그레이드 중에 다운 타임을 제거하기 위해 Parallel Deployment라는 기능이 있습니다. 기존 애플리케이션을 중지하지 않고 새 버전을 배포 할 수 있으며 새 버전이 성공적으로 배포되면 구형에서 새 버전을 기존 버전에서 새 버전으로 전환 할 수 있습니다.

다른 응용 프로그램 서버가이를 지원하는지 확실하지 않습니다.

ref : http://edocs.bea.com/wls/docs100/deployment/redeploy.html#wp1022490

로드 밸런서 사용에 대한 블라디미르의 제안은 원하는 것을 달성하는 확실한 방법입니다. 반드시 고급 하드웨어로드 밸런서 일 필요는 없습니다. 오히려, 기본 웹 서버 (APACHE) 및 MOD_JK 또는 MOD_PROXY로 JBOSS 서버를 전면하면 하나의 공통 웹 외관을 유지하고 귀 업그레이드 시간에 적용 가능한로드 및 라우팅 루틴을 구현할 수 있습니다.

// 니콜라스

OSGI 프레임 워크를 사용하여 봄을 살펴보고 싶을 것 같습니다.http://www.springframework.org/osgi

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