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 --force
nã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 --force
opção destroy-machine
está 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 --force
també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"