Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Active/active AWS IoT Greengrass V2 component
Dans cette configuration, vous gérez un AWS IoT Greengrass V2 composant avec Pacemaker à l'aide d'un agent de ressources OCF (Open Cluster Framework) personnalisé. Cela permet à Pacemaker de surveiller l'état d'un AWS IoT Greengrass V2 composant et de déclencher des actions de restauration lorsque le composant entre en panne.
Important
Effectuez toutes les étapes Conditions préalables et configuration du cluster avant de continuer, à l'exception des étapes de configuration du DRBD. Cette configuration n'utilise pas DRBD. Installez AWS IoT Greengrass V2 plutôt sur un chemin local sur chaque instance. AWS IoT Greengrass V2 doit être provisionné et exécuté sur toutes les instances. Ce didacticiel suppose AWS IoT Greengrass V2 qu'il est installé sur/greengrass/v2. Si vous avez choisi un chemin différent, mettez à jour la GG_CLI variable dans le script OCF en conséquence.
Création d'un agent de ressources OCF personnalisé
Créez le répertoire et le script des agents de ressources personnalisés sur toutes les instances. Cet exemple gère un composant nomméPythonWebServer.
sudo mkdir -p /usr/lib/ocf/resource.d/custom
Créez le script de l'agent de ressources /usr/lib/ocf/resource.d/custom/gg-webserver à l'adresse suivante.
#!/bin/bash # OCF Resource Agent for Greengrass Web Server component . /usr/lib/ocf/lib/heartbeat/ocf-shellfuncs GG_CLI="/greengrass/v2/bin/greengrass-cli" COMPONENT="PythonWebServer" STATE_FILE="/run/gg-webserver.ocf-state" case "$1" in meta-data) cat <<EOF <?xml version="1.0"?> <resource-agent name="gg-webserver"> <version>1.0</version> <longdesc lang="en">Greengrass webserver component agent</longdesc> <shortdesc lang="en">GG Webserver</shortdesc> <parameters> </parameters> <actions> <action name="start" timeout="60"/> <action name="stop" timeout="10"/> <action name="monitor" timeout="5" interval="10"/> <action name="meta-data" timeout="5"/> </actions> </resource-agent> EOF ;; start) touch "$STATE_FILE" systemctl restart greengrass if [ $? -eq 0 ]; then exit $OCF_SUCCESS else rm -f "$STATE_FILE" exit $OCF_ERR_GENERIC fi ;; stop) rm -f "$STATE_FILE" exit $OCF_SUCCESS ;; monitor) # Check state file first — if absent, resource is stopped [ ! -f "$STATE_FILE" ] && exit $OCF_NOT_RUNNING # Check if the Greengrass service is running if ! systemctl is-active --quiet greengrass; then exit $OCF_NOT_RUNNING fi STATE=$($GG_CLI component details -n=$COMPONENT 2>/dev/null | grep '^[[:space:]]*State:' | awk '{print $2}') if [[ -z "$STATE" ]]; then ocf_log warn "Component $COMPONENT state is empty — component may not be deployed" exit $OCF_SUCCESS elif [[ "$STATE" == "BROKEN" ]]; then exit $OCF_ERR_GENERIC else exit $OCF_SUCCESS fi ;; *) echo "Usage: $0 {start|stop|monitor|meta-data}" exit $OCF_ERR_UNIMPLEMENTED ;; esac
Rendez exécutable le script.
sudo chmod +x /usr/lib/ocf/resource.d/custom/gg-webserver
Note
L'startaction redémarre l'ensemble du AWS IoT Greengrass V2 service, qui redémarre tous les composants de l'instance, et pas seulement. PythonWebServer Il s'agit de la seule méthode de restauration pratique, car elle AWS IoT Greengrass V2 ne prend pas en charge le redémarrage de composants individuels. L'stopaction est intentionnellement interdite car cet agent est un wrapper de surveillance : le cycle de vie du AWS IoT Greengrass V2 service est géré par systemd, et non par cet agent. Si un composant persiste BROKEN (par exemple, en raison d'un mauvais déploiement), Pacemaker réessaiera migration-threshold plusieurs fois, puis bannira la ressource sur ce nœud jusqu'à son expiration. failure-timeout Vous devez corriger la cause première (par exemple, redéployer une version de composant valide) pour arrêter le cycle de nouvelles tentatives.
Joindre la ressource
Créez la ressource Pacemaker à l'aide de l'agent OCF personnalisé.
sudo pcs property set stonith-enabled=false
Avertissement
STONITH est désactivé ici pour simplifier ce tutoriel. Dans un environnement de production, vous devez activer STONITH et configurer un agent de clôture (par exemple, fence_aws pour les instances Amazon EC2) afin d'empêcher le split brain et la corruption des données.
sudo pcs resource create gg-webserver ocf:custom:gg-webserver \ op monitor interval=30s \ op start timeout=60s \ meta migration-threshold=3 failure-timeout=60s \ clone
Vérifier le rétablissement
-
Vérifiez l'état initial. Vérifiez que le AWS IoT Greengrass V2 composant fonctionne et fonctionne correctement sur toutes les instances.
sudo pcs status -
Simulez la défaillance d'un composant. Arrêtez le processus du composant pour simuler une défaillance transitoire. AWS IoT Greengrass V2 pourrait d'abord tenter une restauration interne. Si le composant entre dans un
BROKENétat, Pacemaker le détecte et déclenche le redémarrage du service. S'il AWS IoT Greengrass V2 récupère le composant en interne, Pacemaker n'agit pas.sudo pkill -f "PythonWebServer" # Wait 30-60 seconds, then check the component state sudo /greengrass/v2/bin/greengrass-cli component details -n=PythonWebServer -
Vérifiez le rétablissement. Pacemaker détecte que le composant est défectueux et exécute les étapes de restauration définies dans le script OCF personnalisé. Aucun basculement n'est nécessaire : Pacemaker redémarre le service sur la même instance.
D'autres services tels que HAProxy AWS IoT Greengrass V2 continuent de fonctionner normalement sur toutes les instances. L'application sur les instances de secours continue de recevoir les demandes sans interruption.
sudo pcs statusLorsque l'instance récupérée revient, l'équilibreur de charge l'identifie et distribue les demandes des clients selon les besoins.