2016-11-18 14 views
0

다른 노드가 리더 또는 팔로워가 될 수있는 분산 시스템을 구축했습니다. 대부분의 사용 사례에서 리더와 팔로어가 하나만 있습니다. 리더는 일반적으로 서버에서 단일 서버이며, 추종자는 다른 서버 (동일한 JVM에서 일부 서버)에서 실행 중입니다.리더/팔로어 관계에 대한 최상의 JGroup 스택 구성

팔로워 노드는 서로 메시지를 보낼 필요가 없으며 리더 노드와 만 통신합니다. 현재 tcpgossip 프로토콜을 사용하여 클러스터 구성원을 검색합니다. 내 GossipRouter는 리더 노드와 동일한 JVM에서 실행됩니다. 실제로 꽤 잘 작동합니다. 클러스터가 충분히 안정적으로 보입니다.

tcpgossip 프로토콜을 이해한다면 각 노드는 GossipRouter에 도달하여 정보를 가져옵니다. 따라서 필자의 경우 모든 팔로워 노드는 리더 노드가 실행되는 서버에 연결됩니다.

경고 : 스레드 = TransferQueueBundler, MyCluster라는, ROCKET-21632 금 11월 18일 중부 유럽 표준시 10시 22분 11초 2016 그러나 나는 추종자 노드 중 하나를 끌 때, 나는 다른 추종자에서 경고 메시지를 볼 수있는 상태 노드 org.jgroups.protocols.BaseBundler sendSingleMessage JGRP000029 : ROCKET-21632 : zeus-10187 (102 바이트)로 메시지 전송 실패 : java.net.SocketTimeoutException : 연결 시간 초과, 헤더 : VERIFY_SUSPECT : [VERIFY_SUSPECT : ARE_YOU_DEAD], TP : [ CLUSTER_NAME = MyCluster라는]

WARNING : 스레드 = TransferQueueBundler, MyCluster라는, 로켓 금 십일 21,632 18 2,016 중부 유럽 표준시 10시 21분 19초 org.jgroups.protocols.TP sendToMembers JGRP000034 : ROCKET-21632 : 실패 센 로 java.net.SocketTimeoutException : 제우스-10187에 땡 메시지가 ROCKET-21632zeus-10187 두 제자가

시간 초과 연결합니다. 나는 추종자들이 GossipRouter가 사용 되었기 때문에 서로 이야기하지 않을 것으로 예상되었지만, 사실이 아닌 것으로 보인다.

일부 노드가 절대로 서로 이야기하지 않는 클러스터를 만드는 방법이 있습니까?

답변

0

TCPGOSSIP는 검색 메커니즘으로 만 사용됩니다. 따라서 별도의 노드에서 GossipRouter를 실행하고 모든 노드를 시작한 다음 GossipRouter를 종료하면 모든 것이 계속 작동합니다 (병합 제외). 발견 만 (따라서 신입 회원 입회) 작동하지 않습니다.

TCPGOSSIP을 사용하더라도 회원들은 서로 직접 대화를 나눕니다. 원하지 않으면 TUNNEL을 사용하여 TCP를 전송 장치로 교체하십시오. 모든 회원은 모든 메시지를 GossipRouter에 보내고, 다른 회원에게 전달합니다. 단점은 리더 노드가 많은 트래픽을 얻는다는 것입니다. 대조적으로, 서로 이야기하는 멤버는 트래픽 모드를 클러스터 전체에 고르게 분산시킵니다.

TUNNEL : TCPGOSSIP을 사용하려면 내결함성을 위해 여러 GossipRouter를 사용하는 것이 좋습니다.

+0

빠른 답변 감사합니다. 나는 그것에게 시도를 줄 것이고, 그것이 어떻게 가는지 당신에게 알릴 것이다. 감사! – Azeq