Fehler auf physischen Maschinen simulieren
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →
Dieses Dokument beschreibt, wie Sie PhysicalMachineChaos-Experimente (Chaos auf physischen Maschinen) in Chaos Mesh erstellen, um Fehler in Netzwerk, Festplatte, CPU-Last, JVM, Zeit und anderen Bereichen auf physischen oder virtuellen Maschinen zu simulieren.
Einführung in PhysicalMachineChaos
Mit PhysicalMachineChaos können Sie Fehler in Netzwerk, Festplatte, CPU-Last, JVM, Zeit und anderen Bereichen auf physischen oder virtuellen Maschinen simulieren. Bevor Sie PhysicalMachineChaos von Chaos Mesh verwenden, müssen Sie Chaosd auf Ihren physischen oder virtuellen Maschinen bereitstellen. Die Versionszuordnung zwischen Chaos Mesh und Chaosd ist wie folgt:
| Chaos Mesh version | Chaosd version |
|---|---|
| v2.1.x | v1.1.x |
| v2.2.x | v1.2.x |
Chaosd-Server bereitstellen
Bevor Sie mit Chaos Mesh PhysicalMachineChaos-Experimente erstellen, müssen Sie Chaosd im Servermodus auf allen physischen oder virtuellen Maschinen bereitstellen, die Fehlerinjektionen erhalten sollen. Nach der Bereitstellung von Chaosd führen Sie den Chaosd-Server wie folgt aus:
-
Chaosd bereitstellen, TLS-Zertifikat generieren und
PhysicalMachineerstellen:- Informationen zur Bereitstellung von Chaosd finden Sie unter Chaosd herunterladen und bereitstellen.
- Nach der Bereitstellung von Chaosd müssen Sie bevor Sie den Chaosd-Server starten ein TLS-Zertifikat generieren und eine
PhysicalMachinein Kubernetes-Clustern erstellen. Weitere Informationen zum Generieren von TLS-Zertifikaten finden Sie unter TLS-Zertifikate für Chaosd generieren.
-
Chaosd-Server starten:
-
Nachdem Sie das TLS-Zertifikat über Chaosctl generiert haben, führen Sie folgenden Befehl aus, um Chaosd im Servermodus zu starten:
chaosd server --https-port 31768 --CA=/etc/chaosd/pki/ca.crt --cert=/etc/chaosd/pki/chaosd.crt --key=/etc/chaosd/pki/chaosd.keyHinweisDie TLS-Zertifikate werden im Standardausgabeverzeichnis von Chaosctl gespeichert. Falls Sie beim Generieren der Zertifikate manuell ein anderes Verzeichnis angegeben haben, ersetzen Sie das Verzeichnis in der Befehlszeile entsprechend.
-
-
Falls das TLS-Zertifikat nicht über Chaosctl generiert wurde, können Sie folgenden Befehl ausführen, um Chaosd im Servermodus zu starten. Aus Sicherheitsgründen für Ihre Cluster wird dies jedoch nicht empfohlen:
chaosd server --port 31767
Experimente mit Chaos Dashboard erstellen
-
Öffnen Sie Chaos Dashboard und klicken Sie auf der Seite auf NEW EXPERIMENT, um ein neues Experiment zu erstellen:

Neues Experiment erstellen -
Klicken Sie unter Experiment Type auf PHYSIC und wählen Sie einen spezifischen Experimenttyp, z.B. NETWORK ATTACK. Wählen Sie dann ein spezifisches Verhalten und füllen Sie die entsprechenden Konfigurationen aus:

PhysicalMachineChaos-Experiment -
Geben Sie die Experimentinformationen ein, um den Umfang und die geplante Dauer des Experiments festzulegen:

