내 응용 프로그램은 보통 두 개 이상의 노드가있는 erlang 클러스터에서 실행됩니다. 잘 동작하는 노드 들간에 (erlang : monitor_node를 사용하는) 능동적 인 모니터링이있다 - 나는 위로 향한 노드가 이제는 작동하지 않는다는 사실을 감지하고 그에 반응한다.다운 된 후 다시 시작하는 원격 erlang 노드를 모니터링하는 방법
그러나 노드가 다시 시작되어 다시 비즈니스로 돌아 오는 것을 어떻게 알 수 있습니까? 물론 주기적으로 노드가 백업 될 때까지 ping을 수행 할 수 있지만 단순히 놓친 방법이 더 있습니까? 프로세스 그룹이이를 달성하는 더 좋은 방법입니까? (추가 수정 됨)
내가 대답은 감독자의 선거와 같은 기술을 수행 할 생각은 내가 실종 된 사고 과정이다. 나는이 문제를 살펴보고이 질문을 완료로 표시 할 것입니다 ....
예 - 실제로 노드가 다시 시작될 때 수행하는 작업입니다. 실제로 모든 수퍼바이저 노드가 없으며 실제로 "버디"이고 노드는 시스템의 상태를 결정하기 위해 버디에 도달합니다 (그리고 아마도 그 상태를 복사 할 때) 시작될 것이다. –
그리고 명확해야 - 각 노드가 동일하므로 첫 번째 노드 인 경우 무엇을 할 것인가? 어떤 노드로도 rpc 할 수없고 메시지를 보낼 PID가 (물론) 없습니다. 하지만 단순히 다른 노드가 시작되어 그 노드에 연결될 때까지 기다릴 수는 있습니다 ... –
노드가 기본적으로 중앙 노드의 형태없이 분산되어있는 것 같습니다. 나는 정상적으로, 당신은 적어도 하나의 감독자 또는 적어도 일부는 '마스터'노드를 갖고 싶어한다고 가정합니다. 모든 노드가 자신의 보고서/메시지를 보낼 수 있다는 것, 즉 어떤 형태의 "노드 레지스트리". 어쩌면 당신은 더 많은 정보를 제공 할 필요가 있습니다. 이미 마스터가 없다면 각 노드가 마스터가되는 것을 컨벤션으로 생각할 수도 있다고 상상할 수 있습니다. 그것은 평등 요구 사항을 만족시킬 것입니다. – none