죽어가는 상태의 기계를 어떻게 청소합니까?

죽어가는 상태의 기계를 어떻게 청소합니까?

저는 AWS에서 Juju에 대한 테스트 참을 사용하여 몇 가지 실험을 하고 있었는데 서비스가 완전히 정지된 상태가 되었습니다. 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 이름을 제거했습니다!) AWS 관리 콘솔에 따라 머신 5의 인스턴스 ID가 종료되었습니다. "destroy-unit metest/0", "destroy-service metest" 및 "destroy-machine 5" 중 어느 것도 문제를 해결하지 못하며 이 상태에서는 서비스를 재배포할 수 없습니다. 주주의 결심도 효과가 없는 것 같습니다.

문제를 인터넷 검색해 보면 내가 찾을 수 있는 유일한 해결책은 내 환경을 완전히 날려버리는 것인데 이는 좋은 선택이 아닙니다. 그렇지 않으면 문제를 해결할 수 있는 방법이 있습니까? 이런 종류의 문제를 디버깅하는 일반적인 방법은 무엇입니까?

문제의 근본 원인: 우리는 대부분의 오케스트레이션에 Chef를 사용하며 Chef와 AWS API 사이에 가끔 오류가 발생하면 고립된 인스턴스가 남는다는 사실을 발견했습니다. Chef에서 시작하는 모든 인스턴스에는 이름이 태그되어 있고 이러한 고아 인스턴스에는 이름이 없으므로 Amazon에 불필요하게 돈을 주는 것을 피하기 위해 이름 없는 인스턴스를 종료하는 칼 플러그인에 코드를 추가했습니다. 이것이 어디로 가는지 알 수 있을 거라 확신합니다...

이 상태에 있는 머신을 정리할 수 있는 방법이 있습니까(--force는 도움이 되지 않습니다). 그리고 EC2 관리에서 식별할 수 있도록 인스턴스 이름을 지정할 수 있는 계획이 있는지도 알고 싶습니다. 콘솔(juju 같은 것이 이상적이겠죠)?

내가 시도한 것들:

  • destroy-machine --force일이 정리되지 않는 것 같습니다. 오류는 발생하지 않지만 상태에는 아무런 변화가 없는 것처럼 보입니다.

답변1

다음을 시도해 볼 수 있습니다.

juju destroy-machine --force 5

옵션 --forcedestroy-machine1.16.5부터 사용할 수 있으며 정지된 시스템과 그 위에 있는 모든 장치를 제거해야 합니다. 그러면 서비스를 재배포할 수 있지만 "서비스가 이미 존재합니다"라고 표시되면 다른 이름으로 배포하면 됩니다.

다른 모든 방법이 실패하면 juju destroy-environment -e <name>항상 옵션입니다. --force1.16.5에서도 지원되었는지는 확실하지 않습니다 .

답변2

비슷한 상황이 있어서 "주주는 해결했다"(또는 서비스의 경우 "juju 해결됨"을 주실 수 있습니다. 그러면 문제가 해결되었습니다.

"주의 사항"섹션을 살펴보십시오."주주 내 철거"

관련 정보