Erlang에서 종료 된 노드의 탐지는 어떻게 작동합니까?Erlang에서 Node Liveness의 제어 기능에 영향을 미치는 Net_TickTime은 어떻게됩니까?

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

문제

i net_ticktime 값을 600 초로 설정합니다.

net_kernel:set_net_ticktime(600)
.

net_ticktime에 대한 erlang 설명서= 틱 뮤 시간 :

net_kernel 틱 시간을 지정합니다. 찌름은 초 단위로 주어집니다. 모든 팀계 / 4 초, 모든 연결된 노드는 (노드에 기록 된 경우) 노드가 아래로 간주되는 마지막 4 개의 틱 시간 내의 마지막 4 개의 틱 시간 내에 다른 노드에서 수신되지 않은 경우에도 연결되지 않은 모든 노드가 선택됩니다. 이렇게하면 하드웨어 오류와 같은 이유로 응답하지 않는 노드가 다운 된 것으로 간주됩니다.

응답하지 않는 노드가 검출되는 시간 t :

MinT < T < MaxT where:

MinT = TickTime - TickTime / 4
MaxT = TickTime + TickTime / 4
.

틱 턴 시간은 기본적으로 60 (초)입니다. 따라서 45 <75 초.

참고 : 일반적으로 종단 노드가 즉시 감지됩니다.

내 문제 : 내 틱 타임은 600 (초)입니다. 따라서 450 (7.5 분) <750 초 (12.5 분). 일부 노드가 실패 할 때 erlang의 모든 분산 노드에 net_ticktime을 erlang의 모든 분산 노드로 설정하면 (예 : erlang 쉘을 닫을 때) 다른 노드는 즉시 찌르기 시간에 따라 메시지를 가져 오지 않습니다.

일반적으로 종단 노드는 즉시 검출되지만 Distributed Erlang에서 노드 종료를위한 즉각적인 응답 원리의 설명 (Erlang 문서 또는 Erlang eBook 또는 다른 erlang eBook 또는 다른 erlang 기반 소스)의 설명을 찾을 수 없었습니다. 분산 환경의 노드가 net_ticktime보다 작은 간격으로 주기적으로 퍼지거나 종료 노드가 종료되기 전에 다른 노드에 몇 가지 종류의 메시지를 보냅니다. 종료 노드 가이 메시지를 보낼 수없고 활기를 조사하기 위해 종료 노드 가이 메시지를 보낼 수 없을 때 메시지를 보내는 경우 시나리오가 있습니까?

또한 모든 노드가 클러스터의 모든 노드에 링크를 유지할 때 모든 노드가 링크를 유지할 때 100 개의 노드보다 큰 클러스터에 대해 분산 된 erlang이 매우 확장 가능하지 않은 erlang 문서에서 설명합니다. 클러스터의 크기가 증가함으로써 노드 (핑음, 종료, 종료 · 종료)의 생계를 조사하기위한 알고리즘은 무엇입니까?

도움이 되었습니까?

해결책

두 개의 erlang 노드가 연결되면 TCP 연결이 이루어집니다.유도하는 실패는 기본 OS가 연결을 닫으므로 다른 노드를 매우 빠르게 알리게합니다.

네트워크 틱은 네트워크 이벤트가 노드를 격리 할 때 발생할 수있는 것과 같이 실제로 트래픽을 전달하지 못하는 거리를 감지하는 네트워크 틱을 사용합니다.

감지 할 틱이 필요한 실패를 시뮬레이션하려면 방화벽을 사용하여 노드가 처음 핑핑 할 때 생성 된 연결의 트래픽을 차단합니다.

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