Question

J'écris une application de recherche distribuée avec AKKA en utilisant une simple topologie de maître et de plusieurs travailleurs, dans le but de déployer un groupe interne de nœuds ou dans un cloud d'entreprise. (Lorsque AKKA 2.1 devient disponible, je vais examiner le support en clustering)

ma question: Quel est le moyen le plus simple / meilleur de déployer mon code (sous la forme d'un dossier contenant un microkernel Akka) sur chaque nœud, démarrez-le, laissez-le faire ce que c'est une chose, puis déchirer et répéter si nécessaire?

  • Le répertoire microkernel et l'exécutable sont identiques pour chaque nœud ouvrier et seulement quelques MB. Config contient l'adresse IP d'un maître qu'ils se connecteront à.
  • J'ai l'intention de démarrer manuellement le maître.
  • La résilience n'est pas une préoccupation car ce n'est pas une application critique d'entreprise, plutôt un privé Problème de recherche.
  • Aucune donnée importante n'est stockée localement aux travailleurs.
  • Une fois l'application terminée, je souhaite peut-être redéployer une application différente sans alléger les nœuds (par exemple, avoir raffiné le codeBase).

mise à jour: a découvert que les nœuds de Condor pour prendre en charge les travaux fonctionnant en mode de la machine entière. Cela devrait prendre en charge l'exécution du microkernel en tant que travail et il suffit de vous assurer que les travailleurs quittent correctement les travailleurs.

update 2: Quelqu'un a mentionné que le zooveeper pourrait être bien adapté à cela. Apprécierait les contributions de toute personne avec expérience.

Était-ce utile?

La solution

Voici quelques idées. Je n'ai pas d'expérience avec Akka, mais je sais sur la grille-computing et le déploiement.

  1. Utilisez un outil de grille existant, tel que http://www.gridgain.com (qui avoir une version gpl). Aussi, j'ai entendu parler de personnes qui construisent une grille avec http://www.hazelcast.com/

  2. Utilisez une nuage en boîte, comme la cellule, http://www.pistoncloud.com/press-relases/piston-cloud-launches-free-openstack-Distribution/ . Je suis sûr qu'il doit y avoir d'autres.

  3. La cellule gagne de la fonderie de nuages, je crois, mais vous pouvez regarder l'utiliser directement: https:// micro.cloudfoundry.com/ mais je ne sais pas comment cette version échoue.

  4. rouler votre propre système, installez-vous dans une image VM, puis la clonant sur vos autres nœuds.

  5. Quand il s'agit de rouler le vôtre, vous pouvez le faire comme suit, ce qui est très similaire à quelque chose que j'ai déjà développé et fonctionne bien.

    • Construisez votre application à l'aide de Maven, en utilisant les nouvelles bibliothèques que vous aimez.

    • poussez des fichiers binaires construits dans Sonatype Nexus.

    • Construisez un lanceur personnalisé, qui compte tenu des coordonnées Maven d'un module peut l'exécuter. My Laucher vérifie d'abord un repo de Maven local pour les pots, s'ils n'existent pas, il les télécharge de Nexus. Ensuite, il construit un plan de classe de tous les pots dans l'arbre de dépendance transitive. Ensuite, cela crée un nouveau chargeur de classe avec le nouveau classPath et les lanceurs la classe principale via le chargeur de classe.

    • Écrivez un service, à l'aide de Java-Service-Wrappe ou similaire, que lors du démarrage vérifie la version du code à exécuter en lisant des coordonnées Maven et le nom d'une classe principale à partir de la configuration. Config pourrait être un fichier sur le lecteur réseau, l'URL préconfigurée, voire zooveeper. Il transmet ensuite cela au lanceur qui télécharge et exécute le code.

    • Installez ce service sur de nombreuses machines, manuellement ou par clonage d'une machine virtuelle.

    • profit!

    Je ne mentionne pas AKKA Spécifiquement, car la plupart de votre problème semble être comment obtenir le code exécuté sur des nœuds mulipports.

    L'itinéraire personnalisé a bien fonctionné pour moi, mais je n'ai que quelques serveurs utilisant cela, et tout mon calcul de grille approprié est effectué dans la synapse de données. Mais je me demande si je devais recommencer si l'une de ces Paas open source serait une bonne ajustement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top