2012-05-04 4 views
3

Je rencontre des problèmes de déploiement en utilisant Akka Remoting pour implémenter une petite application de recherche. Je veux déployer mon ActorSystem sur un ensemble de machines de cluster locales pour les utiliser en tant que travailleurs, mais je suis un peu confus pour ce qu'il faut mettre dans mon application.conf pour que cela se produise. Par exemple, je peux utiliser:Démarrage de plusieurs serveurs distants avec Akka

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

Chaque travailleur exécute simplement l'ActorSystem au démarrage.

Cela permet à mes machines de travailleurs de se lier à leur adresse quand ils commencent, mais ils refusent d'écouter les messages:

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

La documentation que j'ai trouvé pour cette jusqu'à présent ne traite que le déploiement sur mon localhost, ce qui n'est pas si utile :). J'espère qu'il y a un moyen de le faire sans générer une configuration séparée pour chaque hôte.


Mise à jour:

En utilisant une chaîne vide comme nom d'hôte permet de contacter l'hôte via l'adresse IP normale. L'adressage utilisant le nom d'hôte lui-même ne fonctionne pas pour le moment.

+0

Peut-être qu'un bug, s'il vous plaît ouvrir un ticket! –

+0

Merci, je vais essayer de codifier le comportement attendu et de soumettre quelque chose. J'ai trouvé en utilisant une chaîne vide comme une adresse fonctionne entre-temps (j'aurais dû lire la référence de configuration un peu plus complètement!) – rjpower

Répondre

1

Si vous définissez «0.0.0.0» comme nom d'hôte, la fonction de communication à distance sera essentiellement désactivée, car il ne s'agit pas d'une adresse IP légale à envoyer. Contexte: les références d'acteur obtiennent l'adresse IP configurée (ou le nom d'hôte) insérée dans leur partie d'adresse lorsqu'elles quittent le système local, et c'est exactement leur «pointeur» pour que d'autres systèmes envoient des messages.

Scott a fait un effort pour permettre à un système de recevoir des réponses à une adresse différente here, mais cela n'est pas encore inclus - et nous pourrions bien choisir une solution différente à ce problème.

+0

Merci - J'ai fini avec une solution pour mon cas - si je laisse le champ hôte vide, il se lie à l'adresse "any", mais je peux toujours accéder à l'hôte par son adresse IP (malheureusement, l'hôte ne reconnaît pas son nom d'hôte comme une adresse de récepteur valide). Encore, ça marche! – rjpower

Questions connexes