web-dev-qa-db-fra.com

Comment est-ce que je nettoie des machines mourantes?

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.
3
Mike Evans

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.

3
dimitern

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"

0
Tahir Rauf