나는 Erlang을 처음 사용했다. 현재 우리는 xmpp 서비스에 ejabberd를 사용하고 있습니다. 최근에 일부 기능 문제에 대한 회비로 배포 된 erlange 프로그램을 작성했습니다. 두 대의 컴퓨터 사이에서 rpc : call을 실행해야합니다. erl 시뮬레이터에서 rpc : call을 성공적으로 수행 할 수 있습니다. 그러나 우리의 현재 시스템은 ejabberdctl을 사용하여 ejabberd 서비스를 시작했습니다. 확인하고 ejabberdctl 파일을 수정하려고합니다. 하지만 -setcookie를 성공적으로 추가 할 수는 없습니다.ejabberd 서비스를 실행하기 위해 ejabberdctl에 setcookie를 추가하거나 시작시 setcookie없이 다른 컴퓨터에 두 개의 노드를 연결하려면 어떻게해야합니까?
$KERNEL_OPTS \
-s ejabberd_ctl -extra $ERLANG_NODE $COMMAND"
생각이 파일이 어떤 하나의 이전을 참조하지만 돈 :
ejabberdctl의 코드 섹션
ctlexec()
{
CONN_NAME=$1; shift
[email protected]
$EXEC_CMD "$ERL \
$NAME ${CONN_NAME} \
-noinput \
-hidden \
-pa $EJABBERD_EBIN_PATH \
$KERNEL_OPTS \
-s ejabberd_ctl -extra $ERLANG_NODE $COMMAND"
}
마지막 두 라인으로 발생하는 문제입니다 어디에서 왔는지 알 수 없습니다. 누구나 어떻게이 erl 명령에 -setcookie abc를 추가 할 수 있는지 알고 있습니까? ejabberdctl 파일 또는 최악의 경우를 변경할 수 없으면 현재 시스템을 변경할 수 없습니다. 즉 ejabberd 시스템에 setcookie를 추가 할 수있는 기회가 없습니다. 새 노드를 기존 ejabberd 노드 (현재 시스템)에 어떻게 연결할 수 있습니까?
ejabberd가 먼저 시작한다고 가정합니다.
감사합니다. 마지막으로 ejabberctl 파일의 수정을 피하기 위해 두 대의 컴퓨터간에 공유 .erlang.cookie를 사용합니다. 또한 클러스터 섹션의 ejabberd 문서에서이 방법을 볼 수 있습니다. –