2014-05-10 3 views
0

나는 노드들이 메시지를 그들 사이에 전달할 수있게 해주는 단순한 분산 형 얼랭 시스템을 쓰고 있습니다. 그러나 일부 노드는 서로 연결하고 다른 노드는 거부합니다. Erlang 시작하기 나는 -name 플래그를 사용합니다.얼랑 노드가 연결에 실패했습니다.

erl -name [email protected] 

다음 다른 터미널에 잘 이야기 할 수

erl -name [email protected] 

이 두와 얼랑를 시작하지만 세 번째 터미널을 만들고 그 단지 나에게 메시지를 보낼 수있는 메시지를 보내려고해야 첫 번째 노드가 아니라 두 번째 노드. 심지어 net_adm:ping이 실패합니다.

해결 방법에 대한 의견이 있으십니까?

감사합니다.

답변

1

는 다른 컴퓨터에,

두 개의 노드가 통신하려면, 둘 다 , 살아 있어야하지만, 또한 비밀 쿠키 라는 원자에 포함 된 일부 정보를 공유해야합니다뿐만 아닙니다. 각 노드는 언제든지 단일 쿠키 값을 가지며 이며 동일한 값을 공유하는 노드가 통신 할 수 있습니다. 각 노드는 다음과 같이 명시적인 쿠키 값으로 시작된 일 수 있습니다. erl -sname foo -setcookie blah 시작시 값을 설정하지 않으면 Erlang 런타임 시스템이 .erlang 파일에 저장된 값을 선택합니다. 쿠키. 파일이 없으면 사용자의 계정 의 홈 디렉토리에 만들어집니다.

사용이

erl -name foo -setcookie blah 
1

당신이 바로 그 쿠키를 설정 필요가 없다.

인증에 따라 과 통신 할 수있는 노드가 결정됩니다. 다른 Erlang 노드의 네트워크에서는 가능한 가장 낮은 레벨의 시스템 인 에 내장되어 있습니다. 각 노드에는 Erlang 원자 인 자체 마법 쿠키가 있습니다.

노드가 다른 노드에 연결을 시도하면 마법 쿠키는 과 비교됩니다. 일치하지 않으면 연결된 노드가 연결을 거부합니다.

여기를 참조하십시오 http://www.erlang.org/doc/reference_manual/distributed.html#id85608

관련 문제