Я проводил эксперименты с тестовым заклинанием на Juju на AWS и умудрился полностью зависнуть. Служба juju возвращает следующее.
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
(На всякий случай я удалил имена DNS!). Экземпляр-id для машины 5 был остановлен в соответствии с консолью управления AWS. Ни один из "destroy-unit metest/0", "destroy-service metest" и "destroy-machine 5" не устраняет проблему, и я не могу повторно развернуть службу в этом состоянии. juju resolve, похоже, тоже не дает никакого эффекта.
Погуглив проблему, единственное решение, которое я могу найти, это полностью сдуть мою среду - что не очень хороший вариант. Есть ли способ устранить проблему иначе? Каков общий метод отладки такого рода проблем?
Основная причина проблемы: мы используем Chef для большей части нашей оркестровки и обнаружили, что случайные сбои между Chef и AWS API оставляют бесхозные экземпляры. Поскольку все экземпляры, которые мы запускаем из Chef, помечены именем, а эти бесхозные экземпляры не имеют имени, чтобы не тратить деньги Amazon напрасно, мы добавили код в наши плагины knife для завершения бесхозных экземпляров. Я уверен, вы понимаете, к чему это приводит...
Есть ли способ очистить машины, когда они находятся в таком состоянии (--force не помогает)? И я также хотел бы узнать, есть ли планы разрешить присваивать имена экземплярам, чтобы их можно было идентифицировать в консоли управления EC2 (что-то вроде juju-- было бы идеально)?
Что я пробовал:
destroy-machine --force
похоже, ничего не убирает. Я не получаю ошибку, но, похоже, в статусе ничего не изменилось.
решение1
Вы можете попробовать:
juju destroy-machine --force 5
Опция --force
доступна destroy-machine
с версии 1.16.5 и должна удалить зависшую машину и все ее подразделения. Затем вы сможете повторно развернуть свою службу, но если там написано «служба уже существует», просто разверните ее под другим именем.
Если все остальное не сработает, juju destroy-environment -e <name>
всегда есть вариант. Я не уверен, поддерживалось ли это --force
в 1.16.5.
решение2
У меня была похожая ситуация, и я выдал "джуджу решен" (или в случае обслуживания, вы можете сказать "juju resolve". Это решило проблему.
Пожалуйста, ознакомьтесь с разделом «Предостережения»«Удаление в пределах Джуджу»