15.4. Configuration des scripts de contrôle et de notification
Keepalived surveille la santé de l'application en exécutant périodiquement un script de vérification optionnel fourni par l'utilisateur. Par exemple, le script peut tester un serveur web en émettant une requête et en vérifiant la réponse.
Lorsqu'un script de contrôle n'est pas fourni, un simple script par défaut est exécuté pour tester la connexion TCP. Ce test par défaut est supprimé lorsque le port du moniteur est 0
.
Chaque module de basculement IP gère un démon Keepalived qui gère une ou plusieurs IP virtuelles (VIP) sur le nœud où le module est exécuté. Le démon Keepalived conserve l'état de chaque VIP pour ce nœud. Un VIP particulier sur un nœud particulier peut être dans l'état master
, backup
ou fault
.
Lorsque le script de vérification de ce VIP sur le nœud qui est dans l'état master
échoue, le VIP sur ce nœud entre dans l'état fault
, ce qui déclenche une renégociation. Au cours de la renégociation, tous les VIP d'un nœud qui ne sont pas dans l'état fault
participent au choix du nœud qui prendra en charge le VIP. En fin de compte, le VIP entre dans l'état master
sur un nœud, et le VIP reste dans l'état backup
sur les autres nœuds.
Lorsqu'un nœud avec un VIP dans l'état backup
échoue, le VIP sur ce nœud entre dans l'état fault
. Lorsque le script de contrôle réussit à nouveau pour un VIP sur un nœud dans l'état fault
, le VIP sur ce nœud quitte l'état fault
et négocie pour entrer dans l'état master
. Le VIP sur ce nœud peut alors entrer dans l'état master
ou backup
.
En tant qu'administrateur du cluster, vous pouvez fournir un script de notification optionnel, qui est appelé chaque fois que l'état change. Keepalived transmet les trois paramètres suivants au script :
-
$1
-group
ouinstance
-
$2
- Nom du sitegroup
ouinstance
-
$3
- Le nouvel État :master
,backup
, oufault
Les scripts de vérification et de notification s'exécutent dans le module de basculement IP et utilisent le système de fichiers du module, et non le système de fichiers de l'hôte. Toutefois, le module de basculement IP rend le système de fichiers hôte disponible sous le chemin de montage /hosts
. Lors de la configuration d'un script de contrôle ou de notification, vous devez fournir le chemin d'accès complet au script. L'approche recommandée pour fournir les scripts est d'utiliser une carte de configuration.
Les noms des chemins complets des scripts de vérification et de notification sont ajoutés au fichier de configuration de Keepalived, _/etc/keepalived/keepalived.conf
, qui est chargé à chaque démarrage de Keepalived. Les scripts peuvent être ajoutés au pod avec une carte de configuration comme suit.
Conditions préalables
-
You installed the OpenShift CLI (
oc
). -
Vous êtes connecté au cluster avec un utilisateur disposant des privilèges
cluster-admin
.
Procédure
Créez le script souhaité et créez une carte de configuration pour le contenir. Le script n'a pas d'arguments d'entrée et doit renvoyer
0
pourOK
et1
pourfail
.Le script de vérification,
mycheckscript.sh
:#!/bin/bash # Whatever tests are needed # E.g., send request and verify response exit 0
Créer la carte de configuration :
$ oc create configmap mycustomcheck --from-file=mycheckscript.sh
Ajouter le script au pod. L'adresse
defaultMode
pour les fichiers de configuration montés doit pouvoir être exécutée à l'aide des commandesoc
ou en modifiant la configuration du déploiement. Une valeur de0755
,493
décimal, est typique :$ oc set env deploy/ipfailover-keepalived \ OPENSHIFT_HA_CHECK_SCRIPT=/etc/keepalive/mycheckscript.sh
$ oc set volume deploy/ipfailover-keepalived --add --overwrite \ --name=config-volume \ --mount-path=/etc/keepalive \ --source='{"configMap": { "name": "mycustomcheck", "defaultMode": 493}}'
NoteLa commande
oc set env
est sensible aux espaces blancs. Il ne doit pas y avoir d'espace de part et d'autre du signe=
.AstuceVous pouvez également modifier la configuration du déploiement de
ipfailover-keepalived
:$ oc edit deploy ipfailover-keepalived
spec: containers: - env: - name: OPENSHIFT_HA_CHECK_SCRIPT 1 value: /etc/keepalive/mycheckscript.sh ... volumeMounts: 2 - mountPath: /etc/keepalive name: config-volume dnsPolicy: ClusterFirst ... volumes: 3 - configMap: defaultMode: 0755 4 name: customrouter name: config-volume ...
- 1
- Dans le champ
spec.container.env
, ajoutez la variable d'environnementOPENSHIFT_HA_CHECK_SCRIPT
pour qu'elle pointe vers le fichier de script monté. - 2
- Ajoutez le champ
spec.container.volumeMounts
pour créer le point de montage. - 3
- Ajouter un nouveau champ
spec.volumes
pour mentionner la carte de configuration. - 4
- Cela permet de définir l'autorisation d'exécution des fichiers. Lors de la relecture, elle est affichée en décimal,
493
.
Enregistrez les modifications et quittez l'éditeur. Cette opération redémarre
ipfailover-keepalived
.