Aller au contenu principal
Version : Suivant

Simuler des pannes sur des machines physiques

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Ce document explique comment créer des expériences PhysicalMachineChaos (chaos sur machine physique) dans Chaos Mesh pour simuler des pannes réseau, disque, CPU, JVM, horloge et autres sur des machines physiques ou virtuelles.

Introduction à PhysicalMachineChaos

PhysicalMachineChaos permet de simuler des pannes réseau, disque, CPU, JVM, horloge et autres sur des machines physiques ou virtuelles. Avant d'utiliser PhysicalMachineChaos dans Chaos Mesh, vous devez déployer Chaosd sur vos machines physiques ou virtuelles. Le mapping de versions entre Chaos Mesh et Chaosd est le suivant :

Chaos Mesh versionChaosd version
v2.1.xv1.1.x
v2.2.xv1.2.x

Déployer le serveur Chaosd

Avant de créer des expériences PhysicalMachineChaos avec Chaos Mesh, déployez Chaosd en mode serveur sur toutes les machines physiques ou virtuelles devant subir des injections de pannes. Après le déploiement, exécutez le serveur Chaosd comme suit :

  1. Déployez Chaosd, générez un certificat TLS et créez PhysicalMachine :

    • Pour la méthode de déploiement de Chaosd, consultez Télécharger et déployer Chaosd.
    • Après avoir déployé Chaosd, avant de démarrer le serveur Chaosd, générez un certificat TLS et créez une ressource PhysicalMachine dans les clusters Kubernetes. Pour plus de détails sur la génération des certificats TLS, reportez-vous à Générer des certificats TLS pour Chaosd.
  2. Démarrez le serveur Chaosd :

    • Après avoir généré le certificat TLS via Chaosctl, exécutez la commande suivante pour démarrer Chaosd en mode serveur :

      chaosd server --https-port 31768 --CA=/etc/chaosd/pki/ca.crt --cert=/etc/chaosd/pki/chaosd.crt --key=/etc/chaosd/pki/chaosd.key
      note

      Les certificats TLS sont sauvegardés dans le répertoire de sortie par défaut de Chaosctl. Si vous avez spécifié manuellement un autre répertoire lors de la génération des certificats, remplacez le chemin dans la commande par celui correspondant.

  • Si le certificat TLS n'a pas été généré via Chaosctl, vous pouvez exécuter cette commande pour démarrer Chaosd en mode serveur. Toutefois, pour la sécurité de vos clusters, cette méthode est déconseillée.

    chaosd server --port 31767

Créer des expériences avec Chaos Dashboard

  1. Ouvrez Chaos Dashboard, puis cliquez sur NEW EXPERIMENT pour créer une nouvelle expérience :

    create a new experiment
    create a new experiment

  2. Cliquez sur PHYSIC dans Experiment Type, choisissez un type spécifique comme NETWORK ATTACK. Sélectionnez ensuite un comportement et renseignez les configurations correspondantes :

    PhysicalMachineChaos experiment
    PhysicalMachineChaos experiment

  3. Renseignez les informations de l'expérience pour spécifier sa portée et sa durée prévue :

    PhysicalMachineChaos experiment information
    PhysicalMachineChaos experiment information

  4. Soumettez l'expérience.

Créer des expériences via un fichier YAML

  1. Écrivez les configurations expérimentales dans un fichier "physicalmachine.yaml". Exemple :

    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'

    Cette configuration envoie des requêtes HTTP au service Chaosd sur les machines physiques ou virtuelles spécifiées pour déclencher des expériences de latence réseau.

  2. Créez l'expérience avec kubectl via la commande :

    kubectl apply -f physicalmachine.yaml

Description des configurations

Configuration itemTypeDescriptionDefault valueRequiredExample
actionstringDefines 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, clockNoneYesstress-cpu
addressstring arraySelects the address of Chaosd service to inject faults, only one of address or selector could be specified[]Yes["192.168.0.10:31767"]
selectorstructSpecifies the target PhysicalMachine. For details, refer to Define the experiment scope, only one of address or selector could be specifiedNoneNo
modestringSpecifies 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).NoneYesone
valuestringProvides a parameter for the mode configuration, depending on mode. For example, when mode is set to fixed-percent, value specifies the percentage of PhysicalMachines.NoneNo1
durationstringSpecifies the duration of experimentsNoneYes30s

