Как очистить машины, находящиеся в умирающем состоянии?

Как очистить машины, находящиеся в умирающем состоянии?

Я проводил эксперименты с тестовым заклинанием на 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". Это решило проблему.

Пожалуйста, ознакомьтесь с разделом «Предостережения»«Удаление в пределах Джуджу»

Связанный контент