Je faisais quelques essais avec un charme de test sur Juju sur AWS et j'ai réussi à faire en sorte que mon service soit complètement bloqué. juju service retourne ce qui suit.
environment: Amazon
machines:
"0":
agent-state: started
agent-version: 1.16.5
dns-name: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
instance-id: i-7c2f4c52
instance-state: running
series: precise
hardware: Arch=AMD64 cpu-cores=1 cpu-power=100 mem=1740M root-disk=8192M
"5":
agent-state: down
agent-state-info: (started)
agent-version: 1.16.5
instance-id: i-9cb9cbb2
instance-state: missing
series: precise
hardware: Arch=AMD64 cpu-cores=1 cpu-power=100 mem=1740M root-disk=8192M
services:
metest:
charm: local:precise/metest-0
exposed: false
life: dying
relations:
cluster:
- metest
units:
metest/0:
agent-state: down
agent-state-info: (started)
agent-version: 1.16.5
life: dying
machine: "5"
open-ports:
- 80/tcp
public-address: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
(J'ai supprimé les noms DNS au cas où!). L'ID d'instance de la machine 5 a été arrêté conformément à la console de gestion AWS. Aucun des éléments "destroy-unit metest/0", "destroy-service metest" et "destroy-machine 5" n'efface le problème et je ne peux pas redéployer le service dans cet état. La résolution de Juju semble n'avoir aucun effet non plus.
En cherchant sur Google, la seule solution que je puisse trouver est de balayer complètement mon environnement - ce qui n’est pas une très bonne option. Est-il possible de résoudre le problème autrement? Quelle est la méthode générale pour déboguer ce type de problème?
La cause première du problème: nous utilisons Chef pour la majeure partie de notre orchestration et nous avons constaté qu'une défaillance occasionnelle entre Chef et l'API AWS laissait des instances orphelines autour. Comme toutes les instances que nous lançons à partir de Chef sont étiquetées avec un nom et que ces instances orphelines sont sans nom, pour éviter de donner de l'argent à Amazon, nous avons ajouté du code à nos plugins couteau pour mettre fin aux instances sans nom. Je suis sûr que vous pouvez voir où cela se passe ...
Existe-t-il un moyen de nettoyer les machines une fois qu'elles sont dans cet état (--force ne aide pas) - et j'aimerais également savoir s'il est prévu de permettre aux instances d'être nommées afin qu'elles soient identifiables dans la gestion EC2 console (quelque chose comme juju-- serait idéal)?
Choses que j'ai essayées:
destroy-machine --force
ne semble pas nettoyer les choses. Je ne reçois pas d'erreur, mais il semble que rien ne change dans le statut.Tu pourrais essayer:
juju destroy-machine --force 5
L'option --force
de destroy-machine
est disponible depuis le 1.16.5 et doit supprimer la machine bloquée et toutes les unités qu'elle contient. Ensuite, vous devriez pouvoir redéployer votre service, mais s'il indique "le service existe déjà", il vous suffit de le déployer sous un nom différent.
Si tout échoue, juju destroy-environment -e <name>
est toujours une option. Je ne suis pas sûr que cela supporte --force
également dans 1.16.5.
J'ai eu le même genre de situation et j'ai publié " juju résolu " (ou en cas de service, vous pouvez donner "juju résolu". Cela a résolu le problème .
Veuillez consulter la section "Mises en garde" de "Déménagement dans Juju"