Wie bereinige ich Maschinen im sterbenden Zustand?

Wie bereinige ich Maschinen im sterbenden Zustand?

Ich habe mit einem Test-Charm auf Juju auf AWS experimentiert und es geschafft, meinen Dienst in einen völlig hängenden Zustand zu versetzen. Der Juju-Dienst gibt Folgendes zurück.

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

(Ich habe die DNS-Namen vorsichtshalber entfernt!). Die Instanz-ID für Maschine 5 wurde laut AWS-Verwaltungskonsole beendet. Keines von „destroy-unit metest/0“, „destroy-service metest“ und „destroy-machine 5“ behebt das Problem, und ich kann den Dienst in diesem Zustand nicht erneut bereitstellen. Juju Resolve scheint auch keine Wirkung zu haben.

Wenn ich das Problem google, ist die einzige Lösung, die ich finden kann, meine Umgebung komplett zu zerstören – was keine gute Option ist. Gibt es eine Möglichkeit, das Problem anderweitig zu beheben? Was ist die allgemeine Methode zum Debuggen dieser Art von Problemen?

Die Grundursache des Problems: Wir verwenden Chef für den Großteil unserer Orchestrierung und haben festgestellt, dass gelegentliche Fehler zwischen Chef und AWS API verwaiste Instanzen hinterlassen. Da alle Instanzen, die wir von Chef aus starten, mit einem Namen versehen sind und diese verwaisten Instanzen unbenannt sind, haben wir unseren Knife-Plugins Code hinzugefügt, um unbenannte Instanzen zu beenden, um Amazon nicht unnötig Geld zu geben. Sie können sich sicher vorstellen, worauf das hinausläuft ...

Gibt es eine Möglichkeit, Maschinen zu bereinigen, wenn sie sich einmal in diesem Zustand befinden (--force hilft nicht) – und ich würde auch gern wissen, ob es Pläne gibt, die Benennung von Instanzen zu ermöglichen, sodass sie in der EC2-Verwaltungskonsole identifizierbar sind (so etwas wie juju-- wäre ideal)?

Dinge, die ich versucht habe:

  • destroy-machine --forcescheint die Dinge nicht zu bereinigen. Ich erhalte keine Fehlermeldung, aber es scheint, als ob sich am Status nichts geändert hat.

Antwort1

Du könntest es versuchen:

juju destroy-machine --force 5

Die --forceOption destroy-machineist seit 1.16.5 verfügbar und sollte die hängengebliebene Maschine und alle Einheiten darauf entfernen. Dann sollten Sie Ihren Dienst erneut bereitstellen können, aber wenn die Meldung „Dienst existiert bereits“ erscheint, stellen Sie ihn einfach unter einem anderen Namen bereit.

Wenn alles andere fehlschlägt, juju destroy-environment -e <name>ist es immer eine Option. Ich bin nicht sicher, ob es --forcein 1.16.5 auch unterstützt wurde.

Antwort2

Ich hatte eine ähnliche Situation und ich habe "Juju gelöst" (oder im Servicefall können Sie „juju solved“ angeben. Damit war das Problem gelöst.

Bitte beachten Sie den Abschnitt „Vorbehalte“ von„Entfernung innerhalb von Juju“

verwandte Informationen