2015-07-09 16 views
5

Dopo la configurazione bind-hostname e associare porte in application.conf, come specificato dal Akka FAQ, e portando il cluster, sto ricevendo un errore:Cluster Akka con bind-port e legare-hostname

[ERROR] [07/09/2015 19:54:24.132] [default-akka.remote.default-remote-dispatcher-20] 
[akka.tcp://[email protected]:2552/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fdefault%4054.175.105.30%3A2552-757/endpointWriter] 
dropping message [class akka.actor.ActorSelectionMessage] 
for non-local recipient[Actor[akka.tcp://[email protected]:32810/]] 
arriving at [akka.tcp://[email protected]:32810] 
inbound addresses are [akka.tcp://[email protected]:2552] 

Ciò che sembra dire è che l'attore ha ricevuto un messaggio destinato alla porta 32810 (la porta esterna) ma che lo ha lasciato perché la porta interna (2552) non corrisponde.

Le porzioni pertinenti del fascicolo sono:

hostname = 54.175.105.30 
    port = 32810 

    bind-hostname = 172.17.0.44 
    bind-port = 2552 

Ho provato questo su 2,4-M1, M2 2,4, e 2,4-SNAPSHOT, tutti con lo stesso effetto.

Qualcun altro l'ha già incontrato? Eventuali suggerimenti?

modifica: Questo sistema di attori è in esecuzione in ECS in contenitori di finestra mobile. La configurazione del contenitore finestra mobile è impostata per l'inoltro dall'intervallo temporaneo a 2552 sull'IP privato del contenitore. ECS sta mappando con successo il nome host: porta a bind-hosname: bind-port. L'attore sta funzionando e legandosi con successo al bind-hostname locale e alla bind-port, ma sta lasciando cadere messaggi ed emettendo l'errore sopra descritto.

+0

solo curioso, sei riuscito a impostare 'bind-hostname' sul bridge invece di' 0.0.0.0'? impostando il tipo di rete su 'host'? – Matt

risposta

0

Ciò era dovuto a una configurazione errata sulla mia estremità. Era rimasto un codice di codice che stava ignorando il bind-port.

+0

hai qualche possibilità di condividere la tua metodologia? Sto cercando di utilizzare l'individuazione dei servizi out-of-the-box da Amazon DNS (vedi post di blog) che associa i record SRV ai servizi. – Matt

6

bind-* Le impostazioni di configurazione sono pensate per essere utilizzate in situazioni in cui i nodi Akka vengono avviati dietro NAT (o nei contenitori docker). Hai configurato la conversione degli indirizzi da hostname: port a bind-hostname: bind-port?

Nella configurazione particolare, quando si fa

 
ctx.actorSelection("akka.tcp://[email protected]:32810/user/actor") ! "Hi" 

allora qualcuno a 54.175.105.30 dovrebbe essere in ascolto per la porta TCP 32810 e port forwarding per 172.17.0.44:2552. Il sistema dell'attore dovrebbe essere in esecuzione con la configurazione fornita allo 172.17.0.44:2552. È questo il caso?

Inoltre, è necessario configurarlo per ogni nodo che si trova dietro un NAT, poiché le connessioni tra Actor Systems sono peer to peer.

+0

Se si guarda il messaggio di errore, la cosa strana sembra essere questa combinazione di indirizzo/porta: '54.175.105.30: 2552' che combina il' hostname' con 'bind-port'. Come sarebbe successo? – jrudolph

+0

Sì, in questo caso stiamo utilizzando la finestra mobile su ECS e la configurazione dinamica di application.conf utilizzando l'introspezione AWS/ECS. Gli indirizzi IP e le porte sono corretti e le porte vengono inoltrate dalla finestra mobile dall'intervallo temporaneo (32810 in questo caso) alla porta del contenitore (2552 in questo caso). Ogni contenitore finestra mobile che inizia in ECS esegue lo script di configurazione introspection/application.conf per configurarsi e popolarne i semi. – babbitt

+0

@jrudolph: questa è la mia domanda. Sembra che l'attore stia cercando i messaggi che arrivano sul suo bind-hostname: port, quando ha bisogno di cercare il suo bind-hostname: bind-port. – babbitt