우선 시나리오를 설명하겠습니다.
WSO2 ESB (4.9.0)의 두 노드와 Apache ActiveMQ의 두 노드가 네 가지 시스템에서 실행됩니다. 현재, ActiveMQ를 각각 ESB 노드 점에 하나 개의 노드 하나 개 AMQ 노드가 다운되면이 경우WSO2 ESB ActiveMQ를 통한 JMS 균형 조정 및 페일 오버
ESB1 -> AMQ1
ESB2 -> AMQ2
는 ESB의 한 노드 만 생산하고 메시지를 소비 할 수있을 것입니다.
이 문제를 해결하고 고 가용성을 구현하는 방법에 대해 생각해 보면 ActiveMQ 설명서에서 장애 조치를 구성하기위한 url 구문을 설명하는 a section을 발견했습니다.
그래서, 각 ESB에, 나는 문서로 구성 공급자 URL과 메시지 저장소에 부착 된 메시지 프로세서를 구성한 말한다 :
failover:(tcp://soamsg01:61616,tcp://soamsg02:61616)
지금 메시지를 저장하는 과정이 "부분적으로"해결되었다. 메시지 삽입은 항상 각 ESB의 동일한 AMQ 노드에서 발생하지만 노드가 다운되면 삽입이 다른 ESB로 이동합니다.
주요 문제는 소비에 있습니다. 메시지 프로세서는 시작할 때 연결할 AMQ 노드 중 하나를 무작위로 선택합니다. 따라서 두 ESB 노드가 AMQ의 동일한 노드에 연결되어 대기열 중 하나가 읽히지 않을 수 있습니다.
해결 방법이 있습니까?
답변 해 주셔서 감사합니다. 이 경우 데이터베이스를 호스팅하는 실제 머신이 다운되면 모든 AMQ 노드가 실패하거나 데이터베이스가 모든 노드에 복제됩니까? – elias
SAN상의 호스트 kahadb 데이터 파일, Oracle RAC와 같은 활성/수동 또는 클러스터 데이터베이스 사용 ... –