¿Cómo limpio máquinas agonizantes?

¿Cómo limpio máquinas agonizantes?

Estaba experimentando un poco con un método de prueba en Juju en AWS y logré que mi servicio quedara completamente colgado. El servicio juju devuelve lo siguiente.

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

(¡He eliminado los nombres DNS por si acaso!). El ID de instancia para la máquina 5 se finalizó según la consola de administración de AWS. Ninguno de "destroy-unit metest/0", "destroy-service metest" y "destroy-machine 5" solucionan el problema y no puedo volver a implementar el servicio en este estado. La resolución juju tampoco parece tener efecto.

Al buscar en Google el problema, la única solución que puedo encontrar es destruir completamente mi entorno, lo cual no es una gran opción. ¿Hay alguna manera de solucionar el problema? ¿Cuál es el método general para depurar este tipo de problema?

La causa raíz del problema: utilizamos Chef para la mayor parte de nuestra orquestación y descubrimos que fallas ocasionales entre Chef y la API de AWS dejan instancias huérfanas. Dado que todas las instancias que lanzamos desde Chef están etiquetadas con un nombre, y estas instancias huérfanas no tienen nombre, para evitar darle dinero a Amazon innecesariamente agregamos código a nuestros complementos de cuchillos para terminar instancias sin nombre. Estoy seguro de que puedes ver hacia dónde va esto...

¿Hay alguna manera de limpiar las máquinas una vez que están en este estado (--force no ayuda)? Y también me gustaría saber si hay algún plan para permitir que se nombren las instancias para que sean identificables en la administración de EC2. consola (algo como juju, sería ideal)?

Cosas que he probado:

  • destroy-machine --forceNo parece limpiar las cosas. No recibo ningún error, pero parece que nada cambió en el estado.

Respuesta1

Tu podrías intentar:

juju destroy-machine --force 5

La --forceopción destroy-machineestá disponible desde 1.16.5 y debe eliminar la máquina colgada y todas las unidades que contiene. Entonces debería poder volver a implementar su servicio, pero si dice "el servicio ya existe", simplemente impleméntelo con un nombre diferente.

Si todo lo demás falla, juju destroy-environment -e <name>siempre hay una opción. No estoy seguro de si --forcetambién fue compatible con 1.16.5.

Respuesta2

Tuve una situación similar y emití "juju resuelto" (o en caso de servicio, puede decir "juju resuelto". Eso resolvió el problema.

Eche un vistazo a la sección "Advertencias" de"Remoción dentro de Juju"

información relacionada