2012-05-04 4 views
3

작은 검색 응용 프로그램을 구현하기 위해 Akka 리모팅을 사용하여 일부 배포 문제가 발생합니다.Akka로 여러 원격 서버 시작

ActorSystem을 로컬 클러스터 컴퓨터 집합에 배치하여 작업자로 사용하려고하지만이 작업을 수행하기 위해 application.conf에 무엇을 넣을 지 혼란 스럽습니다. 예를 들어 다음을 사용할 수 있습니다.

akka.remote { 
    transport = "akka.remote.netty.NettyRemoteTransport" 
    netty { 
    hostname = "0.0.0.0" 
    port = 2552 
    } 
} 

각 작업자는 시작할 때 ActorSystem을 실행하기 만합니다.

내 작업자 기계가 시작할 때 자신의 주소로 결합 할 수 있지만, 그들은 메시지를들을 거부 :

beaker-24: [ERROR] ... dropping message DaemonMsgWatch for non-local recipient akka://[email protected]:2552/remote at akka://[email protected]:2552

내가 이것을 위해 찾은 문서는 지금까지 단지 배치에 대해 설명 내 localhost에, 정말 유용하지 :). 각 호스트마다 별도의 구성을 생성하지 않고이 작업을 수행 할 수있는 방법이 있기를 희망합니다.


업데이트 : 호스트 이름으로 빈 문자열을 사용하여이

일반 IP 주소를 통해 호스트에 문의 할 수 있습니다. 호스트 이름 자체를 사용한 주소 지정은 현재 작동하지 않습니다.

+0

버그 일 수 있습니다. 티켓을여십시오! –

+0

감사합니다. 예상되는 행동을 성문화하고 무언가를 제출하려고 노력할 것입니다. 그 동안 주소로 작품 빈 문자열을 사용하여 발견 (내가 좀 더 철저하게 구성 참조를 통해 읽었어야!) – rjpower

답변

1

"0.0.0.0"을 호스트 이름으로 설정하면 전송할 합법적 인 IP가 아니기 때문에 현재 기본적으로 원격을 사용하지 않도록 설정됩니다. 배경 : 액터 참조는 로컬 시스템을 떠날 때 주소 부분에 구성된 IP (또는 호스트 이름)를 가져옵니다.이 주소는 다른 시스템이 메시지를 다시 보내는 "포인터 홈"입니다.

시스템이 다른 주소 here에 대한 응답을받을 수 있도록하는 Scott의 노력이 있었지만, 아직 포함되지 않았습니다. 우리는이 문제에 대한 다른 해결책을 선택할 것입니다.

+0

고마워요 - 난 내 사건에 대한 솔루션으로 끝났다 - 내가 호스트 필드를 비워두면, 그것 "모든"주소에 바인딩되지만 IP 주소로 호스트에 계속 액세스 할 수 있습니다 (불행히도 호스트는 호스트 이름을 유효한 수신자 주소로 인식하지 못합니다). 그래도 작동합니다! – rjpower