
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 --force
No 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 --force
opción destroy-machine
está 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 --force
tambié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"