Comment puis-je installer sur Riak plusieurs noeuds distants en utilisant le chargement de code à chaud?
-
25-09-2019 - |
Question
J'ai appris Riak sur une seule machine et avoir accès à un groupe de noeuds Erlang (sur Ubuntu 9). L'utilisation de code à distance chargement comment puis-je installer Riak sur tous les noeuds distants?
Par exemple, imaginez que j'ai un groupe de noeuds Erlang. L'un des nœuds a Riak installé. Puis-je faire quelque chose comme nl (Riak) pour installer Riak sur les autres noeuds.
La solution
Depuis que nous avons ajouté Innostore et intégré un moteur Javascript Riak n'est plus une application pure Erlang. Cela signifie l'installation via le chargement de code à distance de Erlang ne fonctionnera pas. Si vous utilisez Riak sur un cluster homogène, vous devriez être en mesure de construire une version OTP via make rel ', copier la version à chaque machine du cluster, et apportez des modifications app.config et vm.args pour répondre.
Un serveur de démarrage serait théoriquement fonctionner, mais je ne connais personne en cours d'exécution Riak de cette façon. Si vous décidez de l'essayer nous (Basho) serait heureux de fournir une assistance via le Les utilisateurs de Riak-de liste d'envoi.
Autres conseils
La réponse courte est: vous ne pouvez pas
.
chargement de code à distance fonctionne sur le le module niveau (par opposition à l'application).
Riak est composé de plusieurs modules Erlang et nécessite des dépendances.
nl(riak)
charge essentiellement un module unique sur tous les noeuds connectés.
La longue réponse est: vous pouvez, mais ne pas le faire
.
En fait, vous pouvez recueillir la liste des modules associés à Riak, puis-charge à distance ces derniers et configurer Riak sur le fil. Le module application
peut aider.
Le problème avec cette approche est que si le nœud distant échoue ou redémarre, vous devrez transférer tous les modules à nouveau et répéter la configuration.
Si une sorte de « chargement à distance » doit participer, vous devez installer Riak quelque part dans $ERL_LIBS
sur la machine distante, de sorte que le processus de charge peut être initiée par rpc:call/4
.
AFAIK, pour qu'il y ait le module de erl_boot_server. Je ne l'ai jamais utilisé (ou essayé), mais il semble que est ce que vous cherchez: http://erldocs.com/R13B03/kernel/erl_boot_server.html? recherche = ERL & i = 0