2013-05-31 3 views
2

이 작업은별로 이색 적이 지 않지만 클러스터링 환경이 부족하기 때문에 대답을 찾기가 어려울 것으로 생각됩니다.
Google의 web-app는 일정에 따라 일부 백그라운드 작업을 수행합니다 (데이터 쿼리 및 전송). 이제 실행중인 Tomcat 서버가 클러스터됩니다. 이러한 백그라운드 작업을 수행하기 위해 클러스터에 하나의 인스턴스 만 필요합니다.
나는 다음과 같은 옵션을 참조하십시오클러스터를 인식하는 Tomcat 웹 응용 프로그램

  • 이상적인 솔루션 톰캣의 슬레이브 인스턴스가 비활성 상태 (배포 취소) 우리의 응용 프로그램을 가지고 마스터/클러스터의 노예 모델이 될 것입니다. 슬레이브가 마스터가되면 응용 프로그램이 배포되고 작동하기 시작합니다. 가능한가?

  • 그렇다면 일부 노드가 시작되거나 종료 될 때를 알기 위해 리스너를 구현할 수있는 알림/이벤트가 필요합니다. 우리는 프로그래밍 방식으로 첫 번째 제기 된 노드에서 응용 프로그램을 마스터로 만들고 다른 (슬레이브) 노드에서 원치 않는 프로세스를 차단합니다. 또한 노드에서 시작/종료 이벤트를 수신하여 항상 활성 단일 마스터를 유지합니다. Tomcat에서 이러한 이벤트 API를 찾고 있었지만 지금까지는 운이 없었습니다.

누구나 그러한 작업 경험이 있습니까? 어떻게 그걸 해결 했니?
감사합니다.

+0

텍스트를 수정할 수 있습니까? 이해하기가 약간 어렵다. – Thomas

답변

0

Tomcat 클러스터에 마스터/슬레이브 동작 설정이 있는지 모릅니다. 모든 노드가 동일해야한다고 생각하기 때문입니다. 그러나 Quartz Clustering with JDBC-JobStore을 사용하면 어떨까요? 공유 데이터베이스 내에서 태스크를 정의 할 수 있으며, 태스크가 트리거되면 사용 가능한 첫 번째 노드가이를 실행합니다. 따라서 클러스터의 모든 노드는 동일한 작업을 수행하지만 단일 노드는 한 번에 동일한 작업을 실행합니다.

"한 번만 노드를 실행하면 작업이 실행됩니다. 로드 밸런싱 메커니즘은 사용량이 많은 스케줄러 (많은 트리거)에 대해 거의 무작위이지만 바쁜 (예 : 소수의 트리거) 노드에 대해서는 동일한 노드를 선호합니다. 스케줄러. " 작업을 실행하는 동안 노드가 실패하면

다음으로 사용 가능한 노드가 다시 시도합니다 : 노드 중 하나가 실패 할 때

"페일 오버가 발생하는 동안 하나 이상의 작업을 실행하는 와중에합니다. 노드가 실패하면 다른 노드는 조건을 감지하고 실패한 노드 내에서 진행중인 데이터베이스의 작업을 식별합니다. "

관련 문제