2011-11-06 2 views
2

프로덕션 서버에 servicemix를 사용하려고 생각하고 있습니다. OSGI 서블릿을 사용하면 중단 시간없이 새 버전의 응용 프로그램을 배포 할 수 있습니까? 그렇지 않다면 제로 다운 타임 서버를 달성 할 수있는 방법이 있습니까? 감사.OSGI를 사용하여 제로 다운 시간을 얻는 방법?

답변

4

OSGi 동적 서비스를 사용하면 서버를 다시 시작하지 않고도 업그레이드 할 수 있습니다. 그러나 이것은 귀하의 응용 프로그램이 OSGi 래더의 맨 위에 있음을 나타냅니다. 서비스를 동적으로 얻는 것만으로는 충분하지 않습니다. 응용 프로그램은 역 동성을 달성하면서 상태를 유지해야합니다. OSGi 성숙도 모델은 graham charters를 참조하십시오. [1]

현실적으로 복제/클러스터링을 통해 가동 중단 시간을 줄일 수 있습니다. 예제 설정은 두 개의 serviceMix 서버와 같으며로드 밸런서가 설치합니다. 한 서버를 업그레이드 할 때로드 균형 조정기를 다른 서버로 지정합니다. 단지 예입니다.

[1] http://www.infoq.com/news/2011/09/mmm-osgi

1

사용하는 시간에 관계없이 중단 시간을 사용할 수 없습니다. 현실 세계에서는 너무 많은 외적 요인이 작용합니다. OSGi는 서로 다른 버전의 서비스가 동시에 실행되도록 허용하여 연결에서 새로운 서비스를 사용할 수있게하고 업그레이드 된 마지막 연결이 끊어지면 이전 서블릿이 종료되도록하여 업그레이드 시나리오의 중단 시간을 완화합니다.

1

은 OSGi가 감소하거나 심지어는 단일 서버에 예정된 다운 타임을 없앨 수있다. 이전 버전의 배포를 취소하기 전에 새 버전을 배포 할 수 있으면 0이 될 수 있습니다 (차이가 없으므로 0에 가까워 야합니다).

그러나 다른 주석 기자가 암시하는 문제는 계획되지 않은 작동 중지 시간입니다. OSGi는 서버의 하드웨어 오류로부터 사용자를 구할 수 없습니다.

에 두 개 이상의 서버가 있어야합니다. 예 : 클러스터. 일단 이것이 있으면 특정 서버 (예 : 시간 또는 ...이 아닌 한)에서 소프트웨어를 업그레이드하는 데 얼마나 오랜 시간이 걸리지는 않습니다.

1

OSGi 번들의 여러 버전을 동일한 컨테이너에 배치 할 수 있지만 포트 충돌을 피하기 위해 서블릿을 다른 URL에 바인드해야하므로 실제로는 도움이되지 않습니다. 그런 다음 클라이언트는이 새 URL로 전환해야합니다. 이것은 프록시 서버 등에서 라우팅 구성을 동적으로 업데이트함으로써 추상화 될 수 있습니다. 어느 쪽이든 배치가 복잡하고 아키텍처가 다른 방식 (HA 등)으로 여전히 제한되어 있습니다.

대신 더 나은 옵션은 다른 컴퓨터에서 Servicemix 인스턴스 (및 부하 분산 장치) 클러스터를 사용하는 것입니다. 그런 다음 각 서버에서 표준 중지/재배포/시작을 수행하여 업그레이드를 수행하십시오. 또한 고 가용성 및 수평 확장 성 요구 등을 해결합니다.

관련 문제