PhysicalMachineChaos-Experimentinformationen -
Experiment absenden.
Experimente mit einer YAML-Datei erstellen
-
Schreiben Sie die Experimentkonfigurationen in die Datei "physicalmachine.yaml". Beispiel:
apiVersion: chaos-mesh.org/v1alpha1
kind: PhysicalMachineChaos
metadata:
name: physical-network-delay
namespace: chaos-mesh
spec:
action: network-delay
mode: one
selector:
namespaces:
- default
labelSelectors:
'arch': 'amd64'
network-delay:
device: ens33
ip-address: 140.82.112.3
latency: 1000ms
duration: '10m'Die obigen Experimentkonfigurationen senden HTTP-Anfragen an den Chaosd-Dienst in den angegebenen physischen oder virtuellen Maschinen, um Netzwerklatenzexperimente auszulösen.
-
Erstellen Sie das Experiment mit
kubectl. Der Befehl lautet:kubectl apply -f physicalmachine.yaml
Konfigurationsbeschreibung
| Configuration item | Type | Description | Default value | Required | Example |
|---|---|---|---|---|---|
action | string | Defines the actions of physical machines faults, optional values are as follows: stress-cpu, stress-mem, disk-read-payload, disk-write-payload, disk-fill, network-corrupt, network-duplicate, network-loss, network-delay, network-partition, network-dns, process, jvm-exception, jvm-gc, jvm-latency, jvm-return, jvm-stress, jvm-rule-data, clock | None | Yes | stress-cpu |
address | string array | Selects the address of Chaosd service to inject faults, only one of address or selector could be specified | [] | Yes | ["192.168.0.10:31767"] |
selector | struct | Specifies the target PhysicalMachine. For details, refer to Define the experiment scope, only one of address or selector could be specified | None | No | |
mode | string | Specifies the mode of the experiment. The mode options include one (selecting a random PhysicalMachine), all (selecting all eligible PhysicalMachines), fixed (selecting a specified number of eligible PhysicalMachines), fixed-percent (selecting a specified percentage of PhysicalMachines from the eligible PhysicalMachines), and random-max-percent (selecting the maximum percentage of PhysicalMachines from the eligible PhysicalMachines). | None | Yes | one |
value | string | Provides a parameter for the mode configuration, depending on mode. For example, when mode is set to fixed-percent, value specifies the percentage of PhysicalMachines. | None | No | 1 |
duration | string | Specifies the duration of experiments | None | Yes | 30s |
Jede Fehleraktion verfügt über eigene spezifische Konfigurationen. Im folgenden Abschnitt werden verschiedene Fehlertypen und ihre entsprechenden Konfigurationsmethoden vorgestellt.
CPU-Auslastung
Um ein Szenario mit CPU-Auslastung zu simulieren, setzen Sie die Aktion auf "stress-cpu". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von CPU-Auslastung.
Speicherauslastung
Um ein Szenario mit Speicherauslastung zu simulieren, setzen Sie die Aktion auf "stress-mem". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von Speicherauslastung.
Festplatten-Leselast
Um ein Szenario mit Festplatten-Leselast zu simulieren, setzen Sie die Aktion auf "disk-read-payload". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von Festplatten-Leselast.
Festplatten-Schreiblast
Um ein Szenario mit Festplatten-Schreiblast zu simulieren, setzen Sie die Aktion auf "disk-write-payload". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von Festplatten-Schreiblast.
Festplattenfüllung
Um ein Szenario mit Festplattenfüllung zu simulieren, setzen Sie die Aktion auf "disk-fill". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von Festplattenfüllung.
Netzwerkdatenverfälschung
Um ein Szenario mit Netzwerkdatenverfälschung zu simulieren, setzen Sie die Aktion auf "network-corrupt". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von Netzwerkdatenverfälschung.
Netzwerklatenz
Um ein Szenario mit Netzwerklatenz zu simulieren, setzen Sie die Aktion auf "network-delay". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von Netzwerklatenz.
Netzwerkpaketduplizierung
Um ein Szenario mit Netzwerkpaketduplizierung zu simulieren, setzen Sie die Aktion auf "network-duplicate". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von Netzwerkpaketduplizierung.
Netzwerkpaketverlust
Um ein Szenario mit Netzwerkpaketverlust zu simulieren, setzen Sie die Aktion auf "network-loss". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von Netzwerkpaketverlust.
Netzwerkpartitionierung
Um ein Szenario mit Netzwerkpartitionierung zu simulieren, setzen Sie die Aktion auf "network-partition". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von Netzwerkpartitionierung.
DNS-Fehler
Um ein Szenario mit DNS-Fehlern zu simulieren, setzen Sie die Aktion auf "network-dns". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von DNS-Fehlern.
Prozessfehler
Um ein Szenario mit Prozessfehlern zu simulieren, setzen Sie die Aktion auf "process". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Simulation von Prozessfehlern.
Auslösen benutzerdefinierter Exceptions in JVM-Anwendungen
Um ein Szenario zu simulieren, in dem JVM-Anwendungen benutzerdefinierte Exceptions auslösen, setzen Sie die Aktion auf "jvm-exception". Die entsprechenden Konfigurationen finden Sie unter Parameter für das Auslösen benutzerdefinierter Exceptions.
Erhöhung der Methodenlatenz in JVM-Anwendungen
Um ein Szenario zu simulieren, in dem JVM-Anwendungen die Methodenlatenz erhöhen, setzen Sie die Aktion auf "jvm-latency". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Erhöhung der Methodenlatenz.
Änderung von Methodenrückgabewerten in JVM-Anwendungen
Um ein Szenario zu simulieren, in dem JVM-Anwendungen Rückgabewerte von Methoden ändern, setzen Sie die Aktion auf "jvm-return". Die entsprechenden Konfigurationen finden Sie unter Parameter für die Änderung von Methodenrückgabewerten.
Auslösen der Garbage Collection in JVM-Anwendungen
Um ein Szenario zu simulieren, in dem JVM-Anwendungen die Garbage Collection auslösen, setzen Sie die Aktion auf "jvm-gc". Die entsprechenden Konfigurationen finden Sie unter Parameter für das Auslösen der Garbage Collection.
Auslösen von Fehlern mittels Byteman-Konfigurationsdateien für JVM-Anwendungen
Um ein Szenario zu simulieren, in dem JVM-Anwendungen Fehler mithilfe von Byteman-Konfigurationsdateien auslösen, müssen Sie die Aktion auf "jvm-rule-data" setzen. Die entsprechenden Konfigurationen finden Sie unter Parameter zum Auslösen von Fehlern durch Setzen von Byteman-Konfigurationsdateien.
Zeitversatz
Um ein Szenario mit Zeitversatz zu simulieren, müssen Sie die Aktion auf "clock" setzen. Die entsprechenden Konfigurationen finden Sie unter Parameter zur Simulation von Zeitversatz.