Vous pouvez gérer le numéro 1 en utilisant des OTP applications distribuées capacité. Vous devez configurer le kernel
application comme suit :
config :kernel, :distributed, [
{:app1, 5_000, [:"node1@<x.x.x.x>", {:"node2@<x.x.x.y>", :"node3@<x.x.x.z>"}]},
{:app2, [:"node2@<x.x.x.y>", {:"node1@<x.x.x.x>", :"node3@<x.x.x.z>"}]},
...
]
config :kernel,
sync_nodes_mandatory: [:"node1@<x.x.x.x>", :"node2@<x.x.x.y>", ...],
sync_nodes_timeout: 5_000
Ce qui précède permettra de garantir que app1
est lancé le node1
et si node1
tombe en panne ou est indisponible, il essaiera l'un des nœuds de secours, node2
o node3
(l'ordre est indéfini). Il faudra également que cela se produise dans les 5 secondes. De même, app2
sera lancé le node2
ou, à défaut, l'une des sauvegardes, mais il n'y a pas de délai de démarrage.
Les deux autres paramètres du noyau exigent qu'avant le lancement de toute application, tous les nœuds de la liste soient connectés, et ce dans un délai de 5 secondes, faute de quoi le processus de démarrage échouera.
Tous ces paramètres peuvent être ajustés si nécessaire, en fonction des besoins de votre cluster. Ce n'est pas tout à fait la même chose que de déterminer automatiquement un nœud auquel assigner une application, mais cela permettra de s'assurer qu'elle ne fonctionne que sur un des nœuds.
Vous pouvez en savoir plus à ce sujet dans le manuel Erlang, dans la rubrique Applications distribuées document.
Ce qui précède répond également à votre demande pour le point 2, mais il s'agit moins de démarrer en fonction du nom du nœud, et plus de configurer les nœuds sur lesquels l'application est autorisée à s'exécuter, et elle le fera. Vous pouvez gérer cela vous-même, en utilisant included_applications
Mais pour cela, vous devez lancer les applications incluses dans l'arbre de supervision de l'application incluse. Selon la façon dont votre parapluie est configuré, cela peut signifier que vous devez créer une application "shell", qui est principalement responsable de la coordination du démarrage et de la configuration des applications incluses. Vous pouvez en savoir plus sur ces aquí