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