Como faço para limpar máquinas que estão morrendo?

Como faço para limpar máquinas que estão morrendo?

Eu estava fazendo algumas experiências com um feitiço de teste no Juju na AWS e consegui colocar meu serviço em um estado completamente travado. O serviço juju retorna o seguinte.

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

(Eu removi os nomes DNS por precaução!). O ID da instância da máquina 5 foi encerrado de acordo com o console de gerenciamento da AWS. Nenhum dos "destroy-unit metest/0", "destroy-service metest" e "destroy-machine 5" resolve o problema e não consigo reimplantar o serviço com ele neste estado. A resolução juju também parece não ter efeito.

Pesquisando o problema no Google, a única solução que consigo encontrar é destruir completamente meu ambiente - o que não é uma ótima opção. Existe alguma maneira de resolver o problema de outra forma? Qual é o método geral para depurar esse tipo de problema?

A causa raiz do problema: usamos o Chef para a maior parte de nossa orquestração e descobrimos que falhas ocasionais entre o Chef e a API da AWS deixam instâncias órfãs. Como todas as instâncias que lançamos do Chef são marcadas com um nome e essas instâncias órfãs não têm nome, para evitar dar dinheiro desnecessariamente à Amazon, adicionamos código aos nossos plug-ins de faca para encerrar instâncias sem nome. Tenho certeza que você pode ver onde isso vai dar...

Existe alguma maneira de limpar as máquinas quando elas estiverem neste estado (--force não ajuda) - e eu também gostaria de saber se há algum plano para permitir que as instâncias sejam nomeadas para que sejam identificáveis ​​no gerenciamento do EC2 console (algo como juju-- seria o ideal)?

Coisas que tentei:

  • destroy-machine --forcenão parece limpar as coisas. Não recebo nenhum erro, mas parece que nada mudou no status.

Responder1

Você poderia tentar:

juju destroy-machine --force 5

A --forceopção destroy-machineestá disponível desde 1.16.5 e deve remover a máquina suspensa e todas as unidades nela contidas. Então você poderá reimplantar seu serviço, mas se disser "o serviço já existe", basta implantá-lo com um nome diferente.

Se tudo mais falhar, juju destroy-environment -e <name>é sempre uma opção. Não tenho certeza se --forcetambém suportou em 1.16.5.

Responder2

Eu tive um tipo de situação semelhante e emiti "juju resolvido" (ou em caso de atendimento, pode dar "juju resolvido". Isso resolveu o problema.

Por favor, dê uma olhada na seção "Advertências" do"Remoção dentro de Juju"

informação relacionada