Chaque action de perturbation possède ses propres configurations spécifiques. La section suivante présente les différents types de défauts et leurs méthodes de configuration correspondantes.

Stress CPU

Pour simuler un scénario de stress CPU, définissez l'action sur "stress-cpu". Pour les configurations correspondantes, consultez les paramètres de simulation de stress CPU.

Stress mémoire

Pour simuler un scénario de stress mémoire, définissez l'action sur "stress-mem". Pour les configurations correspondantes, consultez les paramètres de simulation de stress mémoire.

Charge de lecture disque

Pour simuler un scénario de charge de lecture disque, définissez l'action sur "disk-read-payload". Pour les configurations correspondantes, consultez les paramètres de simulation de charge de lecture disque.

Charge d'écriture disque

Pour simuler un scénario de charge d'écriture disque, définissez l'action sur "disk-write-payload". Pour les configurations correspondantes, consultez les paramètres de simulation de charge d'écriture disque.

Remplissage disque

Pour simuler un scénario de remplissage disque, définissez l'action sur "disk-fill". Pour les configurations correspondantes, consultez les paramètres de simulation de remplissage disque.

Corruption réseau

Pour simuler un scénario de corruption réseau, définissez l'action sur "network-corrupt". Pour les configurations correspondantes, consultez les paramètres de simulation de corruption réseau.

Latence réseau

Pour simuler un scénario de latence réseau, définissez l'action sur "network-delay". Pour les configurations correspondantes, consultez les paramètres de simulation de latence réseau.

Duplication réseau

Pour simuler un scénario de duplication réseau, définissez l'action sur "network-duplicate". Pour les configurations correspondantes, consultez les paramètres de simulation de duplication réseau.

Perte réseau

Pour simuler un scénario de perte réseau, définissez l'action sur "network-loss". Pour les configurations correspondantes, consultez les paramètres de simulation de perte réseau.

Partition réseau

Pour simuler un scénario de partition réseau, définissez l'action sur "network-partition". Pour les configurations correspondantes, consultez les paramètres de simulation de partition réseau.

Défaut DNS

Pour simuler un scénario de défaut DNS, définissez l'action sur "network-dns". Pour les configurations correspondantes, consultez les paramètres de simulation de défaut DNS.

Défaut processus

Pour simuler un scénario de défaut processus, définissez l'action sur "process". Pour les configurations correspondantes, consultez les paramètres de simulation de défaut processus.

Levée d'exceptions personnalisées pour applications JVM

Pour simuler un scénario où les applications JVM lèvent des exceptions personnalisées, définissez l'action sur "jvm-exception". Pour les configurations correspondantes, consultez les paramètres de levée d'exceptions personnalisées.

Augmentation de latence de méthode pour applications JVM

Pour simuler un scénario où les applications JVM augmentent la latence des méthodes, définissez l'action sur "jvm-latency". Pour les configurations correspondantes, consultez les paramètres d'augmentation de latence de méthode.

Modification des valeurs de retour pour applications JVM

Pour simuler un scénario où les applications JVM modifient les valeurs de retour des méthodes, définissez l'action sur "jvm-return". Pour les configurations correspondantes, consultez les paramètres de modification des valeurs de retour d'une méthode.

Déclenchement du garbage collection pour applications JVM

Pour simuler un scénario où les applications JVM déclenchent le garbage collection, définissez l'action sur "jvm-gc". Pour les configurations correspondantes, consultez les paramètres de déclenchement du garbage collection.

Déclenchement de perturbations via fichiers de configuration Byteman pour applications JVM

Pour simuler un scénario où des applications JVM déclenchent des fautes à l'aide de fichiers de configuration Byteman, définissez l'action sur "jvm-rule-data". Pour les configurations correspondantes, consultez la section Paramètres pour déclencher des fautes en configurant des fichiers Byteman.

Décalage d'horloge

Pour simuler un scénario de décalage temporel, définissez l'action sur "clock". Pour les configurations correspondantes, consultez la section Paramètres de simulation de décalage d'horloge.