|
Sujet |
Ce document couvre toutes les phases de mise en œuvre de SafeKit : architecture, installation, tests, administration, résolution de problèmes, support, interface ligne de commande |
|
|
Public |
Architectures |
« Architectures de haute disponibilité » page 15 « Cluster SafeKit dans le cloud page 319 |
|
Installation |
« Installation » page 25 |
|
|
Console |
« La console web de SafeKit » page 35 « Sécurisation du service web de SafeKit » page 181 |
|
|
Configuration avancée |
« Cluster.xml pour la configuration d’un cluster SafeKit page 231 « Userconfig.xml pour la configuration d’un module » page 237 « Scripts applicatifs pour la configuration du module » page 293 « Exemples de userconfig.xml et scripts utilisateurs » page 301 |
|
|
Administration |
« Administration d'un module miroir » page 99 « Administration d'un module ferme » page 109 « Interface ligne de commande » page 145 « Administration avancée » page 157 |
|
|
Support |
« Tests » page 73 « Résolution de problèmes » page 113 « Accès au support Evidian » page 137 « Index des messages du log page 341 |
|
|
Autres |
« Table des matières » page 5 « Logiciels tiers » page 337 |
|
|
Version |
SafeKit 7.5 |
|
|
OS supportés |
Windows et Linux ; pour une liste détaillée des OS supportés, voir ici |
|
|
Site web |
Site marketing Evidian
: http://www.evidian.com/safekit |
|
|
Ref |
39 F2 19MC 01 |
|
|
Si vous avez des commentaires ou des
questions relatives à ce document, envoyez-nous s'il vous plaît |
||
Copyright © Evidian, 2023
Evidian reconnaît les droits des propriétaires des marques mentionnées dans ce document.
Il est interdit de reproduire, d'enregistrer sur système de recherche documentaire ou de transmettre sous quelque forme et par quelque moyen que ce soit, électronique, mécanique ou autre, tout ou partie de cette publication sans le consentement préalable par écrit de l'éditeur.
Evidian décline toute garantie implicite de qualité marchande ou d'utilisation dans un but particulier et ne fait aucune garantie, à l'exception de celles effectuées dans le cadre d'un accord écrit avec et pour ses clients. Evidian ne pourra en aucun cas être tenu responsable par qui que ce soit de tout dommage direct, indirect ou spécial.
Les informations et caractéristiques techniques contenues dans ce document sont susceptibles d'être modifiées sans préavis. Pour tout renseignement sur la disponibilité des produits ou services, veuillez consulter un représentant commercial d’Evidian.
Guide de l'utilisateur de SafeKit Logiciel de haute disponibilité pour applications critiques
1.... Architectures de haute disponibilité
1.1..... Définition du cluster SafeKit
1.2..... Définition d'un module SafeKit -intégration d'application
1.3..... Module miroir : réplication temps réel synchrone et reprise sur panne
1.3.1 Réplication de fichiers et reprise sur panne
1.3.2 Etape 1. Etat normal d'un miroir
1.3.3 Etape 2. Reprise sur panne
1.3.4 Etape 3. Réintégration après panne
1.3.5 Etape 4. Retour à la normale
1.3.6 Solution de réplication synchrone qui ne perd pas de données en cas de panne
1.4..... Module ferme : partage de charge réseau et reprise sur panne
1.4.1 Partage de charge réseau et reprise sur panne
1.4.2 Principe d'une adresse IP virtuelle avec partage de charge réseau
1.4.3 Critères de partage de charge pour les services web à état et sans état
1.5..... Combiner les modules miroir et ferme
1.5.1 Actif/Actif : 2 modules miroirs en backup l'un de l'autre
1.5.2 N-1 : N modules miroirs avec un seul backup
1.5.3 Mixte ferme/miroir : partage de charge réseau, réplication de fichiers et reprise sur panne
1.6..... La plus simple solution pour la haute disponibilité dans le cloud
1.6.1 Cluster miroir dans Microsoft Azure, Amazon AWS et Google GCP
1.6.2 Cluster ferme dans Microsoft Azure, Amazon AWS et Google GCP
2.1..... Installation de SafeKit
2.1.2 Répertoires d'installation et espace disque
2.1.3 Procédure d’installation
2.1.4 Utilisation de la console et de la ligne de commande SafeKit
2.1.6 Caractéristiques spécifiques à chaque OS
2.2..... Recommandation pour une installation d'un module miroir
2.2.4 Prérequis réplication de fichiers
2.3..... Recommandation pour une installation d'un module ferme
2.4.1 Quand procéder à un upgrade ?
2.4.3 Procédure de désinstallation
2.4.4 Procédure de réinstallation et reconfiguration
2.5..... Désinstallation complète de SafeKit
2.5.1 Sur Windows en tant qu’Administrateur
2.5.2 Sur Linux en tant que root
2.6..... Documentation produit
3.... La console web de SafeKit
3.1..... Démarrer la console web
3.1.1 Lancer un navigateur web
3.1.2 Connecter la console à un serveur SafeKit
3.2..... Configurer un cluster SafeKit
3.2.3 Configuration en lignes de commandes
3.3.1 Sélectionner le module à configurer
3.3.2 L’assistant de configuration
3.3.3 Configuration en lignes de commandes
3.4.1 Sélectionner un module et un nœud
3.4.2 Contrôler un module ferme
3.4.3 Contrôler un module miroir
3.4.4 Contrôler en lignes de commandes
3.5..... Snapshots d’un module pour le support
3.5.2 Snapshot en lignes de commandes
3.6..... Superviser les modules
3.7.1 Configuration avancée d’un module
3.7.2 L’assistant de configuration avancée
3.7.4 Configurer un module depuis Application_Modules
3.8..... Créer un nouveau modèle de module (.safe) en vue de déploiements
3.8.1 Créer un nouveau modèle de module
3.8.2 Déployer un nouveau modèle de module
3.9..... Sécuriser la console web
3.10... L’inventaire des clusters de la console web
3.10.1 Définir l’inventaire des clusters pour la console web
3.10.2 Administrer un cluster de l’inventaire avec la console web
3.10.3 Administrer tous les clusters de l’inventaire avec la console web
4.1..... Installation et tests après boot
4.1.1 Test installation package
4.1.3 Test des services et processus SafeKit après boot
4.1.4 Test démarrage de la console web
4.2..... Tests d'un module miroir
4.2.1 Test start
d'un module miroir sur 2 serveurs
STOP (rouge)
4.2.2 Test stop
d'un module miroir sur le serveur
PRIM (vert)
4.2.3 Test start
du module miroir dans l'état
STOP
(rouge)
4.2.4 Test
restart du module miroir dans l'état
PRIM (vert)
4.2.5 Test swap du module miroir d'un serveur vers l'autre
4.2.6 Test adresse IP virtuelle d'un module miroir
4.2.7 Test réplication de fichiers d'un module miroir
4.2.8 Test
shutdown d'un module miroir sur le serveur
PRIM (vert)
4.2.9 Test
power-off d'un module miroir sur le serveur
PRIM (vert)
4.2.10 Test split brain avec un module miroir
4.2.11 Continuer les tests de votre module miroir avec les checkers
4.3..... Tests d'un module ferme
4.3.1 Test start
d'un module ferme sur les serveurs
STOP (rouge)
4.3.2 Test stop
d'un module ferme sur un serveur
UP
(vert)
4.3.3 Test
restart d'un module ferme sur un serveur
UP (vert)
4.3.4 Test adresse IP virtuelle d'un module ferme.
4.3.5 Test load balancing TCP sur une adresse virtuelle
4.3.6 Test split brain avec un module ferme
4.3.7 Test de la compatibilité du réseau avec l'adresse MAC invisible (vmac_invisible)
4.3.8 Test
shutdown d'un module ferme sur un serveur
UP (vert)
4.3.9 Test
power-off d'un module ferme sur un serveur
UP (vert)
4.3.10 Continuer les tests du module ferme avec les checkers
4.4..... Tests des checkers communs à un miroir et une ferme
4.4.1 Test <errd>: checker de processus avec action restart ou stopstart
4.4.2 Test <tcp> checker de l'applicatif local avec action restart ou stopstart
4.4.3 Test <tcp> checker d'un service externe avec action wait
4.4.4 Test <interface check="on"> sur une interface réseau locale avec action wait
4.4.5 Test <ping> checker avec action wait
4.4.6 Test <module> checker avec action wait
4.4.7 Test <custom> checker avec action wait
4.4.8 Etape 3. Réintégration après panneTest <custom> checker avec action restart ou stopstart
5.... Administration d'un module miroir
5.1..... Mode de fonctionnement d'un module miroir
5.2..... Automate d'état d'un module miroir (STOP, WAIT, ALONE, PRIM, SECOND - rouge, magenta, vert)
5.3..... Premier démarrage d'un module miroir (commande prim)
5.4..... Différents cas de réintégration (utilisation des bitmaps)
5.5..... Démarrage d'un
module miroir avec les données à jour (
STOP (rouge) -
WAIT (rouge))
5.6..... Mode de
réplication dégradé (
ALONE
(vert) dégradé)
5.7..... Reprise
automatique ou manuelle (failover="off" -
STOP (rouge) -
WAIT (rouge))
5.8..... Serveur primaire par défaut (swap automatique après réintégration)
5.9..... La commande prim échoue : pourquoi ? (commande primforce)
6.... Administration d'un module ferme
6.1..... Mode de fonctionnement d'un module ferme
6.2..... Automate d'état d'un module ferme (STOP, WAIT, UP - rouge, magenta, vert)
6.3..... Démarrage d'un module ferme
7.1..... Problème de connexion avec la console web
7.1.2 Supprimer l’état du navigateur
7.2..... Problème de connexion HTTPS avec la console web
7.2.1 Contrôler les certificats serveurs
7.2.2 Contrôler les certificats installés dans SafeKit
7.2.3 Contrôler les certificats client
7.2.4 Revenir à la configuration HTTP
7.3..... Comment lire les journaux du module ?
7.4..... Comment lire le journal de commandes du serveur ?
7.5..... Module stable
(vert) et
(vert)
7.6..... Module dégradé
(vert) et
(rouge)
7.7..... Module hors
service
(rouge) et
(rouge)
7.8..... Module
STOP
(rouge) : redémarrer le module
7.9..... Module
WAIT
(rouge) : réparer la ressource="down"
7.10... Module oscillant
de
(vert) à
(magenta)
7.11... Message sur stop après maxloop
7.12... Module
(vert) mais application non
opérationnelle
7.13... Module mirror
ALONE
(vert) /
WAIT ou STOP
(rouge)
7.14... Module ferme
UP
(vert) mais problème de load balancing.
7.14.1 Non cohérence des parts de la charge réseau
7.14.2 L'adresse IP virtuelle ne répond pas correctement
7.16... Analyse à partir des snapshots du module
7.16.1 Fichiers de configuration du module
7.16.2 Fichiers de dump du module
7.17... Problème avec la taille des bases de données de SafeKit
7.18... Problème pour récupérer depuis votre PKI le certificat de l'autorité de certification
7.18.1 Exporter les certificats CA ou CLCA depuis des certificats publics
7.18.2 Exporter un certificat public
8.... Accès au support Evidian
8.1..... Page d’accueil du site support
8.2..... Clés de licence permanentes
8.4..... Accéder à votre compte
8.5..... Le Call Desk pour remonter des problèmes
8.5.1 Les opérations du Call Desk
8.5.4 Consultation des réponses au Call et échange avec le support
8.6..... Zone de download et d’upload de fichiers
8.6.1 2 zones de download et d’upload
8.6.2 La zone de download des packages produit
8.7..... Base de connaissances
9.... Interface ligne de commande
9.1..... Commandes distribuées
9.2..... Commandes de boot et shutdown
9.3..... Commandes de configuration et surveillance du cluster
9.4..... Commandes de contrôle des modules
9.5..... Commandes de surveillance des modules
9.6..... Commandes de configuration des modules
10.1... Variables d'environnement et répertoires SafeKit
10.2... Processus et services SafeKit
10.3... Paramétrage du pare-feu
10.3.1 Paramétrage du pare-feu en Linux
10.3.2 Paramétrage du pare-feu en Windows
10.4... Configuration au boot et au shutdown en Windows
10.5... Sécurisation des communications internes au module
10.5.1 Configuration avec la console web de SafeKit
10.5.2 Configuration en ligne de commandes
10.6... Configuration du service web de SafeKit
10.6.1 Fichiers de configuration
10.6.2 Configuration des ports de connexion
10.6.5 Configuration HTTPS <-> HTTP
10.7.1 Notification au démarrage et à l’arrêt du module
10.7.2 Notification au basculement du module
10.8.1 Configuration de l’agent SNMP
10.9... Journal des commandes du serveur SafeKit
11.. Sécurisation du service web de SafeKit
11.1.1 Configuration par défaut
11.1.2 Configurations prédéfinies
11.2.1 Configuration par défaut
11.2.2 Configuration non sécurisée basée sur un rôle identique pour tous
11.3.1 Configuration HTTPS avec la PKI SafeKit
11.3.2 Configuration HTTPS avec une PKI externe
11.4... Configuration de l’authentification utilisateur
11.4.1 Configuration l’authentification à base de fichier
11.4.2 Configuration de l’authentification à base de serveur LDAP/AD
11.4.3 Configuration de l’authentification à base de certificat client avec la PKI SafeKit
11.4.4 Configuration de l’authentification à base de certificat client avec une PKI externe
11.5... Exemple de configuration de HTTPS et de l'authentification par certificat personnel
11.5.2 Configuration de HTTPS et de l’authentification à base de certificat personnel
11.5.3 Tester la console web et la commande distribuée.
11.6... Configuration avancée avec la PKI SafeKit
11.6.1 Configuration rapide de HTTPS en ligne de commandes.
11.6.2 Renouvellement des certificats
11.6.3 Révocation des certificats
11.6.4 Commandes pour la génération des certificats
11.6.5 Service web du serveur de CA
12.. Cluster.xml pour la configuration d’un cluster SafeKit
12.1... Le fichier cluster.xml
12.1.3 <lans>, <lan>, <node> attributs
12.2... Configuration du cluster SafeKit
12.2.1 Configuration avec la console web de SafeKit
12.2.2 Configuration en ligne de commandes
12.2.3 Changements de configuration
13.. Userconfig.xml pour la configuration d’un module
13.1... Macro définition (<macro> tag)
13.2... Module ferme ou miroir (<service> tag)
13.3... Heartbeats (<heart>, <heartbeat > tags)
13.3.3 <heart>, <heartbeat attributs
13.4... Topologie d'une ferme (<farm>, <lan> tags)
13.4.3 <farm>, <lan> Attributs
13.5... Adresse IP virtuelle (<vip> tag)
13.5.1 <vip> Exemple dans une architecture ferme
13.5.2 <vip> Exemple dans une architecture miroir
13.5.3 Alternative à <vip> pour des serveurs dans des réseaux IP différents
13.5.6 <loadbalancing_list>, <group>, <cluster>, <host> Attributs
13.6... Réplication de fichiers (<rfs>, <replicated> tags)
13.6.3 <rfs>, <replicated> Attributs
13.7... Activer les scripts utilisateurs (<user>, <var> tags)
13.7.3 <user>, <var> Attributs
13.8... Hostname virtuel (<vhost>, <virtualhostname> tags)
13.8.3 <vhost>, <virtualhostname> Attributs
13.9... Détection de la mort de processus ou de services (<errd>, <proc> tags)
13.9.3 <errd>, <proc> Attributs
13.10. Checkers (<check> tags)
13.11. TCP checker (<tcp> tags)
13.12. Ping checker (<ping> tags)
13.13. Interface checker (<intf> tags)
13.15. Checker customisé (<custom> tags)
13.16. Module checker (<module> tags)
13.17. Splitbrain checker (<splitbrain> tag)
13.17.3 <splitbrain> Attributs
13.18. Failover machine (<failover> tag)
14.. Scripts applicatifs pour la configuration du module
14.2... Automate d’exécution des scripts
14.3... Variables d’environnement et arguments passés aux scripts
14.4... Commandes spéciales SafeKit pour les scripts
14.4.3 Commandes pour Windows et Linux
15.. Exemples de userconfig.xml et scripts utilisateurs
15.1... Exemple du module générique miroir avec mirror.safe
15.2... Exemple du module générique ferme avec farm.safe
15.3... Un module ferme dépendant d'un module miroir
15.4... Exemple d'un flux de réplication dédié
15.5... Exemples de partage de charge dans un module ferme.
15.5.1 Exemple d'un load balancing TCP
15.5.2 Exemple de load balancing UDP
15.5.3 Exemple d'un load balancing multi-groupes
15.6... Exemple d'un hostname virtuel avec vhost.safe
15.7... Détection de la mort de processus avec softerrd.safe
15.8... Exemple d’un checker TCP
15.9... Exemple d'un checker ping
15.10. Exemple d'un checker d'interface réseau
15.12. Exemple d'un checker customisé avec customchecker.safe
15.13. Exemple d'un checker de module avec leader.safe et follower.safe
16.. Cluster SafeKit dans le cloud
16.1... Cluster SafeKit dans Amazon AWS
16.1.1 Installer un cluster SafeKit avec le modèle AWS CloudFormation pour SafeKit
16.1.2 Installer un cluster SafeKit en dehors du modèle AWS CloudFormation pour SafeKit
16.1.3 Cluster miroir dans AWS
16.2... Cluster SafeKit dans Microsoft Azure
16.2.1 Installer un cluster SafeKit avec le modèle Azure Resource pour SafeKit
16.2.2 Installer un cluster SafeKit en dehors du modèle Azure Resource pour SafeKit
16.2.3 Cluster miroir dans Azure
16.2.4 Cluster ferme dans Azure
16.3... Cluster SafeKit dans Google GCP
16.3.1 Installer un cluster SafeKit avec la solution SafeKit pour le Google Marketplace
16.3.2 Installer un cluster SafeKit en dehors de la solution SafeKit pour le Google Marketplace
16.3.3 Cluster miroir dans GCP
Index des messages du journal du module
1.1 « Définition du cluster SafeKit » page 15
1.2 « Définition d'un module SafeKit -intégration
d'application » page 15
1.3 « Module miroir : réplication temps réel synchrone et
reprise sur panne » page 16
1.4 « Module ferme : partage de charge réseau et reprise sur
panne » page 19
1.5 « Combiner les modules miroir et ferme » page 20
1.6 « La plus simple solution pour la haute disponibilité
dans le cloud » page 23
Un cluster SafeKit est un groupe de serveurs sur lesquels Safekit est installé et en fonctionnement.
Tous les serveurs appartenant à un cluster donné partagent la même configuration de cluster (liste des serveurs et réseaux utilisés) et communiquent entre eux afin d’avoir une vue globale des configurations des modules installés. Un même serveur ne peut appartenir à plusieurs clusters.
La définition du cluster est un prérequis à toute installation et configuration de modules SafeKit depuis la version 7.2 de SafeKit et de sa console web d’administration. La définition du cluster se fait via la console web comme décrit en section 3.2 page 37. La console web de SafeKit offre la possibilité d’administrer un ou plusieurs clusters SafeKit.
Un module est une personnalisation de SafeKit pour une application. Le module définit la solution de haute disponibilité prévue pour l'application et les procédures de reprise de l'application. Différents modules peuvent être définis pour différentes applications.
Concrètement, un module applicatif inclut :
un fichier de configuration principal userconfig.xml qui définit les réseaux utilisés par les serveurs,
les fichiers à répliquer en temps réel (pour un module miroir), la
configuration d'adresse IP virtuelle, les critères de partage de charge (pour
un module ferme) et plus…
les scripts de démarrage et d'arrêt de l'application
SafeKit propose deux types de module détaillés dans ce chapitre :
le module miroir
le module ferme
Plusieurs modules applicatifs peuvent s'exécuter sur le même cluster de serveurs permettant d'imaginer des architectures avancées :
active/active : 2 modules miroirs en backup l'un de l'autre
N-1 : N modules miroirs avec un seul backup
mixte ferme et miroir : mixte le partage de charge, la réplication de
fichiers et la reprise
L'architecture miroir peut être configurée avec ou sans réplication de fichiers. Avec la réplication de fichiers, cette architecture est particulièrement adaptée à la haute disponibilité des applications base de données avec des données critiques à protéger contre les pannes. En effet, les données du serveur secondaire sont fortement synchronisées avec celles du serveur primaire et la reprise sur panne se fait sur le serveur secondaire depuis la version la plus à jour des données. Si la disponibilité de l’application est plus critique que la synchronisation des données, la politique par défaut peut être relâchée pour autoriser une reprise sur panne par le serveur secondaire lorsque la date de la dernière synchronisation est inférieure à un délai configurable.
Microsoft SQL Server.safe, MySQL.safe, Oracle.safe sont des exemples de modules applicatifs de type "miroir". Vous pouvez écrire votre propre module miroir pour votre application à partir du module générique Mirror.safe.
Le système de reprise fonctionne de la façon suivante.

Seuls les noms des répertoires de fichiers à répliquer sont configurés dans SafeKit. Il n'y a pas de prérequis sur l'organisation disque des deux serveurs. Les répertoires à répliquer peuvent être localisés dans le disque système.
Le serveur 1 (PRIM) exécute l'application.
SafeKit réplique les fichiers ouverts par l'application. Seules les modifications faites par l'application à l'intérieur des fichiers sont répliquées en temps réel à travers le réseau, limitant ainsi le trafic.
Grace à la réplication synchrone des écritures sur les disques des deux serveurs, aucune donnée n'est perdue en cas de panne.

Lorsque le serveur 1 est défaillant, la reprise sur le serveur 2 est assurée. SafeKit bascule l'adresse IP virtuelle du cluster et redémarre automatiquement l'application sur le serveur 2. L'application retrouve les fichiers répliqués par SafeKit avec l'assurance qu'aucune écriture synchrone sur disque n'a été perdue entre le serveur 1 et le serveur 2. L'application continue son exécution sur le serveur 2 en modifiant localement ses fichiers qui ne sont plus répliqués vers le serveur 1.
Le temps de basculement est égal au temps de détection de la panne (time-out configuré à 30 secondes par défaut) et au temps de relance de l'application. Sur la machine secondaire, il n'y a pas de temps lié au remontage du système de fichiers ou au passage des procédures de recovery du système de fichiers, comme avec les solutions de réplication de disques.

A la reprise après panne du serveur 1 (réintégration du serveur 1), SafeKit resynchronise automatiquement les fichiers de ce serveur à partir de l'autre serveur. Seuls les fichiers modifiés sur le serveur 2 pendant l'inactivité du serveur 1 sont resynchronisés.
La réintégration du serveur 1 se fait sans arrêter l'exécution des applications sur le serveur 2. Cette propriété est un différentiateur du produit SafeKit par rapport à d'autres solutions qui nécessitent d'arrêter les applications sur le serveur 2 pour réintégrer le serveur 1.
Pour optimiser la réintégration de fichiers, il y a plusieurs cas de figure :
1. Le module doit avoir effectué une réintégration (au premier démarrage du module la réintégration est complète) avant d’activer la gestion des bitmaps de modification
2. Si le module a été proprement arrêté sur le serveur, alors au redémarrage du secondaire, seules les zones modifiées à l'intérieur des fichiers sont réintégrées suivant les bitmaps de modification
3. Si la secondaire a crashé (power off) ou a été incorrectement arrêtée (exception du processus de réplication nfsbox), les bitmaps de modification ne sont pas sûres et elles ne sont donc pas utilisées. Tous les fichiers qui ont été modifiés pendant et avant l'arrêt suivant une période de grâce (typiquement une heure) sont réintégrés
4. Un appel à la commande spéciale second fullsync provoque une réintégration complète de tous les répertoires répliqués sur la secondaire quand elle est redémarrée
5. Si les fichiers sont modifiés sur le serveur primaire ou secondaire alors que SafeKit est arrêté, les répertoires répliqués sont totalement réintégrés sur la secondaire.

Après la réintégration, les fichiers sont à nouveau en mode miroir comme à l'étape 1. Le système est en haute disponibilité avec l'application qui s'exécute sur le serveur 2 et avec comme secours le serveur 1. Les modifications de l'application dans les fichiers sont répliquées en temps réel du serveur 2 vers le serveur 1.
Si l'administrateur souhaite que son application s'exécute en priorité sur le serveur 1, il peut exécuter une commande de basculement, soit manuellement à un moment opportun, soit automatiquement par configuration.
Il existe une grande différence entre réplication synchrone de données mise en œuvre par la solution miroir de SafeKit et réplication asynchrone de données telle qu’elle est traditionnellement mise en œuvre dans les solutions de réplication de fichiers.
Avec une réplication synchrone, lorsqu'une IO disque est réalisée par l'application ou le cache système sur le serveur primaire et sur un fichier répliqué, SafeKit attend l'acquittement de l'IO du disque local et du serveur secondaire avant d'envoyer l'acquittement à l'application ou au cache système.
La réplication synchrone et temps réel des données sur des fichiers ouverts par une application assure la haute disponibilité applicative sans perte de données en cas de panne. Notamment, la réplication synchrone des fichiers assure que toute donnée commitée sur un disque par une application transactionnelle est retrouvée sur la machine secondaire.
La bande passante d'un LAN entre les deux serveurs est nécessaire pour mettre en œuvre une réplication synchrone de données avec éventuellement un LAN étendu dans deux salles machines éloignées de plusieurs kilomètres.
Avec la réplication asynchrone mise en œuvre par d'autres solutions, les IOs sont mises dans une file sur le serveur primaire et les acquittements du serveur secondaire ne sont pas attendus. Donc, toutes les données qui n'ont pas eu le temps d'être recopiées à travers le réseau sur le second serveur sont perdues en cas de panne du premier serveur. Notamment, une application transactionnelle perd des données commitées en cas de panne. La réplication asynchrone est adaptée à la réplication de données à travers un réseau bas débit de type WAN, pour réaliser un backup à distance sur plus de 100 kilomètres.
SafeKit propose une solution asynchrone sans perte de données en assurant l'asynchronisme non pas sur la machine primaire mais sur la machine secondaire. Dans cette solution, SafeKit attend toujours l'acquittement des deux machines avant d'envoyer l'acquittement à l'application ou au cache système. Mais sur la secondaire, il y a 2 options asynchrone ou synchrone. Dans le cas asynchrone (option <rfs async="second">), la secondaire envoie l'acquittement à la primaire dès réception de l'IO puis écrit sur disque. Dans le cas synchrone (<rfs async="none">), la secondaire écrit l'IO sur disque puis envoie l'acquittement à la primaire. Le mode async="none" est nécessaire si l'on considère une double panne électrique simultanée des deux serveurs avec impossibilité de redémarrer l'ex serveur primaire et obligation de redémarrer sur le secondaire.

L'architecture ferme est adaptée aux applications frontales telles que les services web. Apache_farm.safe, Microsoft IIS_farm.safe sont des exemples de modules applicatifs de type ferme. Vous pouvez écrire votre propre module 'ferme' pour votre application à partir du module générique Farm.safe.
L'algorithme de partage de charge dans le filtre est basé sur l'identité des paquets client (adresse IP client, port TCP client). Suivant l'identité du paquet client en entrée, seul un filtre dans un serveur accepte le paquet ; les autres filtres dans les autres serveurs le rejettent. Une fois un paquet accepté par le filtre sur un serveur, seul le CPU et la mémoire de ce serveur sont utilisés par l'application qui répond à la requête du client. Les messages de retour de l'application sont envoyés directement du serveur vers le client.
Lorsqu'un serveur est défaillant, le protocole de gestion du groupe des serveurs en vie reconfigure les filtres pour redistribuer le trafic vers les serveurs disponibles.
Avec un service à état, il y a affinité de session. Le même client doit être connecté sur le même serveur sur plusieurs sessions HTTP/TCP pour retrouver son contexte sur le serveur. Dans ce cas, la règle de load balancing SafeKit est configurée sur l'adresse IP des clients. Ainsi, le même client est toujours connecté sur le même serveur sur plusieurs sessions TCP. Et différents clients sont répartis sur les différents serveurs de la ferme. Cette configuration est à choisir pour les services web à état lorsqu’il y a affinité de sessions.
Avec un service web sans état, il n'y a pas d'affinité de session. Le même client peut être connecté sur des serveurs différents dans la ferme lors de sessions HTTP/TCP successives. Dans ce cas, la règle de load balancing SafeKit est configurée sur l'identité de la session TCP du client. Cette configuration est celle qui répartit le mieux les sessions entre les serveurs mais elle requiert un service TCP sans affinité de session.
D'autres algorithmes de partage de charge sont proposés pour des services UDP.
Deux serveurs actifs en miroir l'un de l'autre
Dans une architecture active / active, il y a deux serveurs et deux modules applicatifs miroirs en reprise mutuelle (Appli1.Safe et Appli2.Safe). Chaque serveur applicatif est secours de l'autre serveur applicatif.

Lorsqu'un serveur applicatif est défaillant, les deux applications sont actives sur le serveur applicatif restant. Et après le redémarrage du serveur défaillant, chaque application est de nouveau active sur son serveur primaire par défaut.
Un cluster en reprise mutuelle est une solution plus économique que deux clusters miroirs. Il n’y a pas de serveur de reprise inactif passant son temps à attendre la panne du serveur primaire et à assurer seulement la reprise applicative. Notez que dans une telle architecture, en cas de défaillance d'un serveur, le serveur restant doit supporter la charge des deux applications.
Backup partagé entre plusieurs serveurs actifs
Dans l'architecture N-1, il y a N modules applicatifs de type miroir mis en œuvre sur N serveurs primaires et un seul serveur backup.

Si un des N serveurs applicatifs actifs est défaillant, le serveur de secours redémarre l'application qui tournait sur le serveur défaillant. Quand le serveur défaillant redémarre, l'application bascule du serveur de secours vers son serveur d'origine.
Dans le cas d'une panne, contrairement à l'architecture actif/actif, le serveur de secours n'est pas surchargé par l'exécution de plusieurs applications. Dans le cas particulier de plusieurs pannes simultanées, toutes les applications défaillantes sont redémarrées sur le serveur de secours.
Partage de charge réseau, réplication de fichiers et reprise sur panne
Des modules applicatifs ferme et miroir peuvent être mixés sur des serveurs physiques communs.
Cette possibilité permet de mettre en œuvre une architecture applicative multi tiers telle que Apache_farm.safe (ferme avec partage de charge et reprise) et MySQL.safe (miroir avec réplication de fichiers et reprise) sur des serveurs applicatifs communs.

Ainsi, le partage de charge, la réplication de fichiers et la reprise sont mis en œuvre de manière cohérente sur les mêmes serveurs physiques. Ce type d'architecture est propre à SafeKit et unique sur le marché !
SafeKit est la solution la plus simple pour mettre en œuvre un cluster hautement disponible dans les clouds Microsoft Azure, Amazon AWS et Google GCP. SafeKit peut être implémenté sur des machines virtuelles existantes ou sur une nouvelle infrastructure, que vous créez en cliquant simplement sur un bouton qui déploie et configure tout pour vous dans les clouds Azure ou AWS.
Pour une description complète, voir section 16 page 319.
SafeKit est la plus simple solution dans les clouds Azure, AWS et GCP, pour mettre en œuvre un cluster actif-passif avec failover applicatif et réplication temps réel et continue des données (module miroir).
Pour un mise en œuvre rapide, se référer à cluster miroir dans Azure, cluster miroir dans AWS ou cluster miroir dans GCP.

l'application critique s'exécute sur le serveur PRIM
les utilisateurs sont connectés à une adresse IP virtuelle
principale/secondaire configurée dans le load balancer du cloud
SafeKit implémente un vérificateur d’état de module générique que
teste le load balancer. Sur le serveur PRIM,
le vérificateur d’état renvoie OK et NOK sur le serveur SECOND
sur chaque serveur, SafeKit surveille l’application critique à
l’aide du détecteur de mort de processus et de checkers personnalisés
SafeKit redémarre automatiquement l'application critique en cas de
défaillance logicielle ou matérielle grâce à des scripts de redémarrage
SafeKit effectue la réplication en temps réel synchrone de
fichiers contenant des données critiques
un connecteur à la console Web SafeKit est installé sur chaque
serveur. Ainsi, le cluster à haute disponibilité peut être géré de manière très
simple pour éviter les erreurs humaines
SafeKit est la plus simple solution dans les clouds Azure, AWS et GCP, pour mettre en œuvre un cluster actif-actif avec répartition de charge et failover applicatif (module ferme).
Pour un mise en œuvre rapide, se référer à cluster ferme dans Azure, cluster ferme dans AWS ou cluster ferme dans GCP.

l'application critique s'exécute sur tous les serveurs UP
les utilisateurs sont connectés à une adresse IP virtuelle, avec
partage de charge, configurée dans le load balancer du cloud
SafeKit implémente un vérificateur d’état de module générique que
teste le load balancer. Le vérificateur d’état renvoie OK quand le serveur est UP ; NOK dans les autres cas (y
compris en cas de panne matériel), ce qui arrête le routage du trafic vers ce
serveur par le load balancer
sur chaque serveur, SafeKit surveille l’application critique à
l’aide du détecteur de mort de processus et de checkers personnalisés
SafeKit redémarre automatiquement l'application critique en cas
de défaillance logicielle ou matérielle grâce à des scripts de redémarrage
un connecteur à la console Web SafeKit est installé sur chaque
serveur. Ainsi, le cluster à haute disponibilité peut être géré de manière très
simple pour éviter les erreurs humaines
2.1 « Installation de SafeKit » page 25
2.2 « Recommandation pour une installation d'un module
miroir » page 29
2.3 « Recommandation pour une installation d'un module ferme »
page 30
2.4 « Upgrade de SafeKit » page 30
2.5 « Désinstallation complète de SafeKit » page 32
2.6 « Documentation produit » page 33
1. Se connecter à https://support.evidian.com/safekit
2. Aller dans <Version 7.5>/Platforms/<Your platform>/Current versions
3. Télécharger le package 64-bits
SafeKit est installé dans :
|
SAFE |
SAFE=C:\safekit
SAFE=/opt/safekit |
Espace disque libre au minimum : 80MB
|
|
SAFEVAR |
SAFEVAR= C:\safekit\var if %SYSTEMDRIVE%=C:
SAFEVAR=/var/safekit |
Espace disque libre minimum : 20MB + au moins 20MB (jusqu’à 3 GB) par module pour les dumps
|
Installation du package SafeKit
1. Se loguer en tant qu’administrateur
2. Localiser le fichier téléchargé safekitwindows_7_5_x_y.msi
3. Installer en mode interactif en double-cliquant dessus puis dérouler l’assistant d’installation
ou
msiexec /qn /i safekitwindows_7_5_x_y.msi
Setup du pare-feu
1. Dans une console PowerShell en tant qu’administrateur
2. Exécuter SAFE/private/bin/firewallcfg add
Cela configure le pare-feu Microsoft pour SafeKit. Pour plus de détails ou d’autres pare-feu, voir la section 10.3 page 160
Initialisation du service web SafeKit pour la console et les
commandes distribuées
Cette étape est obligatoire pour initialiser la configuration par défaut du service web. Depuis SafeKit 7.5, celui-ci nécessite en effet de s’authentifier pour accéder au service. Ce script facilite sa mise en œuvre en l’initialisant avec l’utilisateur admin et le mot de passe donné pwd, par exemple.
1. Dans une console PowerShell en tant qu’administrateur
2. Exécuter SAFE/private/bin/webservercfg -passwd pwd
Cela permet ensuite d’accéder à toutes les fonctionnalités de la console web, en se connectant avec admin/pwd, et d’exécuter des commandes distribuées. Pour plus de détails, voir 11.2.1 page 183.
|
|
Le mot de passe doit être identique sur tous les nœuds qui appartiennent au même cluster SafeKit. Sinon, la console web et les commandes distribuées échoueront avec des erreurs d'authentification. |
|
Sur upgrade, cette étape peut être ignorée si cela a déjà été fait dans une version précédente de SafeKit 7.5. Si elle est réappliquée, cela aura pour effet de réinitialiser le mot de passe avec la nouvelle valeur. |
Installation du package SafeKit
Cela extrait le package SafeKit et le script safekitinstall
Pendant l’installation :
ü Répondre à “Do you accept that SafeKit automatically configure the local firewall to open these ports (yes|no)?”
Si vous répondez oui, le pare-feu Linux firewalld ou iptable est configuré pour SafeKit. Pour plus de détails ou d’autres pare-feu, voir la section 10.3 page 160.
ü Répondre à “Please enter a password or "no" if you want to set it later :”
La saisie d’un mot de passe est obligatoire pour initialiser la configuration par défaut du service web. Depuis SafeKit 7.5, celui-ci nécessite en effet de s’authentifier pour y accéder.
Si vous répondez pwd par exemple, cette valeur est utilisée comme mot de passe pour l'utilisateur admin. Cela permet ensuite d’accéder à toutes les fonctionnalités de la console web, en se connectant avec admin/pwd, et d’exécuter des commandes distribuées. Pour plus de détails, voir 11.2.1 page 183.
|
|
Le mot de passe doit être identique sur tous les nœuds qui appartiennent au même cluster SafeKit. Sinon, la console web et les commandes distribuées échoueront avec des erreurs d'authentification. |
ou
safekitinstall -q
Ajouter l’option -nofirewall pour ne pas configurer le pare-feu
Ajouter l’option -passwd pwd pour initialiser l’authentification, requise par le service web (pwd est le mot de passe affecté à l’utilisateur admin)
Setup du pare-feu
Aucune action requise lorsque la configuration automatique du pare-feu a été appliquée pendant l'installation. Sinon, voir la section 10.3 page 160.
Initialisation du service web SafeKit pour la console et les
commandes distribuées
Aucune action requise si l’initialisation a été faite pendant l’installation. Sinon, voir la section 11.2.1 page 183.
Une fois installé, le cluster SafeKit doit être défini. Ensuite, les modules peuvent être installés, configurés et administrés. Toutes ces actions peuvent être effectuées avec la console ou l'interface en ligne de commande.
La console SafeKit
1. Démarrer un navigateur web
2. Le connecter à l’URL http://servername:9010 (où servername est l’adresse IP ou le nom d’un nœud SafeKit)
3. Dans la page de connexion, entrer comme nom d’utilisateur admin et comme mot de passe celui que vous avez donné pendant l’initialisation juste au-dessus (par exemple, pwd). Puis cliquer sur Connecter
4. La page chargée contient tous les onglets correspondant au rôle Admin (qui est le rôle par défaut)
rôle Admin :
Configuration,
Control,
Monitoring et
Advanced Configuration
Pour une description complète, voir la section 3 page 35.
La ligne de commande SafeKit
Elle repose sur la commande unique safekit située dans le répertoire SAFE (en Windows, SAFE=C:\safekit si %SYSTEMDRIVE%=C: ; en Linux, SAFE=/opt/safekit). Presque toutes les commandes safekit peuvent être appliquées localement ou sur une liste de nœuds du cluster SafeKit. C’est ce qui est appelé commande distribuée.
Pour une description complète, voir 9 page 145.
Si vous n'installez pas de clé, le produit s'arrêtera tous les 3
jours
Vous pouvez obtenir une clé d'essai d'un mois gratuit (fonctionne
avec n'importe quel hostname/n'importe quel OS) : http://www.evidian.com/safekit/requestevalkey.php
Pour obtenir des clés permanentes basées sur le nom de la machine/OS
(voir section 8.2 page 138)
Sauvegarder la clé dans le fichier SAFE/conf/license.txt
sur chaque serveur
Vérifier la conformité de la clé avec la commande safekit level
Il faut appliquer une procédure spéciale pour arrêter proprement
les modules SafeKit au shutdown d'une machine et démarrer le service safeadmin au boot (voir section 10.4
page 166)
En cas d'interfaces réseau en teaming avec du load balancing
SafeKit, il est nécessaire de décocher "Vip" sur les interfaces
réseau physiques de teaming et de le conserver coché seulement sur l'interface
virtuelle de teaming
En RedHat, les
packages suivants sont nécessaires :
ü pour le framework SafeKit : coreutils, sed, gawk, bind-utils
ü pour la réplication de fichiers : nfs-utils
ü pour le load balancing : make, gcc, kernel-devel et elfutils-libelf-devel pour CentOS 8
Dans une ferme avec load balancing sur adresse IP virtuelle,
compilation du module kernel vip au moment de la configuration du module ferme.
Pour réussir la compilation, des packages Linux doivent être installés.
Pour un module ferme sur RedHat, utiliser Add/Remove Software et chercher/installer les packages make, gcc et le package devel correspondant à votre kernel installé (ex : kernel-devel).
En ferme avec load balancing SafeKit sur une interface de
bonding, pas d'ARP dans la configuration de bonding. Sinon l'association
<adresse IP virtuelle, adresse MAC virtuelle invisible> est cassée dans
les caches ARP des clients avec l'adresse MAC physique de la carte de bonding (voir
section 4.3.4 page 84)
En mode miroir, si utilisation de la réplication de fichiers,
retirer le package logwatch (rpm -e logwatch) ; sinon le service NFS et SafeKit
seront arrêtés toutes les nuits
|
ip 1.1 ip 1.2
|
virtual IP = ip 1.10 miroir(app1)= app1 files1 files1 |
au moins 2 serveurs avec le même Operating System
OS supportés : https://support.evidian.com/supported_versions/#safekit
Contrôleur disque avec cache write-back recommandé pour la
performance des IO
1 adresse IP physique par serveur (ip 1.1 et ip 1.2)
Si vous devez définir une adresse IP virtuelle (ip 1.10), les
deux serveurs doivent appartenir au même réseau IP avec la configuration
standard de SafeKit (LAN ou LAN étendu entre deux salles informatiques
distantes). Dans le cas contraire, voir une alternative dans la section 13.5.3 page 245
L'application est installée et démarre sur les 2 serveurs
L'application fournit des commandes en ligne pour démarrer et
s'arrêter
Sur Linux, commandes du style : service
"service" start|stop ou su
–user "appli-cmd"
Sur Windows, commandes du style : net
start|stop "service"
Si nécessaire, application avec une procédure de reprise suite à
un crash serveur
Retirer le démarrage automatique au boot de l'application et le remplacer
par la configuration du démarrage au boot du module SafeKit
Les répertoires de fichiers qui seront répliqués sont créés sur
les 2 serveurs
Ils se situent au même endroit sur les 2 serveurs dans
l'arborescence fichier
Il vaut mieux synchroniser les horloges des 2 serveurs pour la
réplication de fichiers (protocole NTP)
Sous Linux, aligner les valeurs des uids/gids sur les 2 serveurs
pour les propriétaires des répertoires et fichiers à répliquer
Voir aussi la section 2.1.6 page 28
|
ip 1.1 ip 1.2 ip 1.3 |
virtual IP = ip 1.20 ip 1.20 ip 1.20 ferme (app2) = app2 app2 app2 |
au moins 2 serveurs avec le même OS
OS supportés : https://support.evidian.com/supported_versions/#safekit
Linux : outils de compilation du kernel installés pour le module
kernel vip
1 adresse IP physique par serveur (ip 1.1, ip 1.2, ip 1.3)
Si vous devez définir une adresse IP virtuelle (ip 1.20), les
serveurs doivent appartenir au même réseau IP avec la configuration standard de
SafeKit (LAN ou LAN étendu entre les salles informatiques distantes). Dans le
cas contraire, voir une alternative décrite dans la section section 13.5.3 page 245
voir aussi la section 2.1.6 page 28
Les mêmes prérequis que pour un module miroir décrits en 2.2.3 page 29.
Si vous rencontrez un problème avec SafeKit, consulter le Software Release Bulletin (Anglais – HTML) disponible sur https://support.evidian.com/safekit pour voir la liste des fixs produits.
Si vous souhaitez profiter de nouvelles fonctionnalités, consulter le Release Notes disponible sur https://support.evidian.com/safekit. Ce document vous indiquera également si vous êtes dans le cas d'un upgrade majeur (ex. 7.4 vers 7.5) qui nécessite d'effectuer une procédure différente de celle présentée ici.
La procédure d'upgrade consiste à désinstaller l'ancien package puis à réinstaller le nouveau package. Tous les serveurs du même cluster doivent être upgradé en même temps.
1. Noter l'état "on" ou "off" des services et modules démarrés automatiquement au boot
safekit boot webstatus ; safekit boot snmpstatus ; safekit boot status -m AM (où AM est le nom du module)
|
|
Depuis SafeKit 7.5, le démarrage au boot du module peut être défini dans son fichier de configuration. Si c’est le cas, l’usage de la commande safekit boot devient inutile. |
2. Pour un module miroir
Noter le serveur qui est dans l'état ALONE ou PRIM afin de connaître le serveur avec les fichiers répliqués à jour
3. Prise de snapshots, facultative
La désinstallation/réinstallation va réinitialiser les logs SafeKit et effacer les dumps de chaque module. Si vous souhaitez conserver ces informations, exécuter la commande safekit snapshot -m AM /chemin/snapshot_xx.zip pour chaque module (où AM est le nom du module)
Sur Windows en tant qu’administrateur et sur Linux en tant que root :
1. Arrêter tous les modules avec la commande safekit shutdown
Pour un module miroir dans l'état PRIM-SECOND, commencer par l'arrêt du serveur SECOND afin d'éviter un basculement inutile
2. Fermer tous les éditeurs, explorateur de fichiers, shells ou terminaux sous SAFE et SAFEVAR
3. Désinstaller le package SafeKit
sur Windows via Control Panel-Add/Remove
Programs
sur Linux avec la commande safekit
uninstall
4. Défaire les modifications manuelles effectuées sur le pare-feu
Voir section 10.3 page 160
La désinstallation de SafeKit inclut la création d’un backup des modules installés dans SAFE/Application_Modules/backup, puis leur déconfiguration.
1. Installer le nouveau package comme décrit en 2.1 page 25
2. Vérifier avec la commande safekit level la version SafeKit installée et la validité de la licence qui n'a pas été désinstallée
Si vous avez un problème avec le nouveau package et l'ancienne clé, prendre une licence temporaire (voir section 2.1.5 page 28)
3. Si la console web est utilisée, vider le cache du navigateur web et forcer l’actualisation des pages HTML
4. Reconfigurer tous les modules installés
Avec console
web/
Configuration/
sur le module/
Editer la configuration/ ou la commande safekit config –m AM (où AM est le nom
du module)
5. Reconfigurer le démarrage automatique du module au boot si nécessaire
Depuis SafeKit 7.5, le démarrage
du module au boot peut être défini dans son fichier de configuration. Si c’est
le cas, passer cette étape. Si non, exécuter sur les 2 nœuds : console web/
Contrôle/
sur le nœud /sous-menu Admin /Configurer le démarrage au boot/ ou la
commande safekit boot –m AM on (où
AM est le nom du module)
De plus, dans le cas particulier où :
le démarrage au boot du service safewebserver
avait été désactivé
le désactiver à nouveau dans cet état avec safekit boot weboff
le démarrage au boot du service safeagent
avait été activé
le réactiver avec safekit boot snmpon
les fichiers sous SAFE/web/conf/
et SAFE/snmp/conf/snmpd.conf ont
été personnalisés
reporter les personnalisations dans les nouveaux fichiers installés (les personnalisations ont été sauvegardées dans <nom>.conf.<date> et snmpd.conf.<date>)
Pour redémarrer les modules après upgrade :
ü module ferme
console
web/
Contrôle/
sur le module/
Démarrer/ ou la commande
safekit start –m AM (où AM est
le nom du module)
ü module miroir
Sur le serveur qui a les fichiers
répliqués à jour (ancien PRIM ou
ALONE) : console web/
Contrôle/
sur le nœud/Expert/Forcer le démarrage/en primaire/ ou la commande safekit prim –m AM (où AM est le nom
du module)
Sur l’autre serveur (ancien SECOND) : console
web/
Contrôle/
sur le nœud/Expert/Forcer le démarrage/en secondaire/ ou la commande safekit second –m AM (où AM est le nom
du module)
Suivre la procédure décrite ci-dessous pour désinstaller complètement SafeKit.
1. Arrêter tous les modules à l’aide de la commande safekit shutdown (SAFE=C:\safekit si SystemDrive=C:)
2. Fermer tous les éditeurs, explorateur de fichiers, ou terminaux sous SAFE et SAFEVAR
3. Désinstaller le package SafeKit via Control Panel-Add/Remove Programs
4. Redémarrer le serveur
5. Détruire le répertoire SAFE qui correspond à l’installation précédente de SafeKit
6. Défaire les modifications effectuées pour configurer le démarrage au boot/l’arrêt au shutdown de SafeKit
Voir la section 10.4 page 166
7. Défaire les modifications manuelles effectuées sur le pare-feu
voir section 10.3 page 160
8. Supprimez, si présent, l'utilisateur créé par l'installation précédente (par défaut SafeKitUser) avec la commande : net user SafeKitUser /delete
1. Arrêter tous les modules à l’aide de la commande safekit shutdown (SAFE=C:\safekit si SystemDrive=C:)
2. Fermer tous les éditeurs, explorateur de fichiers, ou terminaux sous SAFE et SAFEVAR
3. Désinstaller SafeKit avec la commande safekit uninstall –all et répondre yes lorsque cela est demandé pour confirmer la destruction de tous les répertoires créés lors de la précédente installation
4. Redémarrer le serveur
5. Défaire les modifications effectuées pour paramétrer les règles de pare-feu
voir section 10.3 page 160
Guide de l'utilisateur SafeKit (Français, Anglais - PDF et HTML)
Il s'agit de ce guide. Veillez à consulter le guide correspondant à votre numéro de version SafeKit.
Disponible sur https://support.evidian.com/safekit
SafeKit Release Notes (Anglais -PDF)
Il contient :
ü dernières instructions d'installation
ü changements majeurs
ü restrictions et problèmes connus
ü instructions de migration
Disponible sur https://support.evidian.com/safekit
Software Release Bulletin (Anglais - HTML)
Il contient :
ü liste à jour des versions supportées pour Windows et Linux
ü liste des fixs et changements
Disponible sur https://support.evidian.com/safekit
SafeKit Knowledge Base (Anglais - HTML)
Il contient une liste sélectionnée de KBs SafeKit.
Disponible sur https://support.evidian.com/safekit
D'autres KBs sont disponibles mais nécessitent un compte sur https://support.evidian.com. Pour plus de détails sur le site support, voir section 8 page 137.
Formation SafeKit
Disponible sur https://www.evidian.com/fr/produits/haute-disponibilite-logiciel-clustering-application/formation-au-cluster-safekit/
3.1 « Démarrer la console web » page 35
3.2 « Configurer un cluster SafeKit » page 37
3.3 « Configurer un module » page 42
3.4 « Contrôler un module » page 51
3.5 « Snapshots d’un module pour le support » page 55
3.6 « Superviser les modules » page 56
3.7 « Gérer les modules » » page 57
3.8 « Créer un nouveau modèle de module (.safe) en vue de
déploiements » page 65
3.9 « Sécuriser la console web » page 67
3.10 « L’inventaire des clusters de la console web » page 68
|
|
Consulter le Release Notes, sur https://support.evidian.com/safekit, pour la liste des restrictions et problèmes connus avec la console web. |
Depuis SafeKit 7.5, par défaut, l'accès à la console web nécessite que l’utilisateur s’authentifie avec un nom et mot de passe. A l’installation de SafeKit, vous avez dû l’initialiser avec l’utilisateur admin et lui affecter un mot de passe. Ce nom admin, et ce mot de passe sont suffisants pour accéder à toutes les fonctionnalités de la console. Pour plus de détails sur cette configuration, voir 11.2.1 page 183.
Le navigateur web peut être lancé sur n’importe quelle station de
travail ou serveur ayant un accès réseau au(x) serveur(s) SafeKit et ayant l’autorisation
d’accès
Les réseaux, pare-feu et proxy doivent être configurés de manière
à permettre l’accès au réseau d’administration de tous les serveurs SafeKit
Le navigateur doit autoriser l’exécution de Javascript
La console web a été validée avec les navigateurs Microsoft Edge,
Firefox et Chrome. La console web fonctionne également sur des mobiles et
tablettes. Consulter le Release Notes disponible sur https://support.evidian.com/safekit
pour les versions de navigateurs supportées.
Pour éviter les pop-ups de sécurité avec Microsoft Edge, il faut ajouter
les adresses des serveurs SafeKit dans la zone des sites de confiance ou la
zone d’Intranet local du navigateur
Les messages dans la console sont affichés en anglais, français,
japonais en fonction de la configuration de la langue préférée du navigateur
(affichage en anglais si la langue n’est pas supportée). Les catalogues de
messages sont localisés sous SAFE/web/htdocs/jquery.lang/langpack/.
Après upgrade de SafeKit, il est nécessaire de vider le cache du
navigateur de façon à recharger la nouvelle console web.
Pour cela, vous pouvez utiliser un raccourci clavier qui fonctionne pour Microsoft
Edge, Firefox, et Chrome. Ouvrez le navigateur sur
n’importe quelle page web, et pressez en même temps les touches Ctrl, Shift et Suppr. Cela ouvre une fenêtre de
dialogue : cochez tous les items puis cliquez le bouton Nettoyer
maintenant ou Supprimer. Fermez le navigateur, arrêtez tous les processus du
navigateur qui continueraient à tourner en tâche de fond et relancez-le.
La console web de SafeKit offre la possibilité d’administrer un ou plusieurs clusters SafeKit. Un cluster SafeKit est un groupe de serveurs sur lesquels Safekit est installé et fonctionnel. Tous les serveurs appartenant à un cluster donné partagent la même configuration de cluster (liste des serveurs et réseaux utilisés) et communiquent entre eux afin d’avoir une vue globale des configurations des modules installés. Un même serveur ne peut appartenir à plusieurs clusters.
Pour administrer un cluster SafeKit, se connecter à l’URL : http://servername:9010 (servername est le nom ou l’adresse IP d’un des nœuds du cluster). Si HTTPS est configuré, il y a une redirection automatique sur https://servername:9453.

Les valeurs localhost et 127.0.0.1 pour servername ne sont pas autorisées. Si elles sont utilisées, il y aura une redirection vers une page qui vous demandera d’entrer une autre adresse ou nom pour le serveur.
Les composants de la console sont :
Panneau
Configuration
du cluster : définition des serveurs qui composent le cluster SafeKit
(voir section 3.2 page 37)
Onglet
Configuration : configuration et installation rapide
de modules sur le cluster (voir section 3.3 page
42)
Onglet
Contrôle : démarrage/arrêt des modules du cluster
(voir section 3.4 page 51)
Onglet
Supervision : supervision de l’état des modules du
cluster (voir section 3.6 page 56)
Onglet
Configuration Avancée : configuration et gestion
avancée des modules du cluster (voir section 3.7 page
57)
Panneau Inventaire des clusters.
Par défaut, il n’y a qu’un seul cluster, nommé cluster1,
administré depuis la console. Si vous souhaitez changer ce nom ou ajouter un
autre cluster, voir la section 3.10 page
68.
|
|
La console web offre des aides
contextuelles en cliquant sur l’icône |
La définition du cluster est un prérequis à toute installation et configuration de modules SafeKit.
Le cluster SafeKit est défini par un ensemble de réseaux et les adresses, sur ces réseaux, d’un groupe de serveurs SafeKit. Ces serveurs mettent en œuvre un ou plusieurs modules. Un serveur n’est pas obligatoirement connecté à tous les réseaux, mais tous les serveurs sont connectés à au moins un réseau : le réseau d’administration de la console web et du framework SafeKit.
Depuis le panneau de Configuration
du cluster, vous pouvez gérer sa configuration. Depuis les onglets
Contrôle et
Supervision, vous pouvez uniquement afficher la
configuration courante du cluster. Depuis les onglets
Configuration et
Configuration Avancée, vous pouvez éditer la
configuration et l’appliquer à tous les nœuds du cluster. La configuration du
cluster SafeKit est sauvegardée du côté des serveurs dans le fichier cluster.xml (voir section 12
page 231). Pour que le fonctionnement soit
correct, il est impératif que la configuration du cluster soit identique sur
tous les nœuds. Pour réappliquer la configuration sans la modifier, il faut
passer en mode d’édition Avancé puis cliquer
sur le bouton Appliquer.
|
|
Il est préférable de définir complètement tous les nœuds du cluster SafeKit avant de configurer les modules. En effet, la modification de la configuration du cluster SafeKit peut impacter la configuration et l’exécution des modules déjà installés. |
La configuration la plus simple d’un cluster SafeKit consiste à définir tous les nœuds du cluster et leur adresse sur un réseau. Pour visualiser ou configurer la liste des nœuds du cluster :
Cliquer sur l’onglet
Configuration ou
Configuration Avancée
Cliquer sur
Configuration
du cluster pour ouvrir le panneau de
configuration

(1) Cliquer sur le bouton Nouveau nœud pour
ajouter un nouveau serveur au cluster
(2) Saisir l’adresse IP du nœud, puis appuyer sur la touche
tabulation pour vérifier la disponibilité du serveur et l’insertion automatique
de son nom. Le protocole et le port utilisés sont les mêmes que ceux utilisés
pour dans l’URL de la page.
|
|
Ne pas mettre localhost ou 127.0.0.1 comme adresse. Le serveur sur lequel est connectée la console web SafeKit doit impérativement être inclus dans le cluster SafeKit. |
(3) Modifier le nom du nœud si besoin. Ce nom est celui qui sera
utilisé par le service d’administration de SafeKit pour identifier de manière
unique chaque nœud du cluster. C’est également le nom affiché dans la console
web.
Le champ nom est coloré en fonction de l’accessibilité du nœud.
|
La couleur verte signifie que le server SafeKit est disponible. |
|
La couleur rouge signifie que la console web n’a pas eu de réponse du serveur dans le délai imparti. Résoudre le problème, afin de pouvoir administrer ce nœud. Cela peut être dû à une mauvaise adresse, une défaillance du réseau ou du serveur, une mauvaise configuration du navigateur web ou du pare-feu, l’arrêt du service web SafeKit sur le nœud. Pour investiguer le problème, voir la section 7.1 page 113 |
(4) Cliquer sur le bouton – pour supprimer
un nœud du cluster SafeKit
|
|
Quand un nœud est supprimé du cluster, tous les modules installés sur ce nœud peuvent devenir inutilisables. |
(5) Une fois la configuration terminée, cliquer sur le bouton Appliquer pour
sauvegarder la nouvelle configuration et l’appliquer sur tous les nœuds.
Cliquer sur le bouton Recharger pour annuler les modifications et recharger la
configuration initiale. Le bouton Appliquer devient bleu Appliquer lorsqu’une modification a eu lieu et doit être
appliquée pour être prise en compte.
(6) Cliquer sur
Configuration
du cluster pour fermer le panneau de configuration
Avec le mode d’édition Simple, vous pouvez définir un seul réseau, celui sur lequel la console s’est connectée. Vous pouvez définir d’autres réseaux, pour la redondance des communications, en passant dans le mode d’édition Avancé. Le nom du nœud est utilisé pour retrouver les adresses IP du même serveur sur les différents réseaux. Le nom du réseau permet d’abstraire la topologie réseau et est utilisé pour configurer les réseaux utilisés par les modules.
Cliquer sur l’onglet
Configuration ou
Configuration Avancée
Cliquer sur
Configuration
du cluster pour ouvrir le panneau de configuration
Cocher le radio bouton Avancé
La partie Nœuds du cluster est
identique à celle dans le mode d’édition Simple
La partie Réseaux du cluster affiche
en premier le réseau sur lequel la console s’est connectée et en dessous les
réseaux supplémentaires

ü (1) Cliquer sur le bouton Nouveau réseau pour rajouter un réseau
ü (2) Entrer un nom convivial pour le réseau et définir les adresses IP des serveurs sur ce réseau. Le nom du réseau est utilisé pour configurer les réseaux utilisés par le module (voir section 3.3.2.2 page 47)
ü (3) Cocher ou décocher les cases pour définir le type du réseau :
ü Un réseau de type Framework est un réseau utilisé pour les communications au sein du cluster (communications globales au cluster et internes aux modules). Au moins un réseau de ce type doit inclure tous les nœuds du cluster.
ü Un réseau de type Console est un réseau sur lequel la console web peut se connecter pour communiquer avec les nœuds du cluster. Ce type de réseau doit obligatoirement inclure tous les nœuds qui composent le cluster SafeKit.
Dans certaines infrastructures, il peut être utile de définir un réseau exclusivement de type Console ou de type Framework.
ü (4) Cliquer sur le bouton – pour supprimer le réseau
|
|
Lorsqu’un réseau est supprimé, tous les modules configurés avec ce réseau doivent être arrêtés et reconfigurés. |
(5) Une fois la configuration terminée, cliquer sur le bouton Appliquer pour
sauvegarder la configuration et l’appliquer sur tous les nœuds. Cliquer sur le
bouton Recharger pour
annuler les modifications et recharger la configuration initiale. Le bouton Appliquer devient bleu Appliquer
lorsqu’une modification a eu lieu et doit être appliquée pour être prise
en compte.
Cliquer sur
Configuration
du cluster pour fermer le panneau de configuration
Les commandes en ligne équivalentes à l’assisant de configuration du cluster SafeKit sont listées ci-dessous. Remplacer node1 et node2 par le nom de vos nœuds tels que définis dans le fichier de configuration du cluster.
1. Se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes
2. Editer le fichier SAFEVAR/cluster/cluster.xml
SAFEVAR vaut C:\safekit\var en Windows quand %SYSTEMDRIVE%=C:, /var/safekit en Linux.
Le contenu du fichier est par exemple :
<?xml
version="1.0" encoding="utf-8"?>
<cluster>
<lans>
<lan name="default" console="on"
framework="on">
<node name="node1" addr="10.0.0.103"/>
<node name="node2" addr="10.0.0.104"/>
</lan>
<lan name="private" console="on"
framework="on">
<node name="node1" addr="10.1.0.103"/>
<node name="node2" addr="10.1.0.104"/>
</lan>
</lans>
</cluster>
3. Exécuter safekit cluster config
Pour appliquer localement la configuration du cluster décrite dans le fichier SAFEVAR/cluster/cluster.xml
4. Exécuter safekit -H "*" -G
Pour exporter la configuration locale sur tous les nœuds spécifiés dans cluster.xml
Pour plus de détails, voir la section 12 page 231.
Cet onglet permet, avec l’assistant de configuration, une installation et configuration rapide d’un nouveau module sur le cluster et ainsi que la reconfiguration rapide d’un module déjà installé.
L’assistant de configuration
permet de saisir uniquement les principaux paramètres de configuration du
module et d’éditer les scripts de démarrage/arrêt de l’application. Si vous
avez besoin d’affecter d’autres paramètres du fichier de configuration userconfig.xml ou d’une gestion avancée,
achevez la configuration rapide et allez à l’onglet
Configuration
Avancée (voir section 3.7.1 page 59).
|
|
Lors de la reconfiguration d’un
module installé, l’assistant de configuration
impose d’appliquer la configuration sur tous les nœuds du module. Si vous
souhaitez l’appliquer seulement à une sous-partie, utilisez plutôt l’assistant de configuration avancée disponible dans
l’onglet |
Dans l’onglet
Configuration

Installer
et configurer un nouveau module
Cliquer sur
pour ouvrir le panneau.
Pour chaque nœud du cluster SafeKit, sont affichés les modèles de modules stockés sur le serveur.

ü Modules génériques
Liste les modules génériques mirror.safe et farm.safe. Utiliser un module générique pour l'intégration d'une nouvelle application dans une architecture miroir ou ferme. Ces modules sont stockés sur le serveur administré dans le répertoire SAFE/Application_Modules/generic.
ü Modules applicatifs
Liste les modules applicatifs personnalisés pour une application métier donnée. Ces modules sont stockés sous SAFE/Application_Modules/demo (ce répertoire peut ne pas être présent lorsqu’il est vide).
ü Modules avancés
Liste les modules pour une intégration avancée. Ces modules sont stockés sous SAFE/Application_Modules/other.
ü Modules sauvegardés
Liste les modules stockés sous SAFE/Application_Modules/backup. Ce répertoire est utilisé pour sauvegarder la configuration d’un module désinstallé.
Une fois votre module construit et validé, vous pouvez le réutiliser
comme modèle de module accessible depuis l’onglet
Configuration en le copiant dans l’une de ces zones (voir
section 3.8 page 65).
Configurer
et surveiller les modules installés
Cliquer sur
pour ouvrir le panneau.
Ce panneau affiche l’état courant des modules installés (sous SAFE/modules) sur tous les serveurs définis dans le cluster SafeKit (voir section 3.2 page 37). Cette liste est vide après une première installation de SafeKit. Les modules installés peuvent être reconfigurés, pour changer des paramètres généraux par exemple, démarrés, arrêtés ou désinstallés.

Dans l’onglet
Configuration
Installer
et configurer un nouveau module
Cliquer sur le nom du modèle de module à configurer parmi les modules génériques, applicatifs, avancés ou sauvegardés. Saisir le nom du nouveau module puis cliquer sur le bouton Confirmer pour ouvrir l’assistant de configuration.
Pour un premier test de SafeKit, sélectionner le module générique mirror.safe ou farm.safe.
Configurer
et surveiller les modules installés
Pour un module déjà installé,
cliquer sur le bouton
(près du nom du module) pour
ouvrir le menu d’actions et choisir l’action
Editer la configuration. Vous devez ensuite
sélectionner le nœud à partir duquel vous souhaitez éditer la configuration (ce
nœud est nommé serveur source). Puis, cliquez sur le bouton Confirmer pour ouvrir l’assistant
de configuration. L’assistant permet l’édition des fichiers de
configuration du module qui sont stockés sur le nœud sélectionné.
L’assistant de configuration propose plusieurs étapes pour aider à la configuration rapide et à l’installation du module sur tous les nœuds qui l’implémentent. Il suffit de saisir les paramètres demandés, puis de cliquer sur le bouton pour passer à l’étape suivante.
L’assistant de configuration est le suivant (exemple pour la configuration d’un nouveau module à partir du modèle mirror.safe):

L'assistant vous guide à travers le processus de déploiement d'un module :
3.3.2.1 « Sélectionner les nœuds et réseaux du module »
page 45
Cet onglet permet de définir les serveurs sur lesquels le module est configuré ainsi que les réseaux de surveillance du module.
3.3.2.2 « Editer la configuration du module » page 47
Cet onglet permet de saisir uniquement les principaux paramètres de configuration du module.
3.3.2.3 « Appliquer la configuration du module » page 49
Cet onglet permet d’appliquer les changements de configuration pour être pris en compte. Il impose de l’appliquer sur tous les nœuds, sur lesquels le module doit être impérativement arrêté.
3.3.2.4 « Vérifier le résultat de la configuration » page 50
Cet onglet montre le résultat de l’application de la configuration effectuée dans l’étape précédente.
3.3.2.5 « Terminer » page 50
|
|
Si l’assistant est fermé avant d’avoir appliqué la configuration, celle-ci est interrompue. Mais si vous avez effectué des modifications dans les onglets précédents et les avez validées, celles-ci ont été sauvegardées sur le serveur source. Une fois que vous avez cliqué sur le bouton pour appliquer la configuration, celle-ci ne peut plus être interrompue ni annulée. |
Dans l’assistant de configuration
Onglet Sélectionner les nœuds et réseaux
Ce formulaire permet de sélectionner les nœuds du cluster SafeKit sur lesquels le module sera configuré ainsi que les réseaux utilisés par le module.
|
|
Pour des anciens modèles de module, le panneau de sélection des réseaux de surveillance n’est pas disponible. |

(1) Cocher la case pour sélectionner les nœuds qui implémentent
le module.
Le champ nom est coloré en fonction de l’accessibilité du nœud.
|
La couleur verte signifie que le serveur SafeKit est disponible. |
|
La couleur rouge signifie que la console web n’a pas eu de réponse du serveur dans le délai imparti. Dans cette situation, vous pouvez soit : ü Résoudre le problème, afin de pouvoir configurer ce nœud. Cela peut être dû à une mauvaise URL, une défaillance du réseau ou du serveur, une mauvaise configuration du navigateur web ou du pare-feu, l’arrêt du service web SafeKit sur le nœud ü Décocher la case pour ne pas configurer le nœud. ü Conserver le nœud coché (si vous pensez que le nœud est temporairement inaccessible). |
Ajouter éventuellement d’autres nœuds si nécessaire (2 nœuds pour
une architecture miroir, au moins 2 nœuds pour une architecture ferme). Cette
fonctionnalité est un raccourci pour la configuration du cluster SafeKit (voir
section 3.2 page 37).
(3) Cocher la case pour sélectionner les réseaux utilisés par le module.
Sélectionner au moins un réseau pour synchroniser les nœuds du module et
détecter leur défaillance. Il est cependant fortement recommandé de configurer
au moins 2 réseaux pour éviter le cas du split brain.
Le nom du réseau est celui utilisé dans l’onglet suivant pour configurer le module.
Ajouter un nouveau réseau de surveillance si nécessaire et le
sélectionner. Cette fonctionnalité est un raccourci pour la configuration du
cluster SafeKit (voir section 3.2 page 37).
(3) Cliquer sur le bouton Appliquer pour
sauvegarder les modifications et enchaîner sur l’étape suivante
|
|
La modification de la liste des nœuds ou des réseaux est équivalente à la modification de la configuration du cluster SafeKit. Dans ce cas, le bouton Appliquer sauvegarde et applique les changements sur tous les nœuds du cluster. |
Pour un premier test de SafeKit, suivre cette procédure afin de définir les nœuds et réseaux du module.
Ce formulaire permet de saisir uniquement les principaux
paramètres de configuration du module. Si vous avez besoin d’éditer le fichier
userconfig.xml ou d’effectuer
une configuration avancée, achevez la configuration et allez à l’onglet
Configuration Avancée (voir
section 3.7.1 page 59).
|
Notez que les réseaux sont affectés avec les noms de réseaux sélectionnés dans l’onglet précédent. Pour les modules antérieurs à SafeKit 7.2, vous devez entrer les adresses IP de chaque nœud.
|
|
Pour un premier test de SafeKit :
Appliquer cette procédure pour le module mirror ou farm
Se familiariser avec le contrôle et la supervision des modules
avant d’insérer les démarrage/arrêt de l’application dans les scripts.
Dans l’assistant de configuration
Onglet Appliquer la configuration

(1) Contrôler l’état du module sur les nœuds. S’il est « non
configuré », aller en (3)
(2) Si le module n’est pas dans l’état STOP (rouge), cliquer sur le bouton
pour arrêter le module et attendre
l’état STOP (rouge) sur tous les
nœuds avant d’aller en (3). La configuration ne sera possible que lorsque le
module sera arrêté sur tous les nœuds.
(3) Cliquer sur le bouton Appliquer pour
appliquer la configuration sur tous les nœuds.
La configuration peut prendre un certain temps pour s’exécuter sur tous les nœuds. Une fois terminée, l’onglet Vérifier le résultat est actif.
|
|
Si vous ne voulez l’appliquer sur tous les nœuds, utilisez
plutôt l’assistant de configuration avancée disponible
dans l’onglet |
|
|
Lors de la reconfiguration d’un module installé, le répertoire complet de configuration SAFE/modules/AM (où AM est le nom du module) est détruit et reconstruit à partir des modifications faites dans la console. Du côté serveur, fermer tous les éditeurs, explorateur de fichiers, shells ou cmd sous SAFE/modules/AM (au risque sinon que la configuration se passe mal) |
Dans l’assistant de configuration
Onglet Vérifier le résultat
Cet onglet est rouge si le déploiement a échoué sur au moins un nœud. Il est vert sinon.

(1) Lire le résultat du déploiement du chaque nœud :
ü succès : la configuration a réussi
ü erreur de connexion : cette erreur survient sur un échec de connexion avec le nœud. Une fois la connexion rétablie, vous pouvez retourner à l’onglet Appliquer la configuration pour retenter de configurer.
ü échec : cette erreur est affichée quand une des commandes exécutées lors de la configuration a échoué. Cliquer sur Résultat de la commande pour lire la sortie des commandes exécutées sur le nœud et rechercher l’erreur. Vous pouvez avoir à modifier les paramètres saisis ou à vous connecter au serveur afin de corriger le problème. Une fois l’erreur corrigée, retourner à l’onglet Appliquer la configuration pour réappliquer la configuration.
(2) Cliquer sur le bouton Suite ou
fermer la fenêtre pour quitter l’assistant de
configuration.
Dans l’assistant de configuration
Onglet Terminer
Cet onglet finalise l’assistant de configuration. Son principal intérêt est pour la première configuration et le premier démarrage d’un module miroir avec réplication de fichiers. Dans ce cas, il propose de choisir le serveur ayant les répertoires à jour et de le démarrer en primaire (voir section 5.3 page 101).
Les commandes en ligne équivalentes à l’assistant de configuration sont listées ci-dessous. Remplacer AM par le nom de votre module ; node1 et node2 par le nom de vos nœuds tels que définis lors de la configuration du cluster SafeKit.
1. Se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes
Se connecter par exemple sur node1
2. Exécuter safekit module install –m AM SAFE/Application_Modules/generic/mirror.safe
Pour installer un nouveau module nommé AM à partir du modèle mirror.safe
3. Editer la configuration du module et les scripts sous SAFE/modules/AM/conf et SAFE/modules/AM/bin
4. Exécuter safekit module genkey –m AM ou safekit module delkey –m AM
Pour créer ou détruire les clés d’encryption du module
5. Exécuter safekit -H "node1,node2" -E AM
Pour (ré)installer le module AM et appliquer sa configuration qui est stockée sur le nœud qui exécute cette commande (node1 dans cet exemple). Elle est appliquée sur tous les nœuds listés (node1 et node2).
Pour la description des commandes, voir la section 9.6 page 154.
Dans l’onglet
Contrôle
Par défaut, les modules pouvant être contrôlés sont tous les modules installés sur les nœuds du cluster SafeKit.
Pour chaque module, la console :
ü affiche son nom ainsi que celui du cluster sur lequel il est installé
ü affiche l’état courant du module sur tous les nœuds du cluster, où il est installé
ü permet d’exécuter une action globale (sur tous les nœuds du module) ou locale (uniquement sur un nœud)
ü affiche l’état détaillé du module sur le nœud sélectionné

(1) Cliquer sur un nœud pour visualiser l’état détaillé du module
sur ce nœud
Les nœuds affichés sont ceux sur lequel la configuration du module a été appliquée. Le nœud sélectionné est mis en évidence par une couleur bleue.
(2) Analyser le contenu du panneau bordé de la couleur bleues. Il
représente l’état détaillé du nœud sélectionné
ü sélectionner l’onglet
Ressources pour visualiser l’état courant des
ressources du module. Survoler avec le curseur le nom de la ressource pour
afficher son nom interne. L’état des ressources est contrôlé par la failover
machine pour provoquer des basculements en cas de défaillance (voir section 13.18 page 289).
Cliquer sur
pour afficher la valeur de la
ressource dans le temps. Cet historique peut être vide pour certaines ressources
(non affecté ou nettoyé).
|
|
Depuis SafeKit 7.5, la date affichée est la dernière date à laquelle la ressource a été affectée. Avant SafeKit 7.5, c'était la première fois que la ressource avait été affectée à la valeur courante. |
ü sélectionner l’onglet Journal du module pour lire le contenu du journal de SafeKit pour le module. Cocher ou décocher la case Journal détaillé pour afficher le journal complet (tous les messages y compris les messages de debug) ou non (seulement les messages I et E). Voir la section 7 page 113, pour une liste de messages démontrant un problème.
ü sélectionner l’onglet Journal applicatif pour lire les messages de sortie des scripts applicatifs. Ils sont sauvegardés sur le serveur dans le fichier SAFEVAR/modules/AM/userlog.ulog.
ü sélectionner l’onglet Journal des commandes pour afficher les commandes exécutées sur le nœud (commandes s’appliquant au module sélectionné ainsi que les commandes globales).
ü sélectionner l’onglet Informations pour contrôler les versions du serveur et de SafeKit, ainsi que pour vérifier la configuration du module. Il s’agit de la configuration active, c’est-à-dire la dernière configuration appliquée avec succès.
|
|
Depuis les onglets Journal du module, Journal
applicatif et Journal des commandes,
cliquer sur le bouton |
Si vous le souhaitez, cliquer sur l’icône
afin
d’afficher l’état détaillé dans une nouvelle fenêtre
(3) Cliquer sur le bouton
au niveau du
module. Cela ouvre un menu pour
Démarrer
ou
Arrêter
le module sur tous les nœuds
(4) Cliquer sur le bouton
au niveau d’un nœud.
Cela ouvre un menu qui contient toutes les actions exécutables sur le nœud. Cela
inclut les actions de
Démarrer
et
Arrêter
localement le module, ainsi que des commandes utiles au contrôle et à la
supervision du module, ainsi qu’au support.
Pour un premier test de SafeKit sur un module ferme :
|
|
|
Se référer aux sections listées ci-dessous :
Pour continuer les tests, voir section 4 page
73.
Pour comprendre et vérifier le bon fonctionnement d'un module
ferme, voir section 6 page 109
Pour le premier démarrage d’un module miroir, il ne faut pas utiliser le démarrage global du module. Il faut effectuer un démarrage individuel comme indiqué :
|
|
|
Se référer aux sections listées ci-dessous :
Pour le premier démarrage d’un module miroir, voir section 5.3
page 101
Pour le démarrage d’un module miroir avec les données à jour,
voir section 5.5 page 103
Pour continuer les tests, voir section 4 page
73.
Pour comprendre et vérifier le bon fonctionnement d'un module miroir,
voir section 5 page 99
Les commandes en ligne équivalentes au démarrage du module sont listées ci-dessous. Remplacer AM par le nom de votre module ; node1 et node2 par le nom de vos nœuds tels que définis lors de la configuration du cluster SafeKit.
Pour le démarrage global :
1. Se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes
Se connecter par exemple sur node1
2. Exécuter safekit -H "node1,node2" start -m AM
Pour démarrer le module AM sur tous les nœuds listés (node1 et node2). Un module miroir démarrera en primaire ou secondaire en fonction de son dernier état.
Pour le démarrage local :
1. Se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes
Se connecter par exemple sur node1
2. Exécuter safekit start -m AM ou safekit prim -m AM ou safekit second -m AM
Pour démarrer le module AM localement (cad node1).
Pour un module miroir, utiliser prim pour le forcer à démarrer primaire ; utiliser second pour le forcer à démarrer secondaire. Avec start, le module miroir démarrera en primaire ou secondaire en fonction de son dernier état.
Toutes les commandes de contrôle et surveillance d’un module sont décrite dans les sections 9.4 page 150 et 9.5 page 153.
Lorsque le problème n'est pas facilement identifiable, il est recommandé de prendre un snapshot du module sur tous les nœuds, comme décrit ci-dessous. Les snapshots permettent une analyse hors ligne et approfondie de l'état du module et du nœud, tel que décrit dans la section 7.16 page 127. Si cette analyse échoue, envoyez les snapshots au support comme décrit dans la section 8 page 137.
Dans l’onglet
Configuration,
Contrôle,
Supervision, ou
Configuration Avancée
Choisir le module et le nœud

ü (1) cliquer sur le
bouton
au niveau d’un nœud. Cela ouvre
un menu avec les actions exécutables sur le nœud.
ü (2) sélectionner Prendre un snapshot dans le sous-menu Support
ü La console Web s'appuie sur les paramètres de téléchargement du navigateur web pour sauvegarder le snapshot sur la station de travail.
Répéter cette opération sur tous les nœuds du module
Les commandes en ligne équivalentes au snapshot du module sont listées ci-dessous. Remplacer AM par le nom de votre module ; node1 et node2 par le nom de vos nœuds tels que définis lors de la configuration du cluster SafeKit.
3. se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes
se connecter par exemple sur node1
4. aller dans le répertoire SAFE
SAFE vaut C:\safekit en Windows quand %SYSTEMDRIVE%=C:, /opt/safekit en Linux
5. Exécuter safekit snapshot -m AM /tmp/snapshot_xx.zip
Pour sauvegarder le snapshot du module AM localement (cad sur node1) dans /tmp/snapshot_xx.zip.
Répéter ces commandes sur tous les nœuds du module
Pour plus de détail sur les commandes de support, voir la section 9.7 page 156.
Note :
Un dump crée un répertoire
dump_year_month_day_hour_mn_sec du
côté serveur sous SAFEVAR/snapshot/modules/AM
(où AM est le nom du module).
Le répertoire dump contient le journal
du module (verbeux et non verbeux) et des informations sur l'état du système et
des processus SafeKit au moment du dump
Un snapshot crée un dump puis récolte sous SAFEVAR/snapshot/modules/AM (où AM est
le nom du module) les 3 derniers dumps et les 3 dernières configurations du
module pour les mettre dans le fichier .zip
Par défaut, les modules surveillés sont tous les modules installés sur les nœuds du cluster SafeKit. Vous pouvez changer le format d’affichage des modules en fonction de vos besoins.
Pour chaque module :
L’état courant de l’instance du module sur tous les nœuds est
affiché
Une action globale (sur tous les nœuds du module) ou locale (uniquement
sur un nœud) peut être exécutée. Cliquer sur le bouton
pour
ouvrir le menu d’actions.

Pour plus d'information sur les changements d'état :
d’un module miroir, voir section 5.2 page 100
d’un module ferme, voir section 6.2 page 110
Dans l’onglet
Configuration Avancée
Il présente un onglet pour chaque nœud du cluster SafeKit. Cliquer sur un onglet pour changer de serveur.

Onglet du nœud
L’onglet d’un nœud offre un gestionnaire de modules et de fichiers, organisé en cinq zones.
|
|
Toutes les entrées listées dans
le panneau de gauche ouvrent un menu contextuel sur clic droit ou en cliquant
sur |

(a) Modules installés sur le
serveur sélectionné
Liste de tous les modules installés sur le serveur (stockés sous SAFE/modules du côté serveur). L’icône des modules est :
ü
(bleu) lorsque la
configuration du module n’est pas modifiée par rapport à la dernière
configuration appliquée
ü
(pourpre) lorsqu’au moins un
des fichiers de configuration du module a été modifié par rapport à la dernière
configuration appliquée. Dans ce cas, vous devez appliquer la nouvelle
configuration pour que les changements soient pris en compte.
ü
(gris) lorsqu’il est empaqueté
dans un fichier unique .safe
Vous pouvez parcourir et modifier le contenu du module pour la configuration avancée (voir section 3.7.1 page 59). Le clic droit sur un module propose un menu avec les opérations autorisées (appliquer la configuration, vérifier la configuration…). Le clic droit sur un fichier ou répertoire propose un menu avec les opérations courantes d’un gestionnaire de fichiers (copier, coller …). L’ouverture d’un répertoire s’effectue par simple clic.
Cliquer sur le nom du module pour activer le panneau de contrôle (b) sur le module.
(b) Panneau de contrôle d’un module installé sur le serveur
sélectionné
Il permet de contrôler le module
sélectionné et affiche l’état détaillé du module sur chaque nœud. Cela est similaire
à ce qui est fourni par l’onglet
Contrôle.
|
|
L’onglet Informations affiche le résumé de la configuration active du
module qui est la dernière configuration appliquée avec succès. Elle peut
être différente de celle présente sous Modules
installés si celle-ci a été modifiée sans être appliquée. Dans ce cas,
l’icône pour le module est |
(c) Dernières Configs d’un module
installé sur le serveur sélectionné
Pour chaque module, SafeKit conserve
une copie des trois dernières configurations réussies (stockées sous SAFE/modules/lastconfig du côté serveur). L’ensemble des fichiers de
configuration du module sont empaquetés dans un fichier
.safe,
dont le nom est du type AM_<date>_<heure>
(où AM est le nom du module).
Pour restaurer une ancienne configuration, clic droit sur le
.safe
et sélectionner l’opération
Restaurer la configuration. Cela ouvre l’assistant de configuration (décrit en 3.3.2 page 45) avec le contenu de la
configuration sauvegardée.
(d) Dossier Application_Modules sur le serveur sélectionné
Cette zone affiche le contenu du répertoire SAFE/Application_Modules sur le serveur sélectionné.
Elle sert de :
ü dépôt des modèles de modules (sous generic, demo et other)
ü zone de sauvegarde des modules (sous backup)
ü espace de travail pour la mise en œuvre de nouveaux modèles de modules
Pour copier les fichiers d’un module installé ou d’une ancienne configuration, faire un clic droit sur la source et choisir l’opération Sauvegarder dans Application_Modules.
(e) Journal des commandes du
serveur sélectionné
Cette zone affiche, en mode synthétique, le journal des commandes safekit exécutées sur le serveur (voir section 10.9 page 179).
Pour la configuration avancée, suivre les étapes suivantes :
3.7.1.1 « Editer les fichiers de configuration » page 59
3.7.1.2 « Appliquer la configuration » page 61
L’édition des fichiers de configuration est nécessaire quand vous avez besoin :
d’intégrer des options de configuration avancée dans le fichier userconfig.xml (décrit dans la section
13 page 237).
|
|
Dans le même userconfig.xml, vous ne devez pas utiliser à la fois la syntaxe SafeKit 7.1 et la syntaxe introduite avec SafeKit 7.2 pour la configuration des heartbeat et farm. |
éditer les scripts pour intégrer le démarrage/arrêt de votre
application (décrits dans la section 14 page 293).
Voir aussi les exemples dans la section 15 page 301.
Pour cela :
Dans l’onglet
Configuration Avancée
Onglet du nœud
Modules installés

(1) Parcourir le
module (contenu du
répertoire SAFE/modules/AM sur
le serveur, où AM est le nom du
module). Cliquer pour ouvrir les répertoires.
(2) Cliquer sur un fichier pour l’éditer. userconfig.xml est sous conf, et les scripts sont sous bin.
L’éditeur possède un mode syntaxique XML dédié au fichier userconfig.xml. Cliquer sur le radio bouton Texte /XML pour basculer du mode texte pur au mode XML intelligent. En mode XML :
ü cliquer sur le bouton Insérer active le mode insertion. Dans ce mode, les tags XML valides possibles apparaissent en caractères gras de couleur verte, tandis que les attributs supplémentaires possibles apparaissent en italique de couleur verte. Un clic sur ce type de tag ou d’attribut en insère une copie à l’endroit approprié.
ü cliquer sur le bouton Supprimer active le mode suppression. Dans ce mode, cliquer sur un tag ou un attribut supprime celui-ci du document. Lorsque la souris est positionnée sur un élément de ce type, la portion du document concernée par l’éventuelle suppression est affichée en rouge et rayée.
(3) Sauvegarder les modifications depuis l’éditeur sur le serveur
(4) Fermer la fenêtre de l’éditeur
Pour un premier test de SafeKit :
appliquer cette procédure au module mirror ou farm
ouvrir le fichier userconfig.xml
pour visualiser son contenu
ouvrir les scripts start et stop pour voir où insérer l’appel aux
procédures de démarrage et d'arrêt de l'application
|
|
|
L'assistant vous guide à travers le processus de configuration avancée d'un module. Il permet d’appliquer la configuration du module qui peut être modifiée en éditant directement les fichiers de configuration (décrit en 3.7.1.1 page 59).

3.7.2.1 « Sélectionner les nœuds » page 62
Cet onglet permet de sélectionner les nœuds sur lesquels appliquer la configuration. Appliquer la configuration sur un seul nœud dans un premier temps, peut être utile pour tester la nouvelle configuration sur ce nœud avant de l’appliquer aux autres nœuds.
3.7.2.2 « Appliquer la configuration sur les nœuds
sélectionnés » page 62
La configuration est appliquée uniquement sur les nœuds sélectionnés précédemment.
3.7.2.3 « Vérifier le résultat de la configuration » page 63
Cet onglet est activé après l’application de la configuration effectuée dans l’étape précédente.
Dans l’assistant de configuration
avancée
Onglet Sélectionner les nœuds

Par défaut, tous les nœuds du module sont sélectionnés.
(1) Cocher la case pour appliquer la configuration sur le
nœud ; la décocher pour ne pas l’appliquer.
Si nécessaire, changer la définition des nœuds du module de la même manière que cela est proposé dans l’assistant de configuration (décrit en 3.3.2.1 page 45)
(2) Cliquer sur le bouton Appliquer si
le formulaire a été modifié et enchaîner sur l’étape suivante
Dans l’assistant de configuration
avancée
Onglet Appliquer la configuration
Cet onglet est identique à celui de l’assistant de configuration (décrit en section 3.3.2.3 page 49) mais avec comme différences majeures :
ü seuls les nœuds sélectionnés dans l’onglet précédent sont affichés
ü lors du clic sur le bouton Appliquer, il n’y a pas de contrôle que le module est bien arrêté sur tous les nœuds. Cela implique que la configuration peut être appliquée alors que le module est démarré. Dans ce cas, il y a une tentative de faire une reconfiguration dynamique. Celle-ci réussit uniquement si :
§ le module est dans l’état ALONE (vert) ou WAIT (rouge)
§ seuls des paramètres autorisés à être reconfigurés dynamiquement ont été modifiés dans le fichier userconfig.xml (décrit en section 13 page 237)
|
|
Si vous ne souhaitez pas faire de reconfiguration dynamique, arrêter le module sur tous les nœuds avant de cliquer sur le bouton Appliquer. |
Dans l’assistant de configuration
Onglet Vérifier le résultat
Cet onglet est identique à celui de l’assistant de configuration (décrit en section 3.3.2.4 page 50).
Dans l’onglet
Configuration ou l’onglet
Configuration Avancée
|
|
|
Cela ouvre une fenêtre de dialogue qui permet de sélectionner les nœuds sur lesquels le module sera désinstallé.
|
|
|
Note :
avant désinstallation, fermer tous les éditeurs, explorateurs de
fichiers, shells ou cmd sous SAFE/modules/AM
et SAFEVAR/modules/AM (où AM est le nom du module) (au risque
sinon que la désinstallation du module ne se passe mal)
après désinstallation, le module désinstallé est stocké dans le
répertoire SAFE/Application_Modules/backup
du côté serveur
Les commandes en ligne équivalentes sont listées ci-dessous. Remplacer AM par le nom de votre module.
1. Se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes sur un des nœuds
2. Exécuter safekit deconfig –m AM
pour déconfigurer le module localement
3. Exécuter safekit module package –m AM SAFE/Application_Modules/backup/AM.safe
pour sauvegarder le module sous SAFE/Application_Modules/backup/AM.safe
4. Exécuter safekit module uninstall –m AM
pour désinstaller le module localement
Répéter toutes ces commandes sur l’autre nœud.
Vous pouvez avoir besoin de configurer un module présent sous Application_Modules, par exemple un modèle présent dans le répertoire demo, un module sauvegardé automatiquement (sous backup) ou manuellement. Pour cela :
Dans l’onglet
Configuration Avancée
Onglet du nœud
Dossier Application_Modules
Clic droit sur un
.safe, puis
Editer la configuration. Cela ouvre l’assistant de configuration (décrit en section 3.3.2 page 45). Cet assistant permet uniquement
une configuration basique du module. Si vous avez besoin d’une configuration
avancée, Dépaqueter le .safe, puis éditez
directement les fichiers de configuration dans l’arborescence du module.
Clic droit sur le
module dépaqueté, puis choisir
Appliquer la configuration qui
ouvre l’assistant de configuration avancée (décrit
en section 3.7.2 page 61)
Vous pouvez stocker un module externe dans la zone Application_Modules, afin de le déployer ultérieurement :
Dans l’onglet
Configuration Avancée
Onglet du nœud
Clic droit sur Dossier Application_Modules,
puis choisir Charger .safe depuis la station de
travail
Une fois votre module construit et validé, vous pouvez vouloir le réutiliser sur un nouveau site client. Pour cela, il faut d’abord créer le modèle de module depuis votre site de test, puis le déployer sur le nouveau site.
Dans l’onglet
Configuration Avancée
Onglet du nœud
|
|
|
|
|
|
Il faut à présent modifier les fichiers de configuration du module de manière à le rendre utilisable comme modèle :
Parcourir le répertoire appli
Editer le fichier conf/userconfig.xml afin de supprimer les
valeurs spécifiques à votre configuration. Cliquer sur le fichier pour ouvrir
l’éditeur.
Modifier les autres fichiers s’ils contiennent aussi des
paramètres spécifiques
De manière optionnelle, éditer le fichier web/index.html
pour modifier le formulaire affiché dans l’onglet Editer
la configuration de l’assistant de
configuration. Si le fichier index.html
n’existe pas, c’est l’édition du fichier de configuration userconfig.xml qui est proposée.
|
|
|
|
|
|
Après une nouvelle installation de SafeKit, vous pouvez
rendre accessible votre modèle de module depuis l’onglet
Configuration afin de le déployer sur le nouveau
serveur.
Copier manuellement le fichier appli.safe
sur le nouveau serveur SafeKit sous SAFE/Application_Modules/demo
(créer ce répertoire si nécessaire)
Ou
|
Choisir Charger .safe pour télécharger le .safe depuis
votre station de travail. Enfin déplacer le |
|
A la prochaine connexion de la console web sur le nouveau
serveur SafeKit (ou au rafraîchissement de la page), appli.safe sera visible dans l’onglet
Configuration.

Le modèle de module appli.safe peut être installé et configuré de la manière que les autres modèles de module (voir section 3.3 page 42).
SafeKit propose différentes politiques de sécurité pour la console web mises en œuvre en modifiant la configuration du service web SafeKit. Ces configurations offrent aussi une gestion de rôles :
|
Rôle Admin
|
Ce rôle accorde tous les droits d'administration en autorisant l’accès aux onglets :
|
|
Rôle Control |
Ce rôle accorde les droits de contrôle et de supervision en autorisant l’accès aux onglets :
|
|
Rôle Monitor |
Ce rôle accorde uniquement le droit de supervision en autorisant l’accès à l’onglet :
|
SafeKit fournit différentes configurations pour le service web afin de renforcer la sécurité de la console. Les configurations prédéfinies sont listées ci-dessous de la moins sécurisée à la plus sécurisée :
HTTP. Rôle identique pour tous les utilisateurs sans
authentification
Cette solution ne peut être mise en œuvre qu'en HTTP et est incompatible avec les méthodes d'authentification des utilisateurs.
HTTP/HTTPS avec authentification à base de fichiers et gestion de
rôles facultative
Elle repose sur le fichier Apache user.conf pour authentifier les utilisateurs et, optionnellement, restreindre leurs accès en fonction des rôles avec le fichier group.conf. La connexion à la console nécessite la saisie du nom et du mot de passe de l’utilisateur tels qu’ils ont été configurés avec les mécanismes d’Apache.
Depuis SafeKit 7.5, il s’agit de la configuration par défaut, en HTTP et initialisée avec un seul utilisateur admin ayant le rôle Admin. Cette configuration peut être étendue pour rajouter des utilisateurs ou passer en HTTPS.
HTTP/HTTPS avec authentification à base de serveur LDAP/AD.
Gestion de rôles facultative
Elle repose sur le serveur LDAP/AD pour authentifier les utilisateurs et, optionnellement, restreindre leurs accès en fonction des rôles. La connexion à la console nécessite la saisie de l’identifiant et du mot de passe de l’utilisateur tels qu’ils ont été configurés dans le serveur LDAP/AD. Elle peut être appliqué en HTTP ou HTTPS.
HTTPS avec authentification à base de certificat client et
gestion de rôles intégrée
Elle repose sur des certificats client pour authentifier les utilisateurs et leur assigner un rôle. La connexion à la console nécessite l’importation, dans le navigateur de l’utilisateur, du certificat client adéquat.
Pour les mettre en œuvre, se référer à la section 11 page 181. Voir ci-dessous pour une brève description.
Chaque entrée de l’inventaire correspond à un cluster SafeKit et pointe sur l’un des nœuds du cluster. Celui-ci est le serveur principal de connexion de la console web pour récupérer la configuration de ce cluster et l’administrer.
|
|
L’inventaire des clusters est sauvegardé dans le cache du navigateur web. Par conséquent, il doit être redéfini après vidage du cache ou sur changement de navigateur. |
Pour afficher l’inventaire, cliquer sur
afin d’ouvrir le menu, puis
sélectionner Inventaire des clusters. Appliquer
la même procédure pour ne plus l’afficher.

Cela affiche l’inventaire des clusters en haut de la page :

A la première connexion de la console web, le serveur de connexion est automatiquement ajouté dans l’inventaire avec cluster1 comme nom.
Dans l’Inventaire des clusters
Clic droit ou clic sur
d’une entrée
pour ouvrir le menu et éditer, supprimer ou ajouter une entrée de
l’inventaire

Vous pouvez éditer cluster1 ou ajouter une nouvelle entrée cluster2 :

Affecter le nom du cluster. Ce nom est affiché dans la console
web pour identifier le cluster en cours d’administration
Contrôler l’identité du serveur et son accessibilité
Cliquer sur Confirmer pour
ajouter/modifier le cluster dans l’inventaire
|
|
L’inventaire des clusters peut aussi être redéfini sous forme de chaîne de requête passée dans l’URL. Par exemple : http://172.24.199.107:9010/deploy.html?inventory=cluster1@172.24.199.107,cluster2@172.24.199.105 ouvre la console avec l’inventaire passé en argument. |
Dans l’Inventaire des clusters

(1) Clic sur le nom du cluster à administrer
(2) Le panneau d’administration du cluster sélectionné est
affiché avec toutes ses fonctionnalités
Dans l’Inventaire des clusters

(1) Clic sur l’entrée Inventaire des
clusters
(2) Le panneau d’administration de tous les clusters est restreint
mais unique
Depuis SafeKit 7.5, cette administration globale de tous les modules de tous les clusters est incompatible avec la configuration de l'authentification des utilisateurs à base de fichiers ou de serveur LDAP/AD. Cela signifie qu’elle est incompatible avec la configuration par défaut du service web SafeKit. Si vous avez besoin de cette fonctionnalité, changez la configuration par défaut pour la configuration non sécurisée ou la configuration sécurisée basée sur HTTPS et les certificats clients. Voir la section 11 page 181.
4.1 « Installation et tests après boot » page 73
4.2 « Tests d'un module miroir » page
76
4.3 « Tests d'un module ferme » page 83
4.4 « Tests des checkers communs à un miroir et une ferme »
page 90
|
Installation du package :
Windows :
|
|
Host : <hostname>
|
Voir aussi la section 10.4 page 166
|
Test du service safeadmin :
"Waiting for safeadmin .........."
Test du service safewebserver :
Test du service safeagent :
Test des modules :
|
|
|
|
"Reason of failover: remote stop"
"Script start_prim"
"Action shutdown called by SYSTEM"
"Script stop_prim"
"End of stop"
"Action start called at boot time"
|
|
<heart> Note : si vous voulez faire un test de double panne électrique simultanée sur les deux serveurs, vérifier que <rfs async="none"> est positionné dans userconfig.xml. Pour plus d'information, voir section 1.3.6 page 18 |
"Resource heartbeat.default set
to down by heart"
"Script start_prim"
"Action start called at boot time"
"Previous halt unexpected"
|
Voir les tests décrits en section 4.4 page 90.
|
Module ferme dans l’état userconfig.xml avec load balancing sur le service safewebserver (port TCP 9010) : <farm>
Sur un poste (ou un serveur) externe dans le même LAN, ping des 2 IP physiques + IP virtuelle + arp –a |
"Vitual IP <virtip of farm> set"
ping ip1.1; ping ip1.2; ping ip1.20; arp
–a
|
4.3.7.1 Prérequis réseauUne adresse MAC Ethernet unicast 5a-fe-xx-xx-xx-xx est associée à l'adresse virtuelle ip1.20 d'un module ferme. Elle n'est jamais présentée par les serveurs SafeKit en tant qu'adresse Ethernet source (MAC invisible). Les switchs ne peuvent donc pas localiser cette adresse. Lorsqu'ils font suivre un paquet à destination de l'adresse MAC 5a-fe-xx-xx-xx-xx, ils doivent broadcaster le paquet sur tous les ports du LAN ou VLAN où se situe l'adresse IP virtuelle (flooding). Et tous les serveurs de la ferme reçoivent donc les paquets à destination de l'adresse MAC virtuelle 5a-fe-xx-xx-xx-xx. Noter que ce prérequis n'existe pas pour un module miroir : voir section 4.2.6 page 78 4.3.7.2 Prérequis serveurLes paquets remontent dans les cartes Ethernet mises en mode promiscuous par SafeKit. Et les paquets sont filtrés par le module kernel <vip> suivant la bitmap de load balancing. Pour réaliser le test, il faut un outil de monitoring du réseau. Ex. monitoring réseau sur Linux :
|
Note : pour éviter les outils
de monitoring réseau, une console externe Linux peut être utilisée. Le ping
Linux permet de vérifier les paquets dupliqués revenant des 3 serveurs |
|
"Action shutdown called by SYSTEM"
"Script stop_both"
"End of stop"
"Action start called at boot time"
"Script start_both" |
Voir les tests décrits en section 4.4 page 90.
|
<errd> <proc name="appli.exe"
atleast="1"
|
Kill du processus "appli.exe" sur le serveur
"event atleast on proc
appli.exe"
message dans le log "Action start called automatically" Note : un stopstart sur Reproduire le test sur le même serveur s'il tourne
toujours l'application (i.e.
"Stopping loop" |
|
<tcp ident="id"
when="prim "> <failover>
|
Arrêter l'application qui écoute sur le port idport sur le
serveur dans un état
"Resource tcp.id set to down by
tcpcheck"
message dans le journal : "Action start called automatically" Note : un stopstart sur Reproduire le test sur le même serveur s'il tourne
toujours l'application (i.e.
"Stopping loop" |
|
<tcp ident="id"
when="pre"> <failover>
|
Arrêter le service TCP (ip.externe, idport) sur le serveur
dans un état
"Resource tcp.id set to down by tcpcheck"
Redémarrer le service TCP externe :
"Resource tcp.id set to up by
tcpcheck"
Note : un wait sur
Reproduire le test sur le même serveur
"Stopping loop" Note : ce test permet de tester la connectivité d'un
serveur à un service externe. Mais si le service externe est en panne ou s'il
est inatteignable sur tous les serveurs, tous les serveurs vont en |
|
<vip>
Règle de failover par défaut = wait
Note : ne pas utiliser check="on" sur des interfaces de bonding ou teaming car ces interfaces apportent leurs propres mécanismes de reprise d'interface à interface |
Retirer le câble Ethernet de la carte du réseau ip.0 sur
le serveur dans un état
"Resource intf.ip.default set to down by intfcheck" "Action wait from failover rule interface_failure" "Transition WAIT_TR from failover rule interface_failure"
Remettre le câble :
"Resource intf.ip.0 set to up by
intfcheck"
Note : un wait sur Reproduire le test sur le même serveur
"Stopping loop"
Note : Désactiver l’interface au lieu de débrancher
le cable réseau conduit à l’état |
|
<ping ident="id"
when="pre">
|
Rompre la liaison réseau entre le composant externe testé
et un serveur dans un état
"Resource ping.id set to down by
pingcheck"
Rétablir la liaison réseau :
"Resource ping.id set to up by pingcheck"
Note : un wait sur
Reproduire le test sur le même serveur
"Stopping loop" Note : ce test permet de tester la connectivité d'un
serveur au réseau. Mais si le composant externe est en panne et si le ping
échoue sur tous les serveurs, tous les serveurs vont en |
|
<custom ident="id"
when="pre"
Gestion de la ressource custom.id pour réaliser l'action :
sur erreur : SAFE/safekit set -r custom.id –v down –i customscript sur succès : SAFE/safekit set -r custom.id –v up –i customscript Dans userconfig.xml : <failover>
|
Provoquer l'erreur testée par le custom checker sur un
serveur dans un état
"Resource custom.id set to down by customscript"
Réparer l'erreur testée par le custom checker :
"Resource custom.id set to up by
customscript"
Note : un wait sur
Reproduire le test sur le même serveur :
"Stopping loop" |
|
<custom ident="id"
when="prim " exec="customscript" >
Gestion de la ressource custom.id pour réaliser l'action :
sur erreur : SAFE/safekit set -r custom.id –v down –i customscript sur succès : SAFE/safekit set -r custom.id –v up –i customscript
<failover> ou <failover>
|
Provoquer l'erreur testée par le custom checker sur le
serveur dans un état
"Resource custom.id set to down by customscript" "Action restart|stopstart from failover rule customid_failure" "Transition RESTART|STOPSTART from failover rule customid_failure"
message dans le journal : "Action start called automatically" Note : un stopstart sur Reproduire le test sur le même serveur s'il tourne
toujours l'application (i.e.
"Stopping loop" |
|
Dans userconfig.xml : <custom
ident="id" when="prim " exec="customscript"
>
Sur erreur, exécute restart ou stopstart
sur erreur : SAFE/safekit restart -i customscript ou SAFE/safekit stopstart -i customscript
|
Provoquer l'erreur testée par le custom checker sur le
serveur dans un état
"Action restart|stopstart called by customscript"
message dans le journal : "Action start called automatically" Note : un stopstart sur Reproduire le test sur le même serveur s'il tourne
toujours l'application (i.e.
"Stopping loop" Note : sur une action directe dans le custom checker, le compteur loop est incrémenté si –i identité est passé à la commande restart ou stopstart. Sans identité, SafeKit considère qu'il s'agit d'une opération d'administration. Le compteur est remis à 0 et il n'y a pas de stop au bout de 4 redémarrages. |
5.1 « Mode de fonctionnement d'un module miroir » page 99
5.2 « Automate d'état d'un module miroir (STOP, WAIT,
ALONE, PRIM, SECOND
- rouge, magenta, vert) » page 100
5.3 « Premier démarrage d'un module miroir (commande prim) »
page 101
5.4 « Différents cas de réintégration (utilisation des
bitmaps) » page 102
5.5 « Démarrage d'un module miroir avec les données à jour (
STOP
(rouge) -
WAIT
(rouge)) » page 103
5.6 « Mode de réplication dégradé (
ALONE (vert) dégradé) » page 105
5.7 « Reprise automatique ou manuelle
(failover="off" -
STOP
(rouge) -
WAIT
(rouge)) » page
106
5.8 « Serveur primaire par défaut (swap automatique après
réintégration) » page 107
5.9 « La commande prim échoue : pourquoi ? (commande
primforce) » page 108
|
Pour tester un module miroir, voir section 4.2 page 76 |
|
|
(vert) (vert) ip 1.1 ip 1.2
|
virtual ip= ip 1.10 miroir(app1)= app1 files1 files1 |
|
ip 1.1 ip 1.2
|
virtual ip= ip 1.10 miroir(app1)= défaillance app1 files1 files1 |
|
ip 1.1 ip 1.2
|
virtual ip= ip 1.10 miroir(app1)= app1 files1 files1
|
|
Pour analyser un problème, voir section 7 page 113 |
primaire et avant de devenir secondaire
|
|
Au premier démarrage d'un module miroir, si les
deux serveurs sont démarrés avec la commande start,
ils se bloquent tous les deux dans l’état Au premier démarrage, il faut utiliser la commande prim pour démarrer en primaire le serveur avec les répertoires à jour, afin de les synchroniser sur l’autre serveur. Ce dernier est démarré avec la commande second. Aux démarrages suivants, utiliser la commande start pour démarrer les serveurs. |
|
|
1. état initial
|
(rouge) (rouge) à jour vide |
|
2. commande prim sur serveur 1
"Action prim called by web@<IP>/SYSTEM/root" |
(vert) (rouge) à jour vide |
|
3. commande second sur le serveur 2
"Action second called by web@<IP>/SYSTEM/root" |
(vert) (vert) à jour à jour |
|
Pour optimiser la réintégration de fichiers, il y a plusieurs cas de figure : 1. Le module doit avoir effectué une réintégration (au premier démarrage du module la réintégration est complète) avant d’activer la gestion des bitmaps de modification 2. Si le module a été proprement arrêté sur le serveur, alors au redémarrage du secondaire, seules les zones modifiées à l'intérieur des fichiers sont réintégrées suivant les bitmaps de modification 3. Si le serveur a crashé (power off), ou a été incorrectement arrêté (exception du processus de réplication nfsbox), ou si les fichiers ont été modifiés pendant l’arrêt de SafeKit, les bitmaps de modification ne sont pas sûres et elles ne sont donc pas utilisées. Tous les fichiers qui ont été modifiés pendant et avant l'arrêt suivant une période de grâce (typiquement une heure) sont réintégrés 4. Un appel à la commande spéciale second fullsync provoque une réintégration complète de tous les répertoires répliqués sur la secondaire quand elle est redémarrée. |
|
|
1. le serveur2 secondaire a été arrêté
|
(vert) (rouge) à jour non à jour |
|
2. commande start sur le serveur 2
|
(vert) (magenta) à jour à jour |
|
3. fin de la réintégration
|
(vert) (vert) à jour à jour |
Le système de réplication maintient en plus sur chaque nœud
la dernière date à laquelle les données étaient synchronisées. Cette date de
synchronisation, nommée synctimestamp,
est affectée à l’issue de la réintégration et évolue dans l’état
PRIM (vert) et
SECOND (vert). Quand le module est
arrêté sur le nœud secondaire puis redémarré, la date de synchronisation est un
des critères de réintégration : tous les fichiers modifiés autour de cette
date sont potentiellement non à jour sur la secondaire et doivent être
réintégrés. Depuis SafeKit 7.4.0.50, la date de synchronisation est aussi exploitée
pour implémenter une sécurité supplémentaire. Lorsque l’écart entre la date de
synchronisation stockée sur la primaire et celle stockée sur la secondaire est
supérieur à 90 secondes, les données répliquées sont considérées non
synchronisées dans leur globalité. La réintégration est interrompue avec le
message suivant dans le journal du module :
| 2021-08-06 08:40:20.909224 | reintegre | E | La synchronisation automatique ne peut être appliquée en raison d'un delta trop important entre les dates de dernière synchronisation
Si l’administrateur considère que le serveur est valide, il peut forcer le démarrage en secondaire avec synchronisation complète des données, en exécutant la commande : safekit second fullsync -m AM
|
SafeKit choisit quel serveur doit démarrer en tant que primaire. Pour cela, il retient le serveur avec les répertoires répliqués à jour. Pour profiter de cette fonctionnalité, utiliser la commande start et NON la commande prim. |
|
|
1. état initial
|
(vert) (rouge) à jour non à jour |
|
2. commande stop sur le serveur 1
|
(rouge) (rouge) à jour non à jour |
|
3. commande start sur le serveur 2
"Potentially
not uptodate data for replicated directories (wait for the start of the
remote server)"
|
(rouge) (rouge) à jour non à jour rfs.uptodate = down |
|
Voir aussi la section 5.9 page 108 |
|
|
Si le processus de réplication nfsbox connait une défaillance sur la machine primaire (liée par exemple à une mauvaise configuration de la réplication de fichiers), l'application n'est pas basculée inutilement sur le serveur secondaire Le serveur primaire va dans l'état ALONE et dans un mode de réplication
dégradé. Cet état dégradé est affiché dans la console
web/ Le serveur primaire continue en ALONE avec un processus nfsbox qui ne réplique plus Il faut arrêter et redémarrer le serveur ALONE pour revenir dans la situation PRIM – SECOND avec réplication |
|
|
1. état initial
|
(vert) (vert) |
|
2. défaillance du processus de réplication nfsbox sur le serveur 1
"Action wait from failover rule degraded_server" et avec rfs.uptodate=down |
(vert) (rouge) rfs.degraded=up rfs.uptodate=down |
|
3. retour à la réplication
|
(vert) (vert) |
|
La reprise automatique ou manuelle sur le serveur secondaire est définie dans userconfig.xml par <service mode="mirror" failover="on"|"off">. Par défaut, si la valeur n'est pas définie, failover="on" Le mode failover="off" est utile lorsque l'on veut contrôler le basculement par un administrateur. Ce mode assure qu'une application tourne toujours sur le même serveur primaire quel que soit les opérations sur ce serveur (reboot, arrêt temporaire du module pour maintenance...). Seule une commande d'un administrateur (commande prim) peut mettre l'autre serveur en primaire |
|
|
1. état initial
|
(vert) (vert) |
|
2. redémarrage avec failover="on"
|
(rouge) (vert) |
|
3. fonctionnement avec failover="off"
"Failover-off configured"
|
(rouge) (rouge) |
|
Voir aussi la section 5.9 page 108 |
|
|
A la réintégration après panne, un serveur redevient par défaut secondaire. L'administrateur peut choisir de ramener l'application sur le serveur réintégré à un moment opportun avec la commande swap. C'est le comportement par défaut lorsque dans userconfig.xml <service> est défini sans la variable defaultprim Si l'on veut que l'application revienne automatiquement sur le serveur juste après sa réintégration, il faut configurer dans userconfig.xml <service mode="mirror" defaultprim="hostname serveur 1"> |
|
|
1. état initial
|
(rouge) (vert) |
|
2. réintégration sans defaultprim
|
(vert) (vert) |
|
3. réintégration avec defaultprim="hostname serveur 1"
"Transition SWAP from
defaultprim"
|
(vert) (vert) |
6.1 « Mode de fonctionnement d'un module ferme » page 109
6.2 « Automate d'état d'un module ferme (STOP, WAIT,
UP - rouge, magenta, vert) »
page 110
6.3 « Démarrage d'un module ferme » page 111
|
Pour tester un module ferme, voir section 4.3 page 83. |
|
|
ip 1.1 ip 1.2 ip 1.3
|
virtual ip= ip 1.20 ip 1.20 ip 1.20 ferme(app2)= app2 app2 app2 |
|
ip 1.1 ip 1.2 ip1.3
|
virtual ip= ip 1.20 ip 1.20 ferme(app2)= app2 app2 |
|
ip 1.1 ip 1.2 ip1.3
|
virtual ip= ip 1.20 ip 1.20 ip 1.20 ferme(app2)= app2 app2 app2 |
|
Pour analyser un problème, voir section 7 page 113 |
|
|
Note : C'est aussi l'automate d'un
module de type light. Un module de type light se repère par <service
mode="light"> dans le fichier userconfig.xml
du module sous SAFE/modules/AM/conf
(où AM est le nom du module). Le type light correspond à un module s'exécutant
sur un serveur sans synchronisation avec d'autres serveurs (comme peuvent le
faire des modules miroir ou ferme). Un module light intègre les procédures de
démarrage et d'arrêt d'une application ainsi que les checkers SafeKit qui
permettent de détecter des erreurs.
|
Il n'y a pas de procédure spéciale pour démarrer un module ferme : utiliser seulement la commande start sur tous les serveurs exécutant le module. Ci-dessous un exemple avec une ferme de 2 serveurs. |
|
|
1. état initial
|
(rouge) (rouge) |
|
2. commande start sur le serveur 1 et le serveur 2
"farm membership: node1 node2 (group FarmProto)"
|
(vert) (vert) |
7.1 « Problème de connexion avec la console web » page 113
7.2 « Problème de connexion HTTPS avec la console web »
page 115
7.3 « Comment lire les journaux du module ? » page 118
7.4 « Comment lire le journal de commandes du serveur ? »
page 119
7.5 « Module stable
(vert) et
(vert) » page 119
7.6 « Module dégradé
(vert) et
(rouge) » page 119
7.7 « Module hors service
(rouge) et
(rouge) » page 120
7.8 « Module
STOP (rouge) : redémarrer le module »
page 120
7.9 « Module
WAIT (rouge) : réparer la
ressource="down" » page 121
7.10 « Module oscillant de
(vert) à
(magenta) »
page 122
7.11 « Message sur stop après maxloop » page 123
7.12 « Module
(vert) mais
application non opérationnelle » page 124
7.13 « Module mirror
ALONE (vert) /
WAIT ou STOP
(rouge) » page 125
7.14 « Module ferme
UP (vert) mais problème de load
balancing » page 126
7.15 « Problème après boot » page 126
7.16 « Analyse à partir des snapshots du module » page 127
7.17 « Problème avec la taille des bases de données de
SafeKit » page 130
7.18 « Problème pour récupérer depuis votre PKI le
certificat de l'autorité de certification » page 131
7.19 « Problème persistant » page 136
Si vous rencontrez des problèmes de connexion avec la console web, tels que pas de réponse du nœud ou erreur de connexion, appliquez les contrôles et procédures ci-dessous :
|
|
Ensuite, il peut être nécessaire de recharger la console dans le navigateur.
Vérifiez pour le navigateur web :
ü que le navigateur et sa version sont bien supportés (dans certains environnements, Chrome fonctionne mieux qu’Internet Explorer)
ü modifiez le paramétrage du proxy pour définir une connexion directe ou indirecte au serveur
ü pour Internet Explorer, modifiez les paramètres de sécurité (ajoutez l'url dans les zones de sécurité)
ü sur évolution de version de SafeKit, nettoyez le cache du navigateur comme décrit plus loin
ü que la console web et le serveur ont la même version (la compatibilité peut ne pas être préservée)
Pour supprimer l’état du navigateur :
1. Videz son cache
Ouvrir le navigateur sur n’importe quelle page web, et presser en même temps les touches Ctrl, Shift et Suppr. Cela ouvre une fenêtre de dialogue : cocher tous les items puis cliquez le bouton Nettoyer maintenant ou Supprimer
2. Videz le cache SSL si la console se connecte en HTTPS
Dans les paramètres avancés du navigateur, rechercher le cache SSL et le vider
Fermez le navigateur, arrêtez tous les processus du navigateur qui continueraient à tourner en tâche de fond et relancez-le.
Vérifiez sur chaque nœud du cluster SafeKit :
ü le pare-feu
Si cela n’a pas encore été fait, exécutez la commande SAFE/bin/firewallcfg add qui configure le pare-feu du système d’exploitation. Pour les autres pares-feux, ajoutez des exceptions pour autoriser les connexions entre le navigateur web et le serveur. Pour les détails de configuration du pare-feu, voir la section 10.3 page 160.
ü la configuration du service web
Depuis SafeKit 7.5, l'accès à la console web nécessite une authentification. Si cela n’a pas encore été fait, exécutez la commande SAFE/bin/webservercfg -passwd pwd pour initialiser (ou réinitialiser) cette configuration avec le mot de passe de l’utilisateur admin. Pour plus de détails, voir 11.2.1 page 183.
ü la disponibilité du réseau et du serveur
ü les services safeadmin et safewebserver
Ils doivent être démarrés
ü la configuration du cluster
Exécutez la commande safekit cluster confinfo (voir section 9.3 page 148). Elle doit retourner sur tous les nœuds, la même liste de nœuds et la même signature de configuration. Si ce n’est pas le cas, réappliquez la configuration du cluster sur tous les nœuds (voir section 12.2 page 235)
Si vous rencontrez des problèmes de connexion avec la console web en HTTPS, appliquez les contrôles et procédures ci-dessous :
|
|
La console web se connecte à un nœud du cluster identifié par un certificat. Pour obtenir le contenu du certificat associé au nœud, exécutez les opérations suivantes si vous utilisez Edge ou Chrome :
|
1. Cliquez sur le verrou affiché à côté de l’URL pour ouvrir la fenêtre de sécurité 2. Cliquez sur le lien View certificates. Cela ouvre une fenêtre qui affiche le contenu du certificat |
|
|
3. Vérifiez l'identité de l’émetteur qui doit être votre autorité de certification 4. Vérifiez la date de validité et la date de station de travail. Remettre la station à la bonne date si nécessaire 5. Vérifiez la date de validité. Si le certificat a expiré, vous devez le renouveler |
|
|
6. Cliquez sur l’onglet Détails 7. Sélectionnez le champ Autre nom de l’objet. Son contenu est affiché dans le panneau inférieur. Le nom défini dans l'URL pour la connexion à la console web SafeKit doit être inclus dans cette liste. Changer l'URL si nécessaire 8. localhost et 127.0.0.1 doivent être inclus 9. La valeur de l’attribut adress pour le serveur, telle que définie dans la configuration du cluster SafeKit, doit être incluse dans cette liste. Si ce n’est pas le cas, modifiez la configuration du cluster comme cela est décrit en 12.2 page 235. Si vous utilisez le nom DNS, vous devez mettre le nom en minuscules.
|
|
Vous pouvez utiliser la commande checkcert pour contrôler les certificats.
Sur chaque nœud du cluster SafeKit :
1. Se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes
2. Aller dans le répertoire SAFE/web/bin
3. Exécuter checkcert -t all
La commande contrôle tous les certificats installés et échoue si une erreur est détectée
4. Exécuter la commande suivante pour vérifier que le certificat serveur contient bien un nom DNS ou une adresse IP donné :
checkcert -h ”DNS name value”
checkcert -i ”Numeric IP address value”
|
|
Le certificat de serveur doit contenir tous les noms DNS et/ou adresses IP utilisés pour la connexion HTTPS. Ceux-ci doivent également être inclus dans le fichier de configuration du cluster SafeKit. |
Quand l’authentification par certificat client est activée, le certificat de l'autorité de certification et le certificat client pour la console doivent avoir été importés dans le magasin de certificats de la station de travail de l’utilisateur. Vérifiez qu’ils sont bien présents dans les magasins attendus. Ci-dessous la procédure pour une station de travail Windows :
1. Connectez-vous sur la station de travail depuis laquelle l’utilisateur lance la console
2. Ouvrez une console PowerShell
3. Exécutez certmgr
4. Allez dans le magasin Certificats - Utilisateur actuel\Personnel\Certificats
Il doit contenir le certificat de l’utilisateur pour la console web

Si le certificat ne se trouve pas dans le magasin approprié, supprimez-le du magasin et réimportez-le comme décrit en section 11.4.3.4 page 205.
5. Allez dans le magasin Certificats - Utilisateur actuel\Autorité de certification racines de confiance\Certificats
Il doit contenir le certificat de l'Autorité de Certification utilisée pour générer le certificat client

Si le certificat ne se trouve pas dans le magasin approprié, supprimez-le du magasin et réimportez-le comme décrit en section 11.4.3.5 page 206.
Vous devrez également vider le cache du navigateur comme décrit en section 7.1.2 page 114.
Si le problème ne peut être résolu, vous pouvez revenir à la configuration HTTP (SAFE=C:\safekit en Windows si System Drive=C: ; et SAFE=/opt/safekit en Linux):
|
|
Sur S1 et S2 :
|
|
|
Sur S1 et S2 :
|
Vous devrez également vider le cache du navigateur comme décrit en section 7.1.2 page 114.
|
Le journal du module peut être consulté avec :
Avec le log, vous pouvez comprendre pourquoi un module
n'est plus dans état stable N'oubliez pas de regarder les messages de sortie de
l'application dans la console web / Noter qu'un module peut quitter son état stable |
"Action
start called by web@<IP>/SYSTEM/root" web@<ip>: via
la console
|
|
Il existe un journal des commandes exécutées sur le serveur Safekit. Le journal des commandes peut être consulté avec :
Pour plus de détails, voir section 10.9 page 179. |
|
Un module miroir dégradé est dans l'état Un module ferme dégradé est dans l'état Dans le cas dégradé, il n'y a pas de procédure d'urgence à
mettre en œuvre. L'analyse de l'état
|
|
Un module miroir ou ferme hors service est dans l'état
|
|
Pour redémarrer le module arrêté (module nommé AM) :
Et regarder les résultats du démarrage dans le journal du module et dans l'application log:
|
|
Si le module est dans l'état Vous devez réparer la ressource mise à "down". Pour déterminer la ressource à réparer, utiliser les messages du journal :
Notes : Un checker de type wait est à l'origine de l'état Le checker est actif sur tous les serveurs L'action du checker sur erreur est de positionner une ressource à down Une règle de failover sur ressource down exécute l'action stopwait Le module est mis localement dans l'état Le module sort de l'état |
Messages des checkers wait :
"Potentially not uptodate data for replicated directories (wait for
the start of the remote server)"
"Resource intf.ip.0
set to down by intfcheck"
"Resource
ping.id set to down by pingcheck"
"Resource
module.othermodule_ip set to down by modulecheck"
"Resource tcp.id set to down by
tcpcheck"
"Resource
custom.id set to down by customscript"
… "Action wait from failover rule splitbrain_failure" Fichiers non à jour localement à cause du split brain : voir section 13.17 page 288 |
|
Si un module oscille de l'état Par défaut, au 4ième redémarrage infructueux
sur un serveur, le module s'arrête sur le serveur en Utiliser les logs SafeKit pour savoir quel checker est à l'origine de l'oscillation :
Notes : Un checker restart ou stopstart checker est défini dans userconfig.xml par when="prim"|"both" (miroir|ferme) when="prim":
checker démarré sur le serveur when="both":
checker démarré sur tous les serveurs L'action du checker sur erreur est d'exécuter un restart ou
stopstart du module. stopstart
sur Le module est dans l'état Après plusieurs oscillations, le module s'arrête avec le message "Stopping loop" dans le journal SafeKit : voir section 7.11 page 123 |
Messages des checkers restart ou stopstart :
"event atleast on proc appli.exe"
"Resource tcp.id set to down by
tcpcheck"
"Resource custom.id set to down by customscript" ou "Action restart|stopstart called by customscript" |
|
Si un serveur présente un état
Dans le cas d'une application non opérationnelle,
appliquer un restart sur le module
Si cette procédure ne fonctionne pas, appliquer un
stopstart sur le module
|
|
Si un module miroir reste dans l’état
Vérifier la configuration réseau
Voir section 10.3 page 160
Afin de communiquer entre eux, les nœuds doivent appartenir au même cluster SafeKit et avoir la même configuration (voir section 12 page 231). ü La console web émet un message d’avertissement si les nœuds du cluster n’ont pas la même configuration ü La commande en ligne : safekit cluster confinfo exécutée sur n’importe quel nœud du cluster doit reporter des signatures de configuration de cluster identiques pour tous les nœuds (voir section 9.3 page 148) Si la configuration du cluster SafeKit
n’est pas identique, il faut réappliquer la configuration sur tous les nœuds (console web/
Quand la cryptographie est activée
pour le module (la ressource encryption
est « on » sous console web/ Afin de distribuer des clés
identiques, il faut réappliquer la configuration du module sur tous les nœuds
(console web/ Pour plus de détails, voir la section 10.5 page 167
Dans SafeKit <= 7.4.0.31, la clé de chiffrement des communications a une durée de validité de 1 an. Quand celle-ci expire dans un module miroir avec la réplication de fichiers, la réintégration sur le secondaire échoue et le module s’arrête avec le message d’erreur suivant dans le journal : reintegre | D | XXX clnttcp_create: socket=7 TLS handshake failed Dans SafeKit > 7.4.0.31, le message est : reintegre | D | XXX clnttcp_create: socket=7 TLS handshake failed. Check server time and module certificate (expiration date, hash) Pour résoudre ce problème, voir la section 10.5.3.1 page 169. |
|
Bien que tous les serveurs de la ferme soient 7.14.1 Non cohérence des parts de la charge réseauDans un module ferme, la somme des parts de la charge réseau
des nœuds Si ce n’est pas le cas, il est très probable qu’il sagisse d’un problème de communication entre nœuds. Les causes probables sont les mêmes que pour un module mirroir, aussi voir la section 7.13 page 125 pour d’éventuelles solutions. Voir aussi la section 4.3.6 page 87. 7.14.2 L'adresse IP virtuelle ne répond pas correctementSi l'adresse IP virtuelle ne répond pas correctement à toutes les demandes de connexions :
·
soit dans la console web/ · ou avec la commande safekit stop –m AM (où AM est le nom du module)
Pour une analyse plus fine sur ce sujet, voir :
|
|
Si vous rencontrez un problème après le boot, voir section 4.1 page 73. Notez que par défaut, les modules ne sont pas automatiquement démarrés au boot. Pour cela, vous devez configurer le démarrage au boot :
ou
|
Lorsque le problème n'est pas facilement identifiable, il est recommandé de prendre un snapshot du module sur tous les nœuds comme décrit dans la section 3.5 page 55. Un snapshot est un fichier zip qui rassemble, pour un module, les fichiers de configuration, les dumps, .... Son contenu permet une analyse hors ligne et approfondie de l'état du module et du nœud.
|
|
La structure et le contenu du snapshot varie en fonction de la version de SafeKit. |
Depuis SafeKit 7.5, la structure du snapshot est la suivante :
|
|
snapshot pour le module AM récupéré depuis le nœud nodename |
|
|
Nom du module |
|
|
Les 3 dernières configurations du module, y compris la courante |
|
|
les 3 derniers dump du module, y compris le dernier |
|
|
|
Les fichiers de configuration du module sont sauvegardés comme suit :
|
|
Le répertoire module contient les fichiers de configuration de l’utilisateur :
scripts start_xx, stop_xx, …
Fichier de configuration XML userconfig.xml |
Vérifier le fichier de configuration XML et les scripts pour résoudre
les problèmes d'intégration de l'application dans SafeKit
Le dump contient l'état du module et du nœud SafeKit tel qu'il était au moment du dump.
|
|
Journaux et états dans le format csv
Licences SafeKit sauvegardées depuis le répertoire SAFE/conf
Copie d’une partie du répertoire SAFEVAR
Fichiers de configuration du service web, copiés depuis le répertoire SAFE/web/conf |
|
|
|
|
|
|
|
|
Diverses informations sur le nœud (liste et état des modules installés, version du système d'exploitation, configuration des disques et du réseau, etc.) |
|
ou
|
En Linux, last.txt et systemevt.txt ou En Windows, applicationevt.txt et systemevt.txt |
|
|
|
|
|
|
Vérifier le(s) fichier(s) de licence dans le répertoire licenses pour résoudre des problèmes
concernant le contrôle de licence SafeKit
Vérifier les fichiers de configuration Apache dans le répertoire web pour résoudre des problèmes
concernant le service web SafeKit
Vérifiez les logs du module, log.txt
et logverbose.txt, pour résoudre
des problèmes concernant le comportement du module
Vérifier le journal des scripts utilisateur userlog.ulog pour résoudre des
problèmes concernant le démarrage/arrêt de l'application
Si nécessaire, consulter le fichier heartplug pour obtenir des informations sur le nœud et
rechercher dans les journaux du système les événements qui se sont produits en
même temps que le problème analysé
Consulter le journal des commandes commandlog.txt
pour résoudre des problèmes concernant la gestion du cluster SafeKit ou les
commandes distribuées
Le répertoire var est principalement destiné au support de niveau 3. Il s'agit d'une copie d'une partie du répertoire SAFEVAR. Dans le répertoire var/cluster :
Consulter le fichier cluster.xml
pour vérifier la configuration du cluster
Consulter le fichier cluster_ip.xml
pour résolution des noms DNS contenus dans la configuration du cluster
Depuis SafeKit 7.5, les journaux et états sont aussi exportés au format csv, dans le répertoire csv :
|
|
|
|
|
Journal verbeux Journal applicatif Etat des ressources Historique de l’état des ressources |
|
|
Journal des commandes Liste des modules installés Pour le support niveau 3 Pour le support niveau 3 |
Importer les fichiers csv dans Excel pour simplifier leur analyse
Pour importer un fichier :
ü Créer un nouveau classeur
ü Depuis l’onglet Données, importer A partir d’un fichier text/CSV

ü Dans la boîte de dialogue, localiser et double-cliquer sur le fichier csv à importer, puis cliquez sur Importer
ü Puis cliquer sur Charger

Vous pouvez utiliser les fonctionnalités d’Excel pour filtrer les lignes en fonction du niveau des messages, … et charger dans des feuilles différentes les csv de chaque nœud.
|
Pour afficher la date exacte, formater les cellules avec Nombre/Personnalisée jj/mm/aaaa hh:mm:ss,000 |
Depuis SafeKit 7.5, SafeKit utilise le stockage SQLite3 pour sauvegarder :
Le journal et l'état du nœud
ü SAFEVAR/log.db contient le journal des commandes
ü SAFEVAR/resource.db contient la liste des modules installés et son historique
Ces bases sont appelées bases de données du nœud.
Le journal et les ressources du module
ü SAFEUSERVAR/log.db contient le journal du module.
ü SAFEUSERVAR/resource.db contient l'état des ressources du module et son historique
Ces bases sont appelées bases de données du module.
La taille des logs et des historiques augmente au fur et à mesure que des événements se produisent sur le nœud SafeKit et les modules. Par conséquent, ils doivent être purgés régulièrement en supprimant les entrées les plus anciennes. Ceci est fait automatiquement grâce à un job périodique (task cheduler sous Windows ; crontab sous Linux) qui est contrôlé par le service safeadmin. Le nettoyage des bases de données du nœud est toujours actif. Le nettoyage des bases de données du module n'est actif que lorsque le module est en cours d'exécution. Pour vérifier que les tâches sont actives :
Tâche de nettoyage des bases de données du nœud
ü Sous Windows, exécutez schtasks /QUERY /TN safelog_clean
ü Sous Linux, exécutez crontab -u safekit -l
La sortie de cette commande doit contenir l'entrée safelog_clean
Tâche de nettoyage des bases de données du module AM (où AM
est le nom du module)
ü Sous Windows, exécutez schtasks /QUERY /TN safelog_AM
ü Sous Linux, exécutez crontab -u safekit -l
La sortie de cette commande doit contenir l'entrée safelog_clean_AM
La commande qui implémente le nettoyage est localisée sous SAFEBIN (en Linux, SAFEBIN=/opt/safekit/private/bin; en Windows, SAFE=C:\safekit\private\bin – si %SYSTEMDRIVE%=C:):
|
dbclean.ps1 en Windows et dbclean.sh en Linux |
Purge du journal et de l’historique dans les bases de données du nœud |
|
dbclean.ps1 AM en Windows et dbclean.sh AM en Linux |
Purge du journal et de l’historique dans les bases de données du module nommé AM |
Si nécessaire, vous pouvez exécuter ce script en dehors de la période prévue pour forcer le nettoyage des bases de données.
Lorsque vous utilisez votre PKI, vous devez fournir le certificat (la chaîne de certificats pour les autorités de certification racine et intermédiaires) de :
L’autorité de certification CA
(fichier cacert.crt) utilisée
pour émettre les certificats des serveurs
L’autorité de certification CLCA
(fichier clcacert.crt) utilisée
pour émettre les certificats client, lorsque l'authentification par certificats
clients est utilisée
Si vous rencontrez des difficultés à récupérer ces fichiers depuis votre PKI, vous pouvez les construire en suivant les procédures décrites ci-dessous.
La procédure suivante explique comment construire, dans le fichier combined.cer, la chaîne de certificats pour les Autorités de Certification racine et intermédiaires d'un certificat public. Le fichier résultat peut être utilisé comme :
SAFE/web/conf/cacert.crt
s’il a été généré à partir d’un certificat serveur
SAFE/web/conf/clcacert.crt
s’il a été généré à partir d’un certificat client. Si différents CLCA sont
utilisés pour générer les différents types de certificats client (commandes
distribuées et certificats de la console web), exécutez la procédure suivante
pour chaque certificat client. Puis, concaténez les fichiers combined.cer résultants dans le
fichier final clcacert.crt.
Lorsque vous utilisez un certificat personnel pour la console web, il se peut que vous ne disposiez pas du certificat public associé. Pour l'obtenir, appliquez la procédure décrite dans 7.18.2 page 134.
Lorsque vous avez le certificat public (fichier .crt ou .cer au format X.509 encodé en base-64) généré par votre PKI :
1. Copier le fichier .crt (ou .cer) sur une station de travail Windows
2. Double cliquer sur le fichier pour l’ouvrir avec « Extension noyau de chiffrement »
3. Cliquer sur l’onglet « Chemin d'accès de certification » pour afficher l’arbre des autorités de certification
4. Sélectionner une entrée (de haut en bas en excluant la feuille)

5. Cliquer sur « Afficher le certificat ». Une nouvelle fenêtre s’ouvre pour le certificat sélectionné
6. Dans cette nouvelle fenêtre, sélectionner l’onglet « Details » puis cliquer sur « Copier dans un fichier »

7. Cela ouvre l’Assistant Exportation du certificat :
a. Cliquer sur Suivant
b. Sur la page « Format de fichier d’exportation », sélectionner « Codé à base 64 X.509 (.cer). », puis cliquer sur « Suivant »

c. Dans « Fichier à exporter », cliquer sur « Parcourir » pour accéder à l’emplacement vers lequel vous souhaitez exporter le certificat. Pour la zone « Nom de fichier », nommer le fichier de certificat. Cliquer ensuite sur « Suivant ».
d. Cliquer sur « Terminer » pour exporter le certificat

8. Répéter maintenant les étapes 4 à 7 pour toutes les entrées (sauf la dernière) afin d'exporter tous les certificats des CA intermédiaires. Dans l'exemple, il faut répéter les étapes sur l'AC intermédiaire SSSL.com RSA subCA pour l'extraire en tant que certificat propre.
9. Concaténer tous les certificats obtenus dans un fichier unique combined.cer
Exécutez la commande suivante avec tous les certificats CA que vous avez extraits précédemment :
en Windows:
type intermediateCA.cer rootCA.cer > combined.cer
en Linux:
cat intermediateCA.cer rootCA.cer >> combined.cer
Le certificat qui en résulte doit ressembler à ce qui suit :

Lorsque vous utilisez un certificat personnel pour la console web, il se peut que vous ne disposiez pas du certificat public associé. Pour l'obtenir, appliquez la procédure suivante :
1. Depuis la station de travail Windows de l’utilisateur, ouvrir « Gérer les certificats utilisateur » (certmgr.msc)
2. Rechercher le certificat, généralement dans « Certificats - Utilisateur actuel\Personnel\Certificats », puis cliquer dessus avec le bouton droit. Si l’utilisateur possède plusieurs certificats, sélectionner celui ayant « Authentification du client » comme « Rôles prévus » et dont la « Date d’expiration » n’est pas passée
3. Cliquer sur « Toutes les tâches », puis cliquer sur « Exporter ». Cette opération ouvre l’Assistant Exportation de certificat

Si vous ne trouvez pas le certificat sous « Current User\Personal\Certificates », il est possible que vous ayez ouvert par erreur « Certificats – Ordinateur local » et non « Certificats – Utilisateur actuel ». Si vous voulez ouvrir le Gestionnaire de certificats dans le champ d’application utilisateur actuel en utilisant PowerShell, tapez certmgr dans la fenêtre de la console
4. Dans l’assistant d’exportation, cliquer sur « Suivant »
5. Sélectionner « Non, ne pas exporter la clé privée », puis cliquer sur « Suivant »
6. Sur la page « Format de fichier d’exportation », sélectionner « Codé à base 64 X.509 (.cer). », puis cliquer sur « Suivant »

7. Dans « Fichier à exporter », cliquer sur « Parcourir » pour accéder à l’emplacement vers lequel vous souhaitez exporter le certificat. Pour la zone « Nom de fichier », nommer le fichier de certificat. Cliquer ensuite sur « Suivant »
8. Cliquez sur « Terminer » pour exporter le certificat
9. Votre certificat est correctement exporté

Le certificat exporté ressemble à ceci :
![]()
A partir de ce fichier, vous pouvez appliquer la procédure décrite en 7.18.1 page 131, pour exporter l’autorité de certification correspondante.
|
|
8.1 « Page d’accueil du site support » page 137
8.2 « Clés de licence permanentes » page 138
8.3 « Créer un compte » page
138
8.4 « Accéder à votre compte » page 139
8.5 « Le Call Desk pour remonter des problèmes » page 139
8.6 « Zone de download et d’upload de fichiers » page 143
8.7 « Base de connaissances » page 144
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Lorsqu'un module SafeKit pose un problème, les snapshots du
module sur tous les serveurs sont nécessaires pour l'analyse
Pour récupérer les snapshots, voir la section 3.5
page 55
Si la taille des snapshots est inférieure à 10 Moctets, vous
pouvez les joindre en même temps que l'ouverture du call en cliquant sur
"Add"
Sinon, le temps de téléchargement des snapshots sur le site
support peut durer plusieurs minutes. Dans ce cas indiquer dans "Remark
text" que vous les téléchargez dans votre zone privée d'upload : voir
section 8.6.3 page 144

Tous les échanges entre le support et le client se font au moyen
de "Remarques"
Quand le support ajoute une remarque sur un call, le client est
averti par mail. C'est notamment le cas pour la première réponse du support
après l'ouverture du call
Après consultation de la dernière remarque du support, le client
peut ajouter à son tour une nouvelle remarque
L'échange a lieu jusqu’à la fermeture du call en accord entre le
client et le support Evidian
|
|
|
|
|
|
|
|
|
|
|
|
9.1 « Commandes distribuées » page 145
9.2 « Commandes de boot et shutdown » page 147
9.3 « Commandes de configuration et surveillance du cluster »
page 148
9.4 « Commandes de contrôle des modules » page 150
9.5 « Commandes de surveillance des modules » page 153
9.6 « Commandes de configuration des modules » page 154
9.7 « Commandes de support » page 156
A peu près toutes les commandes SafeKit peuvent être appliquées sur une liste de serveurs.
Les exceptions sont les commandes safekit logview, safekit -p et safekit -r qui ne peuvent être exécutées que localement à un serveur.
L'interface ligne de commandes globale requiert l'exécution du service web Safekit sur chacun des serveurs de la liste (voir section 10.6 page 170).
|
safekit -H <url> [,<url,...] <action> <arg> |
Exécute l'action sur les serveurs spécifiés par la liste d'URL Il est également possible de spécifier en guise d’url une liste de nom de serveurs (tels qu’ils apparaissent dans le fichier cluster.xml). Les URLS sont construites automatiquement en https:9453 ou http:9010 en fonction du contenu de SAFE/web/conf/ssl. La syntaxe –H "*" désigne tous les nœuds déclarés dans cluster.xml. Pour surcharger le protocole et port par défaut, spécifier comme premier élément un élément de la forme ‘[<protocol>:<port>]’. La partie ‘:<port>’ est optionnelle. <protocol> peut être ‘http’ ou ‘https’. Le port par défaut pour le protocole HTTP est 9010. Exemple : safekit -H http://192.168.0.2:9010,http://192.168.0.3:9010 module list safekit –H "[http],*" module list safekit –H "*" module list safekit –H "[https:9500],server1,server2" module list |
|
safekit [-H <url>[,...]] |
Exporte le <module> localement installé sur les serveurs spécifiés par -H. Cette commande réalise les actions suivantes :
Exemple : safekit -E farm exporte le module ferme local vers la liste des serveurs spécifiés dans SAFEVAR/default_cluster.txt (voir ci-dessus pour un exemple de default_cluster.txt) |
|
safekit [-H <url>[,…] -G |
Déploie les fichiers de configuration du cluster locaux sur tous les serveurs spécifiés par –H. Cette commande exécute les actions suivantes :
|
Utilisez les commandes suivantes pour démarrer/arrêter les services SafeKit, configurer le démarrage automatique au boot des services et des modules, arrêter tous les modules en cours d’exécution.
En Windows, vous aurez peut-être également besoin d’appliquer la procédure décrite en 10.4 page 166.
|
Service principal de SafeKit obligatoire et démarré automatiquement au boot. safeadmin peut être contrôlé dans l'interface Services de Windows |
|||
|
service safeadmin start (Linux) |
Service principal de SafeKit obligatoire et démarré automatiquement au boot |
||
|
safekit boot –m AM [on | off | status] |
Démarre automatiquement au boot ou non le module AM ("on" ou "off" ; par défaut "off") Sans l'option –m AM, safekit boot status liste l'état de tous les modules au boot
|
||
|
safekit webserver [start | stop | restart] |
Contrôle le démarrage/arrêt/redémarrage du service safewebserver. Ce service est utile à la console SafeKit, aux checkers de <module> et aux commandes distribuées. La commande lance des processus httpd et attend le démarrage des processus. |
||
|
safekit boot [webon | weboff | webstatus] |
Contrôle le démarrage automatique au boot du service safewebserver ("on" ou "off" ; par défaut "on") |
||
|
safekit safeagent [start | stop | restart | check] |
Contrôle le démarrage/arrêt du service safeagent qui met en œuvre un agent SNMP SafeKit. |
||
|
safekit boot [snmpon | snmpoff | snmpstatus] |
Contrôle le démarrage automatique au boot du service safeagent ("on" ou "off" ; par défaut "off") |
||
|
safekit shutdown |
Stoppe tous les modules en cours d’exécution et attend leur arrêt complet |
|
safekit cluster config [filepath de .xml ou .zip][lock|unlock] |
Applique la nouvelle configuration du cluster SafeKit avec le contenu du fichier passé en argument, cluster.xml ou cluster.zip :
configure avec le fichier xml passé en argument et génère de nouvelles clés
configure avec le cluster.xml et les clés contenues dans le .zip Appelée sans argument, cette commande conserve la configuration courante mais génère de nouvelles clés. Exemple : safekit cluster config /tmp/newcluster.xml
Si cette commande est appelée avec le paramètre lock, les futurs appels ne seront autorisés que si le paramètre unlock est utilisé. |
|||
|
safekit cluster confcheck filepath |
Contrôle la configuration du cluster, avec le contenu du fichier xml passé en argument, sans l’appliquer |
|||
|
safekit cluster confinfo |
Retourne, pour chaque serveur actif du cluster :
Cette commande permet de vérifier que tous les nœuds d’un cluster ont bien la même configuration de cluster. Exemple : safekit cluster confinfo Nœud Signature Date Verrou rh6server7 6f1032b11a7b2 … 33e67c 2016-05-20T17:06:45 0 rh7server7 6f1032b11a4e0 … 33e67c 2016-05-20T17:06:45 0
|
|||
|
safekit cluster deconfig |
Supprime la configuration du cluster ainsi que les clés associées. |
|||
|
safekit cluster state |
Retourne l’état global du cluster
Pour chaque module installé et pour chaque nœud actif du cluster cette commande liste :
Cette commande liste quels modules sont installés et sur quels serveurs. La signature et date de dernière configuration permet de vérifier qu’un module a bien la même configuration sur tous les nœuds et, si ce n’est pas le cas, où est la configuration la plus récente. |
|||
|
safekit cluster genkey |
Régénère les clés de chiffrement pour la communication globale Safekit. La configuration du cluster doit être réappliquée (avec safekit -G) pour que cette modification soit prise en compte. |
|||
|
safekit cluster delkey |
Supprime les clés de chiffrement pour la communication globale. La configuration du cluster doit être réappliquée (avec safekit -G) pour que cette modification soit prise en compte. |
|
||
|
safekit –H “[http],*” -G |
Relance une résolution de nom DNS pour tous les noms spécifiés dans cluster.xml et le userconfig.xml des modules, sans arrêter les modules (quand cela est possible). |
|
||
|
safekit -H <url>[,<url>] -G |
Distribue la configuration locale du cluster et les clés de chiffrement associées lorsqu’elles existent, sur les serveurs spécifiés dans la liste d’url. Exemple : safekit –H http://192.168.1.1:9010,http://192.168.1.2:9010 -G |
|||
Les commandes s’appliquent au module nommé AM, passé en argument avec l’option –m.
|
safekit start –m AM |
Démarre le module |
||
|
safekit waitstart –m AM |
Attend la fin du démarrage du module |
||
|
safekit stop –m AM |
Arrête le module |
||
|
safekit waitstop –m AM |
Attend la fin de l’arrêt du module |
||
|
safekit waitstate –m AM STOP | ALONE | UP | PRIM | SECOND |
Attend que le module atteigne l’état stable demandé (rouge ou vert) |
||
|
safekit stopstart –m AM |
Contrairement à la commande restart, la commande stopstart provoque l'arrêt complet du module et son redémarrage. Si le module était PRIM, il y a basculement du module PRIM sur l'autre serveur
|
||
|
safekit forcestop –m AM |
Force l’arrêt du module lorsque des ressources sont gelées |
||
|
safekit restart –m AM |
Applique les scripts d’arrêt puis de démarrage de l’application : il n’y a pas de basculement sur l'autre serveur si le module est PRIM |
||
|
safekit swap [nosync] –m AM |
Module miroir uniquement
Echange les rôles des serveurs primaire et secondaire. Utiliser l’option nosync
pour permuter les rôles sans synchronisation des répertoires répliqués |
||
|
safekit second [fullsync] –m AM |
Module miroir uniquement
Force le module à démarrer en secondaire ; échec si l’autre serveur n’est pas primaire Utiliser l’option fullsync pour forcer une réintégration complète de tous les répertoires répliqués |
||
|
safekit prim –m AM |
Module miroir uniquement
Force le module à démarrer en primaire ; échec si
l’autre serveur est déjà primaire |
||
|
safekit errd suspend –m AM safekit errd resume –m AM |
Suspend/redémarre la détection d’erreur sur les processus du module définis dans la section <errd> du fichier userconfig.xml
Utile si on veut arrêter l’application sans provoquer de fausse détection et reprise.
La ressource usersetting.errd reflète l’état courant. |
||
|
safekit checker off –m AM safekit checker on –m AM |
Arrête ou démarre l’ensemble des checkers (interface, TCP, IP, custom, etc ...).
Cette commande est utile lors d’opérations de maintenance ; lorsqu’il est connu que les checkers vont détecter une panne suite à un arrêt d’une partie de l’infrastructure informatique et qu’un basculement de serveur SafeKit n’est pas souhaitée.
Note : ü Ne peut être utilisée que sur un module démarré et dans un état stable (ALONE, UP, PRIM, SECOND, WAIT). ü La ressource usersetting.checker reflète l’état courant. ü Un effet de bord est l’exécution de la commande safekit update
|
||
|
safekit failover off –m AM safekit failover on –m AM |
Permet de reconfigurer dynamiquement l’attribut failover du tag service du fichier de configuration (voir section 13.2.3 page 239).
Note : ü Ne peut être utilisée que sur un module miroir démarré et dans un état stable (ALONE, PRIM, SECOND, WAIT). ü La ressource usersetting.failover reflète l’état courant. ü Cette commande doit être exécutée sur tous les nœuds du module. Si ce n’est pas le cas le comportement n’est pas spécifié. ü Un effet de bord de cette commande est l’exécution de la commande safekit update |
Les commandes s’appliquent au module nommé AM, passé en argument avec l’option –m.
|
safekit level [–m AM] |
Indique la version de SafeKit et la licence Avec le paramètre AM, le script level du module est exécuté et ses résultats affichés |
|
safekit state |
Affiche l’état de tous les modules |
|
safekit state –m AM |
Affiche l’état du module AM Avec l’option verbose –v, les états de toutes les ressources du module sont listés : voir l'utilité des ressources dans la section 7.9 page 121 Avec l’option –lq, la commande retourne l’état (et le code d’exit): STOP (0), WAIT (1), ALONE (2), UP (2), PRIM (3), SECOND (4) |
|
safekit log –m AM [-s nb] [-A | -I] [-l en|fr] |
Affiche les <nb> derniers messages E(vènement) du journal du module AM. Utiliser l’option -I pour afficher en plus les messages I(nformation) ; l’option -A pour afficher tous les messages (y compris les messages de debug). Sélectionner la langue avec l’option -l, en (Anglais) ou fr (Français).
Par défaut : –s 300 |
|
safekit logview –m AM [-A | -I] [-l en|fr]
|
Visualise en temps réel les derniers messages E(vènement) du journal du module AM. Utiliser l’option -I pour afficher en plus les messages I(nformation) ; l’option -A pour afficher tous les messages (y compris les messages de debug). Sélectionner la langue avec l’option -l, en (Anglais) ou fr (Français). |
|
safekit logview –m AM [-A | -I] [-l en|fr]–s 300 |
Visualise à partir des 300 derniers messages |
|
safekit logsave –m AM [-A | -I] [-l en|fr] /tmp/f.txt |
Sauvegarde les messages E(vènement) du journal du module AM dans /tmp/f.txt (chemin absolu obligatoire). Utiliser l’option -I pour sauvegarder en plus les messages I(nformation) ; l’option -A pour sauvegarder tous les messages (y compris les messages de debug). Sélectionner la langue avec l’option -l, en (Anglais) ou fr (Français). |
|
safekit printi|printe –m AM "message" |
Les scripts applicatifs start/stop peuvent écrire des messages dans le journal du module avec un niveau I ou E. |
|
safekit config –m AM |
A exécuter après avoir modifié dans SAFE/modules/AM : userconfig.xml, start_prim/both ou stop_prim/both (miroir/ferme) Demande à chaque plugin défini dans userconfig.xml <errd>, <vip>, <rfs>, <user>... de prendre en compte la nouvelle configuration du module Cette commande peut être utilisée dans les états ALONE (vert), ou STOP et WAIT (rouge). Dans l’état STOP l’ensemble de la configuration peut être changée. Dans les états ALONE et WAIT, il s’agit d’une configuration dynamique où seul un sous-ensemble de paramètres peut être modifié. Les paramètres qui sont modifiables dynamiquement sont indiqués dans la section 13 page 237. |
|
|
|
safekit module genkey –m AM |
Génère les clés de chiffrement associées au module AM. Pris en compte à la prochaine configuration du module. |
|
|
|
safekit module delkey –m AM |
Efface les clés de chiffrement associées au module AM. Pris en compte à la prochaine configuration du module. |
|
|
|
safekit |
Distribue la configuration locale du module AM et les clés de chiffrement associées lorsqu’elles existent, sur les serveurs spécifiés dans la liste d’url. Ex: safekit –H http://192.168.1.1:9010,http://192.168.1.2:9010 –E mirror |
|
|
|
safekit deconfig –m AM |
A exécuter avant désinstallation du module Demande à chaque plugin défini dans userconfig.xml <errd>, <vip>, <rfs>, <user>... de prendre en compte la déconfiguration du module |
|
|
|
safekit confinfo –m AM |
Affiche des informations sur la configuration active et la configuration courante du module AM :
Cette commande est utile pour contrôler la configuration du module. Elle affiche :
Si les signatures sont différentes, cela signifie que les configurations ne sont pas identiques et qu’il est probablement nécessaire d’appliquer la configuration courante. Vous pouvez exécuter cette commande sur tous les nœuds qui implémentent le module, pour contrôler qu’ils ont bien la même configuration. |
|
|
|
safekit confcheck –m AM |
Contrôle la configuration du module sous SAFE/modules/AM sans l’appliquer |
|
|
safekit module install –m AM [-r] [-M id] SAFE/Application _Modules/AM.safe |
Installe le module AM.safe avec le nom AM [-M id] force l’installation du module avec l’id spécifié comme module id |
|
|
|
safekit module package –m AM /…/newAM.safe |
Package le module AM dans /…/newAM.safe (chemin absolu obligatoire) Commande utilisée par la console pour créer un backup dans SAFE/Application_Modules/backup/ |
|
|
|
safekit module uninstall –m AM |
Désinstalle le module AM. Détruit le répertoire de configuration du module SAFE/modules/AM |
|
|
|
safekit module list |
Liste les noms des modules installés |
|
|
|
safekit module listid |
Liste les noms et les ids des modules installés |
|
|
|
safekit module getports –m AM (or –i id) |
Liste les ports de communication qui synchronisent le module entre les serveurs |
|
|
|
Sauvegarde le snapshot du module AM dans /tmp/snapshot_xx.zip (chemin absolu obligatoire) Un snapshot crée un dump puis récolte sous SAFEVAR/snapshot/modules/AM les 3 derniers dumps et les 3 dernières configurations du module pour les mettre dans le fichier .zip Pour analyser les snapshots, voir 7.16 page 127 Pour envoyer les snapshots au support, voir section 8 page 137 |
|||
|
safekit dump –m AM |
Pour relever un problème en temps réel sur un serveur, générer un dump du module AM Un dump créé un directory dump_year_month_day_hour_mn_sec du côté serveur sous SAFEVAR/snapshot/modules/AM. Le directory dump contient les logs et l’état du module et ainsi que des informations sur l'état du système et des processus SafeKit au moment du dump |
||
|
safekit –r "commande spéciale" |
Exécute une commande sous SAFEBIN après avoir instancié les variables d'environnement SafeKit |
||
|
safekit clean [all |
log | process | resource] |
Réinitialise les journaux, le fichier de ressources et arrête les principaux processus associés au module.
Détruit les journaux du module (verbeux et non verbeux). A utiliser si les journaux sont corrompus (exemple : erreurs retournées lors de l’affichage du journal).
Réinitialise le fichier de ressources du module. A utiliser si ce fichier est corrompu (exemple : erreurs retournées lors de l’affichage des ressources).
Arrête les principaux processus du module (heart). A utiliser lorsqu’à l’issue du stop et du forcestop du module des processus n’ont pas été arrêtés.
Valeur par défaut. «Nettoie» les journaux, le fichier de ressources et les processus. |
10.1 « Variables d'environnement et répertoires SafeKit »
page 157
10.2 « Processus et services SafeKit » page 159
10.3 « Paramétrage du pare-feu » page 160
10.4 « Configuration au boot et au shutdown en Windows »
page 166
10.5 « Sécurisation des communications internes au module »
page 167
10.6 « Configuration du service web de SafeKit » page 170
10.7 « Notification par mail » page 175
10.8 « Agent SNMP » page
177
10.9 « Journal des commandes du serveur SafeKit » page 179
|
Variable |
Description |
|
SAFE |
Répertoire d'installation de SafeKit : SAFE=/opt/safekit sur Linux et SAFE=C:\safekit sur Windows si SystemDrive=C: La licence est sous SAFE/conf/license.txt |
|
SAFEVAR |
Répertoire des fichiers de travail de SafeKit : SAFEVAR=C:\safekit\var sur Windows et SAFEVAR=/var/safekit sur Linux |
|
SAFEBIN |
Répertoire d'installation des binaires SafeKit : C:\safekit\private\bin sur Windows et /opt/safekit/private/bin sur Linux. Utile pour accéder aux commandes spéciales de SafeKit |
|
SAFE/Application_Modules |
Répertoire des modules .safe installables. Une fois un module installé, le module se trouve sous SAFE/modules |
|
Variable |
Description |
|
SAFEMODULE |
Nom du module. La commande safekit n'a plus besoin du paramètre nom de module (-m AM = -m SAFEMODULE) |
|
SAFE/Application_Modules |
Répertoire des modules contenant les .safe installables. Une fois un module installé, le module se trouve sous SAFE/modules |
|
SAFE/modules/AM et SAFEUSERBIN |
L'édition d'un module, nommé AM, et de ses scripts se fait dans le répertoire SAFE/modules/AM. On y trouve le fichier userconfig.xml du module et les scripts de démarrage et d'arrêt applicatif start_prim, stop_prim pour un miroir, start_both, stop_both pour une ferme (édition en direct ou via la console SafeKit) Après une configuration du module (safekit config –m AM ou console
web/ |
|
SAFEVAR/modules/AM et SAFEUSERVAR |
Répertoire des fichiers de travail d'un module, nommé AM Les messages d'output des scripts de démarrage et d'arrêt applicatif sont dans le fichier SAFEVAR/modules/AM/userlog.ulog. Permet de vérifier s'il y a des erreurs au démarrage ou à l'arrêt de l'applicatif. Attention parfois le userlog est désactivé car trop volumineux avec dans userconfig.xml du module <user logging="none"> |
|
SAFEVAR/snapshot/modules/AM |
Répertoire des dumps et des configurations remontés dans un snapshot pour le module nommé AM. Voir section 9.7 page 156 |
L’arborescence des modules (empaqueté dans un .safe ou installé dans SAFE/modules/AM) est le suivant :
|
Nom du module applicatif |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Optionnel. Usage interne uniquement (chiffrement des communications internes du module) |
|
|
|
|
Optionnel. Usage interne uniquement (chiffrement des communications internes du module) |
|
|
|
|
|
|
|
|
|
Script utilisateur exécuté au démarrage du module |
|
|
|
|
Script utilisateur pour démarrer l’application en miroir ou ferme |
|
|
|
|
Script utilisateur pour arrêter l’application en miroir ou ferme |
|
|
|
|
Script utilisateur exécuté à l’arrêt du module |
|
|
|
|
|
|
|
|
|
Fichier pour la console web de SafeKit |
|
|
|
|
|
|
index.html
est une page HTML, contenant du javascript, qui est affichée par la console web/assistant de configuration lors de
l’action
Editer la configuration, au moment de la saisie des
paramètres (voir 3.3.2.2 page 47).
Vous pouvez éditer ce fichier afin de personnaliser la saisie. Si le fichier index.html n’est pas présent (c’est le cas pour les anciens modules), la console web propose à la place l’édition du fichier userconfig.xml.
|
Services SafeKit |
Processus par module |
|
|
safeadmin (processus safeadmin): service principal et obligatoire |
heart : gère les procédures de reprise |
vipd : synchronise une ferme de serveurs |
|
safewebserver (processus httpd) : service pour la console, les <module> checkers, les commandes distribuées |
errd : gère la détection de la mort des processus |
nfsadmin, nfsbox, reintegre : réplication et réintégration de fichiers en temps réel |
|
safeagent (processus safeagent) : agent SNMP SafeKit (optionnel) |
checkers (ipcheck, intfcheck, …) |
|
Pour la liste détaillée des processus et ports de SafeKit, voir les sections 10.3.3.1 page 162 et 10.3.3.2 page 163.
Si un pare-feu est actif sur le serveur SafeKit, il faut ajouter les règles autorisant les échanges réseau :
entre les serveurs pour les communications internes (échanges
globaux et échanges spécifiques aux modules)
entre les serveurs et les stations de travail exécutant la
console
Si la configuration automatique du pare-feu a été choisie lors de l’installation de SafeKit, les commandes suivantes ne sont pas nécessaires, excepté pour la configuration du service safeagent lorsque l’agent SNMP de SafeKit est activé.
Si la configuration automatique du pare-feu n’a été pas été choisie, vous devez configurer le pare-feu manuellement ou utiliser la commande firewallcfg (dans SAFEBIN). Elle insère (ou supprime) les règles de pare-feu requises par les processus de base SafeKit (services safeadmin et safewebserver) et les processus des modules pour communiquer avec leurs homologues du cluster. Les administrateurs doivent s’assurer de l’absence de conflit avec une politique locale avant d’appliquer ces règles.
|
firewallcfg add firewallcfg del |
Ajout (ou suppression) des règles pour le pare-feu firewalld ou iptable pour les ports des services safeadmin et safewebserver SAFEBIN=/opt/safekit/private/bin
ajout des règles pour les services safeadmin et safewebserver
suppression des règles pour les services safeadmin et safewebserver |
||
|
firewallcfg add AM firewallcfg del AM |
Ajout (ou suppression) des règles pour le pare-feu firewalld ou iptable pour les ports des modules SafeKit SAFEBIN=/opt/safekit/private/bin
ajout des règles pour le module nommé AM
suppression des règles pour le module nommé AM |
||
|
firewallcfg add safeagent firewallcfg del safeagent |
Ajout (ou suppression) des règles pour le pare-feu firewalld ou iptable pour le service safeagent SAFEBIN=/opt/safekit/private/bin
ajout des règles pour le service safeagent
suppression des règles pour le service safeagent |
En cas d’utilisation du pare-feu du système d'exploitation (pare-feu Microsoft), vous pouvez utiliser la commande firewallcfg (dans SAFEBIN). Elle insère (ou supprime) les règles de pare-feu requises par les processus des services SafeKit (safeadmin, safewebserver, safeagent, et safeacaserv) et les processus des modules pour communiquer avec leurs homologues du cluster. Les administrateurs doivent s’assurer de l’absence de conflit avec une politique locale avant d’appliquer ces règles.
|
firewallcfg add firewallcfg del |
Ajout (ou suppression) des règles pour le pare-feu de Microsoft SAFEBIN=C:\safekit\private\bin (si %SYSTEMDRIVE%=C:)
firewallcfg add ajout des règles pour les services SafeKit et les modules
firewallcfg del suppression des règles pour les services SafeKit et les modules |
Si vous utilisez un autre pare-feu ou souhaitez définir manuellement les règles de filtrage, cette partie liste les processus et ports utilisés par SafeKit afin d’aider à écrire les règles de pare-feu.
Les processus d’un module miroir
ü heart : gère les procédures de récupération
ü errd : détection d’absence de processus
ü nfsadmin, nfscheck : gèrent la réplication de fichier
Les processus d’un module ferme
ü heart : gère les procédures de récupération
ü errd : détection d’absence de processus
Les processus communs à tous les serveurs SafeKit, un processus
par serveur et démarrés au boot :
ü service safeadmin (processus safeadmin)
processus central d’administration SafeKit. Obligatoire
ü service safewebserver (processus httpd)
service web pour la console, les “module checkers” et les commandes distribuées
ü service safecaserv (processus httpd)
service web pour sécuriser la console web avec la PKI de SafeKit (optionnel)
ü service safeagent (processus safeagent)
agent SNMP v2 pour SafeKit (optionnel)
Les processus d’un module miroir
ü heart : gère l’automate d’état du module
ü arpreroute : gère les requêtes arp (envoie des paquets ARP)
ü nfsbox, reintegre : gèrent la réplication de fichier
ü splitbraincheck : gère la détection de split brain (envoie des paquets ICMP ping)
Les processus d’un module ferme
ü vipd : synchronise une ferme de serveurs
ü arpreroute : gère les requêtes arp (envoie des paquets ARP)
Les processus pour un module miroir ou ferme selon la
configuration des checkers
ü intfcheck : test d’interface (configuration générée automatiquement lorsque <interface check=on>)
ü pingcheck : ping d’une adresse (configuration <ping>)
ü ipcheck : teste la présence d’une adresse IP locale (généré automatiquement lorsque la configuration <virtual_addr check=on> est présente)
ü modulecheck : teste l’état d’un module SafeKit (configuration <module>)
ü tcpcheck : teste l’établissement d’une connexion TCP (configuration <tcp>)
Les ports suivants sont utilisés par SafeKit et les modules applicatifs.
safeadmin
Par défaut, accès UDP distant sur le port 4800 (pour communiquer avec les safeadmin présents sur les autres serveurs SafeKit). Pour modifier la valeur du port, voir section 12.1.3 page 233.
Le port local est défini par l’attribut mapper dans le fichier de configuration globale SafeKit safeini.xml (en Linux: /etc/safeini.xml ; en Windows:c:\Windows\safeini.xml).
|
|
Avant l'upgrade de SafeKit, sauvegardez ce fichier si vous l'avez modifié car son contenu n'est pas préservé. |
safewebserver
Accès TCP, local et distant, sur les ports 9010 par défaut pour la console web HTTP ou sur le port 9453 pour la console web HTTPS. Voir section 10.6 page 170 pour la définition des valeurs des ports.
Ce service est accédé localement, et à distance depuis les autres serveurs SafeKit et les stations de travail exécutant la console SafeKit.
safecaserv (optionnel)
Accès TCP, local et distant, sur le port 9001 par défaut. Pour la définition de la valeur du port, voir section 11.6.5 page 229.
Ce service est accédé localement, et à distance depuis les autres serveurs SafeKit et les stations de travail pour exécuter l’assistant de configuration HTTPS avec la PKI SafeKit.
safeagent (optionnel)
Accès UDP, local et distant, sur le port 3600 par défaut. Pour la définition de la valeur du port, voir section 10.8
page 177.
Lorsqu’un module applicatif est configuré, on peut exécuter la commande safekit module getports -m AM pour lister les ports externes utilisés par le module AM. Le pare-feu doit être configuré pour ouvrir l’accès à ces ports. La valeur des ports est calculée automatiquement en fonction de l’id du module. La commande safekit module listid affiche le nom des modules installés et leur id.
La commande safekit module getports -i ID liste les ports qui peuvent être utilisés par le module ayant pour id ID (il n’est pas nécessaire que ce module soit installé, et si le module n’est pas configuré, la liste rendue sera un sur-ensemble des ports réellement utilisés par le module).
Les règles suivantes permettent de calculer les valeurs des ports selon id du module. Lorsque des checkers sont configurés pour le module, il peut être nécessaire d’ajouter des règles selon la configuration des checkers. La communication locale (localhost) doit être autorisée pour tous les processus SafeKit.
Pour un module mirror
ü heart
port UDP pour communiquer entre serveurs SafeKit
port=8888 +(id-1)
ü rfs (file replication)
port TCP pour la réplication entre serveurs
SafeKit
safenfs_port=5600
+(id-1)x4
Exemple pour un module miroir avec l’id 1 :
safekit module getports -m mirror
List of the ports used by SafeKit
Process Ports
safeadmin
port UDP 4800
webconsole
port TCP 9010
heart
port UDP 8888
rfs
safenfs_port TCP 5600
Pour un module farm
ü Port utilisé par farm
port UDP pour communiquer entre serveurs SafeKit
port 4803
+ (id-1)x3
Exemple pour un module farm avec l’id 2
SAFE/safekit module getports -m
farm
List of the ports used by SafeKit
Process Ports
safeadmin
port UDP 4800
webconsole
port TCP 9010
farm
port UDP 4806
Pour les checkers
ü Ping checker
Modifier les règles ICMP pour autoriser ping à destination de l’adresse définie
dans la configuration.
ü TCP checker
Autoriser les connexions TCP connexions à destination de l’adresse définie dans
la configuration <tcp>.
ü Module checker
Autoriser les connexions TCP à destination du port 9010 pour le serveur
exécutant le module applicatif qui est testé.
ü Splitbrain checker
Modifier les règles ICMP pour autoriser ping à destination de l’adresse définie
dans la configuration <splitbrain>.
Le service safeadmin est configuré pour démarrer automatiquement au boot et s’arrêter proprement au shutdown. A son tour, ce service démarre les modules configurés pour démarrer au boot et arrête les modules.
Sur certaines plateformes Windows, le démarrage au boot de safeadmin échoue car la configuration réseau n’est pas prête ; au shutdown, les modules n’ont pas le temps de s’arrêter proprement car le délai d’attente de l’arrêt du service est trop court. Si vous rencontrez ce type de problème, appliquez l’une des procédures suivantes.
|
|
Si vous utilisez l’agent SNMP de SafeKit, adaptez la procédure suivante pour positionner le démarrage manuel du service safeagent et inclure son démarrage/arrêt dans les scripts de démarrage (safekitbootstart.cmd) et arrêt de SafeKit (safekitshutdown.cmd). |
1. Ouvrir une console PowerShell en tant qu’administrateur
2. cd SAFE\private\bin\
3. Exécuter le script addStartupShutdown.cmd
Ce script positionne le démarrage manuel de safeadmin et ajoute dans les objets stratégies de groupe, les scripts de démarrage (safekitbootstart.cmd) et d’arrêt (safekitshutdown.cmd) de SafeKit. Si le script échoue, appliquez la procédure manuelle.
Vous devez appliquer la procédure suivante qui utilise l’éditeur d’objets de stratégie de groupe :
1. Positionner en démarrage manuel le service safeadmin
2. Ouvrir une console PowerShell en tant qu’administrateur
3. Lancer la console MMC à l’aide de la commande mmc
4. Fichier – Ajouter/Supprimer un composant logiciel enfichable ; Ajouter - "Editeur d’objets de stratégie de groupe" – OK
5. Sous "Racine de la console"/"Stratégie ordinateur local"/"Configuration ordinateur"/"Paramètres Windows"/"Scripts (démarrage/arrêt)", double cliquer sur "Démarrage". Cliquer sur ajouter puis entrer pour le nom du script : c:\safekit\private\bin\safekitbootstart.cmd. Ce script lance le service safeadmin.
6. Sous "Racine de la console"/"Stratégie ordinateur local"/"Configuration ordinateur"/"Paramètres Windows"/"Scripts (démarrage/arrêt)", double cliquer sur "Arrêt du système". Cliquer sur ajouter puis entrer pour le nom du script : c:\safekit\private\bin\safekitshutdown.cmd. Ce script arrête proprement tous les modules en cours d’exécution.
Il est possible de sécuriser les communications internes au module entre les différents nœuds du cluster, en créant les clés de chiffrement associées au module. Par défaut, ces clés sont générées par SafeKit avec une autorité de certification « privée » (SafeKit PKI). Dans SafeKit <= 7.4.0.31, la clé générée a une durée de validité de 1 an. Voir la section 10.5.3.1 page 169 pour les solutions quand la clé expire.
Depuis SafeKit 7.4.0.16, vous pouvez également fournir vos propres clés générées avec votre autorité de certification de confiance (PKI d'entreprise ou PKI commerciale). Voir section 0 page 170 pour plus de détails.
Depuis SafeKit 7.4.0.32, le module peut être reconfiguré avec de nouvelles clés même dans l’état ALONE (reconfiguration dynamique).
|
|
Lorsque toutes les instances du module n’ont pas la même clé de chiffrement, la communication entre instances est impossible. Réappliquer la configuration contenant la clé valide sur tous les nœuds pour rétablir une configuration correcte. Il est possible de visualiser la configuration en exécutant la commande safekit confinfo –m AM sur chaque nœud (voir section 9.6 page 154). Cette information est également affichée par la console web avant d’éditer la configuration du module et avant le démarrage global. |
Lors de la configuration à l’aide de la console web (voir section 3.3 page 42) :
|
ou
|
|
|
|
La ressource encryption
reflète le mode de communication courant du module : “on”/”off” lorsque le
chiffrement est actif/inactif. Pour voir l’état des ressources, afficher la console web/ Depuis SafeKit 7.5, cette ressource se nomme usersetting.encryption. |
Les commandes équivalentes pour créer les clés de chiffrement associées à un module sont :
1. safekit module genkey –m AM
2. safekit –H "server1,server2" -E AM
où server1 et server2 sont les nœuds qui implémentent le module
Les commandes équivalentes pour supprimer les clés de chiffrement associées à un module sont :
1. safekit module delkey –m AM
2. safekit –H "server1,server2" -E AM
où server1 et server2 sont les nœuds qui implémentent le module
Pour la description des commandes, voir la section 9.6 page 154.
SafeKit peut sécuriser la communication interne avec des certificats qui sont générés avec une autorité de certification « privée » (SafeKit PKI). Depuis SafeKit 7.4.0.16, vous pouvez également fournir vos propres certificats générés avec votre autorité de certification de confiance (PKI d'entreprise ou PKI commerciale).
Dans SafeKit <= 7.4.0.31, la clé de chiffrement des communications a une durée de validité de 1 an. Quand celle-ci expire dans un module miroir avec la réplication de fichiers, la réintégration sur le secondaire échoue. Pour revenir à une situation normale, il faut reconfigurer le module avec une nouvelle clé comme décrit dans SK-0084. A partir de SafeKit > 7.4.0.31, la durée de validité est de 20 ans.
Si vous ne pouvez pas upgrader SafeKit, vous pouvez générer de nouvelles clés avec une période de validité plus longue. Pour cela, appliquez la procédure suivante :
1. Arrêter le module AM sur tous les nœuds
2. Sur l’un des nœuds, se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes
3. Exécuter safekit module genkey –m AM
4. Supprimer le fichier SAFE/modules/AM/conf/modulekey.p12
5. Aller dans le répertoire SAFE/web/bin
6. Exécuter ./openssl req -config ../conf/ssl.conf -subj "/O=SafeKiModule/CN=mirror" -new -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -keyout pkey.key -out cert.crt
Affecter à l’argument -days, la nombre de jours que vous souhaitez comme durée de validité
7. Exécuter ./openssl pkcs12 -export -inkey ./pkey.key -in ./cert.crt -name "Module certificate" -out modulekey.p12
Cette commande nécessite de renseigner un mot de passe. Contactez le support Evidian pour obtenir la valeur correcte du mot de passe
8. Supprimer les fichiers pkey.key et cert.crt
9. Déplacer le fichier modulekey.p12 sous SAFE/modules/AM/conf
10. Aller dans le répertoire SAFE
11. Exécuter safekit –H "server1,server2" -E AM
où server1 et server2 sont les nœuds qui implémentent le module
Le module est configuré sur les 2 nœuds avec sa nouvelle clé et prêt à être démarré.
Depuis SafeKit 7.4.0.16, vous pouvez fournir votre propre clé générée avec votre autorité de certification de confiance (PKI d'entreprise ou PKI commerciale).. Pour cela, appliquez la procédure suivante :
1. Arrêter le module AM sur tous les nœuds
2. Sur l’un des nœuds, se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes
Exécuter safekit module
genkey –m AM
3. Supprimer le fichier SAFE/modules/AM/conf/modulekey.p12
4. Ajoutez le certificat X509 au format PEM, pour votre autorité de certification (certificat de l'AC ou bundle de certificats de toutes les autorités de certification) au fichier SAFE/web/conf/cacert.crt
5. Aller dans le répertoire SAFE/web/bin
6. Générer votre certificat à l’aide de votre PKI en spécifiant dans le sujet : "/O=SafeKiModule/CN=mirror"
7. Copier les fichiers générés pkey.key et cert.crt dans le répertoire SAFE/web/bin
8. Exécuter ./openssl pkcs12 -export -inkey ./pkey.key -in ./cert.crt -name "Module certificate" -out modulekey.p12
Cette commande nécessite de renseigner un mot de passe. Contactez le support Evidian pour obtenir la valeur correcte du mot de passe
9. Supprimer les fichiers pkey.key et cert.crt
10. Déplacer le fichier modulekey.p12 sous SAFE/modules/AM/conf
11. Aller dans le répertoire SAFE
12. Exécuter safekit –H "server1,server2" -E AM
où server1 et server2 sont les nœuds qui implémentent le module
Le module est configuré sur les 2 nœuds avec sa nouvelle clé et prêt à être démarré.
SafeKit livre le service web, safewebserver, qui s'exécute sur chaque serveur SafeKit. C'est un serveur Apache standard obligatoire pour :
la console web (voir section 3
page 35)
l'interface en ligne des commandes distribuées sur le cluster (voir section 9.1 page
145)
les checkers de type <module> (voir
section 13.16 page 286)
Le service safewebserver démarre automatiquement à la fin de l'installation du package SafeKit et au reboot des serveurs. Si vous n’avez pas besoin de ce service et souhaitez supprimer son démarrage automatique au boot, référez-vous à la section 9.2 page 147.
Depuis SafeKit 7.5, la configuration par défaut est HTTP avec authentification à base de fichiers, initialisée avec un seul utilisateur admin ayant le rôle Admin. Si vous souhaitez en changer, référez-vous à la section 11 page 181.
La configuration de safewebserver est définie dans les fichiers livrés sous SAFE/web/conf. Il s'agit de fichiers de configuration Apache standards (voir http://httpd.apache.org). La configuration du service est décomposée dans plusieurs fichiers qui peuvent être inclus ou non en fonction des besoins.
|
|
Après modification, vous devez redémarrer le service pour charger la nouvelle configuration avec la commande : safekit webserver restart (voir section 9.2 page 147). |
Si nécessaire, vous ne devez modifier que le fichier de configuration principal httpd.conf pour l'adapter à vos besoins. Le caractère de commentaire # désactive la définition. Ce fichier contient la définition de :
|
Définition du port de connexion :
httpadminport (9010)
Rôle Admin par défaut. En fonction du rôle souhaité, décommentez le port correspondant et commentez les autres : ü httpadminport pour le rôle Admin ü httpcontrolport pour le rôle Control ü httpmonitorport pour le rôle Monitor Quand httpcontrolport ou httpmonitorport sont décommentés, l’authentification doit être désactivée (voir ci-dessous).
httpsport (9453) |
|
Définition de l’authentification utilisateur
Define usefile
Activée par défaut. Commenter pour la désactiver. ü À désactiver lors de l’utilisation de httpcontrolport ou httpmonitorport ü Si activée, httpadminport doit être défini (non commenté) et useldap doit être désactivé
#Define useldap …
Désactivée par défaut. Décommenter pour l’activer. ü À désactiver lors de l’utilisation de httpcontrolport ou httpmonitorport ü Si activée, httpadminport doit être défini (non commenté) et usefile doit être désactivé |
|
Définition de la journalisation Apache Désactivé par défaut #Define Loglevel info #Define accesslog
Décommenter ces lignes pour activer la journalisation. Les journaux sont httpd.log et access.log. Ils sont générés dans le répertoire SAFEVAR. |
Les autres fichiers de configuration sont listés ci-dessous. La modification de l'un d'entre eux peut causer des problèmes lors de la mise à jour de SafeKit.
|
Configuration globale |
httpd_main.conf |
|
Configuration HTTP |
httpd.webconsole.conf |
|
Configuration HTTPS et authentification à base de certificat client |
httpd.webconsolessl.conf
|
|
Configuration de l'authentification à base de formulaire |
httpd.webconsoleformauth.conf
|
|
Configuration de l’authentification à base de fichier |
httpd.webconsolefileauth.conf
|
|
Configuration de l’authentification à base de serveur LDAP/AD |
httpd.webconsoleldap.conf
|
Les configurations HTTP et HTTPS ne doivent pas être activées simultanément.
Ne pas modifier les fichiers .default sous SAFE/web/conf car il s’agit de sauvegarde de la configuration livrée.
Par défaut, connectez la console web avec l'URL http://servername:9010. Le serveur web SafeKit redirigera vers la page appropriée en fonction de vos paramètres de sécurité.
Si vous devez modifier la valeur par défaut :
1. Éditez SAFE/web/conf/httpd.conf et modifiez la valeur des variables httpadminport, httpcontrolport, httpmonitorport ou httpsport
2. Redémarrez le service avec la commande safekit webserver restart
La valeur par défaut 9010(HTTP)/9453(HTTPS) est également utilisée par d’autres composants de SafeKit. Par conséquent si la valeur par défaut est modifiée, il faut également modifier la configuration pour ces composants, de la façon suivante :
Dans
le fichier de configuration global de SafeKit, safeini.xml,
pour les commandes distribuées :
1. Éditez le fichier safeini.xml (pour Linux: /etc/safeini.xml; pour Windows: c:\Windows\safeini.xml)
2. Supprimez les chaînes <-- et --> qui commentent la définition de SAFESRVPORT
3. Remplacez la valeur de SAFESRVPORT par la nouvelle valeur que vous avez défini dans httpd.conf
|
|
Avant l'upgrade de SafeKit, sauvegardez ce fichier si vous l'avez modifié car son contenu n'est pas préservé. |
Dans la
configuration des modules qui définissent un checker de type
<module> :
1. Éditez le fichier userconfig.xml du module
2. Rajoutez l’attribut port et lui affecter la nouvelle valeur du port
<module name="mirror">
<to addr="192.168.1.31" port="9010"/>
</module>
</check>
3. Appliquez la nouvelle configuration du module
La configuration par défaut est pour HTTP. Elle inclut l’authentification à base de fichier, initialisée avec un seul utilisateur admin ayant le rôle Admin. Celle-ci peut être étendue pour d’autres utilisateurs ou rôles, ou bien remplacée par une autre configuration. Pour une description détaillée, voir section 11 page 181.
La configuration HTTPS requiert l’installation de certificats ainsi qu’une méthode d’authentification des utilisateurs. Pour une description détaillée et sa mise en œuvre, voir section 11 page 181. Une fois cela effectué, la configuration HTTPS peut être activée :
1. Copiez le fichier SAFE/web/conf/httpd.webconsolessl.conf dans le répertoire SAFE/web/conf/ssl
2. Redémarrez le service avec la commande safekit webserver restart
N’appliquez pas cette procédure si vous utilisez l'assistant de configuration HTTPS car il l'applique automatiquement.
Pour revenir à la configuration HTTP si celle-ci a été changée pour HTTPS :
1. Supprimez le fichier SAFE/web/conf/ssl/httpd.webconsolessl.conf
2. Redémarrez le service avec la commande safekit webserver restart
Tous les fichiers nécessaires à la configuration HTTPS sont préservés. Il est donc possible de revenir à la configuration HTTPS si besoin :
1. Copiez le fichier SAFE/web/conf/httpd.webconsolessl.conf dans le répertoire SAFE/web/conf/ssl
2. Redémarrez le service avec la commande safekit webserver restart
Pour envoyer une notification par mail, il faut d’abord choisir un utilitaire d’émission de mail. En Windows, vous pouvez télécharger le binaire depuis l’espace de téléchargement de mailsend. En Linux, vous pouvez utiliser la commande mail plutôt que mailsend.
|
|
La notification par mail est implémentée par les scripts utilisateurs dans le module. Ces scripts peuvent être édités via la console SafeKit ou directement sur le serveur. A chaque fois que l’un de ces scripts est modifié, il faut ré-appliquer la configuration du module sur tous les nœuds (via la console SafeKit ou la ligne de commande) pour que la modification soit prise en compte. |
Les lignes suivantes, insérées à la fin du script prestart d'un module (nommé AM), permettent d’envoyer un e-mail avec le nom du module et le serveur sur lequel le module est démarré :
In Windows:
c:\safekit\modules\AM\bin\prestart.cmd
if [%3] NEQ [start] goto nostart
rem send mail only on start (not on stopstart or stopwait)
FOR /F "usebackq" %%i IN (`hostname`) DO SET HOSTNAME=%%i
mailsend.exe -d mydomain.com -smtp
smtp.mydomain.com
–t admin@mydomain.com -f SafeKit -sub "Start module %SAFEMODULE% on
%HOSTNAME%" -M "Running prestart" +cc +bc
:nostart
In Linux:
/opt/safekit/modules/AM/bin/prestart
if [ "$3" = "start" ]; then
# send mail only on start (not on stopstart or stopwait)
echo "Running prestart" |
mail -s " Start module $SAFEMODULE on `hostname`" admin@mydomain.com
fi
Quand le module s’arrête, cela peut être notifié à l’aide du script poststop. Ce script n’est pas livré par défaut et peut-être créé avec le contenu suivant (pour le module nommé AM) :
In Windows:
c:\safekit\modules\AM\bin\poststop.cmd
@echo off
rem Script called on module stop, stopstart, stopwait
rem For logging into module log use:
rem "%SAFE%\safekit" printi | printe "message"
rem stdout goes into Application log
echo "Running poststop %*"
rem send an email only on stop (not on stopstart or stopwait)
if [%3] NEQ [stop] goto nostop
FOR /F "usebackq" %%i IN (`hostname`) DO SET HOSTNAME=%%i
mailsend -d mydomain.com -smtp
smtp.mydomain.com
–t admin@mydomain.com -f SafeKit -sub "Stop module %SAFEMODULE% on
%HOSTNAME%" -M "Running poststop" +cc +bc
:nostop
In Linux:
/opt/safekit/modules/AM/bin/poststop
#!/bin/sh
# Script called on module stop, stopstart, stopwait
# For logging into SafeKit log use:
# $SAFE/safekit printi | printe "message"
# stdout goes into Application log
echo "Running poststop $*"
if [ "$3" = "stop"]; then
# send mail only on stop (not on stopstart or stopwait)
echo "Running poststop" | mail -s " Stop module
$SAFEMODULE on `hostname`" admin@mydomain.com
fi
Le script transition peut être utilisé pour envoyer un e-mail sur les principaux changements de l’état local du module qui s’exécute sur le serveur. Par exemple, cela peut être utile pour savoir quand le module devient ALONE (sur basculement notamment). Ce script n’est pas livré par défaut et peut-être créé avec le contenu suivant. Remplacez AM par le nom du module et <mail …> par la commande d’émission d’e-mail et ses arguments.
In
Windows:
c:\safekit\modules\AM\bin\transition.cmd
@echo off
rem Script called on module transitions
rem For logging into module log use:
rem "%SAFE%\safekit" printi | printe "message"
rem stdout goes into Application log
echo "Running transition %*"
rem send an email when transiting from WAIT to ALONE, SECOND to ALONE, PRIM to ALONE
IF [%1] EQU
[WAIT] if [%2] EQU [ALONE] <mail
…>
IF [%1] EQU [SECOND] if
[%2] EQU [ALONE] <mail …>
IF [%1] EQU [PRIM] if [%2] EQU [ALONE] <mail …>
In Linux:
/opt/safekit/modules/AM/bin/transition
#!/bin/sh
# Script called on module
transitions
# For logging into SafeKit log use:
# $SAFE/safekit printi | printe "message"
# stdout goes into Application log
echo "Running transition $*"
# send an email when transiting from
WAIT to ALONE, SECOND to ALONE, PRIM to ALONE
if [ "$1" = "WAIT" -a "$2" = "ALONE" ]
; then <mail …> ; fi
if [ "$1" = "SECOND" -a "$2" = "ALONE"
] ; then <mail …> ; fi
if [ "$1" = "PRIM" -a "$2" = "ALONE" ]
; then <mail …> ; fi
Pour utliser l’agent SNMP de SafeKit, safeagent, vous devez :
le configurer pour démarrer au boot avec la commande :
|
safekit boot [snmpon | snmpoff | snmpstatus] |
Contrôle le démarrage automatique au boot du service safeagent ("on" ou "off" ; par défaut "off") |
ajouter la règle de pare-feu correspondante
ü en Linux, si la configuration par défaut de safeagent est utilisée (port 3600), ainsi que les pare-feu du système, vous pouvez utiliser la commande :
SAFEBIN/firewallcfg add safeagent
ü en Windows, si vous reposez sur le pare-feu du système, le pare-feu a déjà été configuré si vous avez appliqué la commande :
SAFEBIN/firewallcfg add
le démarrer avec la commande :
|
safekit safeagent [start | stop | restart | check] |
Contrôle le démarrage/arrêt du service safeagent qui met en œuvre un agent SNMP SafeKit. |
si vous n’utilisez pas les configurations par défaut, configurer
le pare-feu pour accepter les communications sur le port de l’agent SNMP (3600
par défaut)
La configuration du service safeagent est définie dans le fichier auto-documenté SAFE/snmp/conf/snmpd.conf. C'est un fichier de configuration net-snmp standard décrit dans http://net-snmp.sourceforge.net. Par défaut, le service écoute sur le port UDP agentaddress 3600 et accepte des requêtes de lecture de la communauté publique et des requêtes d'écriture de la communauté privée. Les requêtes de lecture sont utilisées pour lire l'état d'un module alors que les requêtes d'écriture permettent de réaliser des actions sur le module.
Des traps SNMP peuvent être envoyés par l'agent SafeKit agent lorsque les messages de niveau I et E sont logés. L'adresse IP à qui envoyer les traps doit être configurée avec la ligne trapsink SNMPManagerIPaddress dans snmpd.conf.
Vous pouvez changer la configuration par défaut suivant vos besoins. Lorsque vous modifier snmpd.conf, vous devez redémarrer l'agent pour charger la nouvelle configuration : safekit safeagent restart.
La MIB SafeKit est livrée dans SAFE/snmp/mib/safekit.mib (lire ce fichier pour avoir le détail de la MIB). Noter que la MIB inclut la définition du trap envoyée par SafeKit.
La MIB SafeKit est accessible avec l'identifiant suivant (OID, préfixe des variables SNMP de SafeKit SNMP): = enterprises.bull.safe.safekit (1.3.6.1.4.1.107.175.10).
La MIB SafeKit définit :
la table de modules : skModuleTable
L'index dans cette table correspond à l'id du module applicatif tel qu'il est retourné par la commande safekit module listid.
A travers la MIB, vous pouvez lire et afficher l'état des modules applicatifs sur un serveur (STOP, WAIT, ALONE, UP, PRIM, SECOND) ou vous pouvez agir sur un module (start, stop, restart, swap, stopstart, prim, second).
Par exemple, l'état du module d'id 1 est lu avec un get sur la variable SNMP suivante : enterprises.bull.safe.safekit.skModuleTable.skModuleEntry.skModuleCurrentState.1 = stop (0)
Utiliser la commande snmp walk pour voir l'ensemble des entrées de la MIB (commande non livrée avec le produit).
La table de ressources : skResourceTable
Chaque élément définit une ressource comme par exemple un checker d'interface réseau "intf.192.168.0.0" et son status (unknown, init, up, down).
Exemple: requête SNMP get sur enterprises.bull.safe.safekit.skResourceTable.skResourceEntry.skResourceName.1.2 veut dire nome de la ressource 2 dans le module applicatif 1.
Le trap :
Les traps sont envoyés avec l'OID enterprises.bull.safe.safekit.skTrapLogMesg. Un trap contient le dernier message SafeKit de niveau I ou E de chaque module.
Il existe un journal des commandes exécutées sur le serveur SafeKit. Ce journal permet d’effectuer un audit des actions réalisées sur le serveur pour aider au support par exemple. Il enregistre toutes les commandes safekit qui sont exécutées sur le serveur et qui modifient le système telles que l’installation d’un module, sa configuration, son lancement/arrêt, le lancement/arrêt du service web de SafeKit, …
|
Depuis SafeKit 7.5, ce journal est stocké dans le fichier SAFEVAR/log.db au format SQLite3. Dans les versions antérieures, il était stocké dans le fichier texte SAFEVAR/commandlog. |
Pour consulter ce journal :
exécuter la commande safekit
cmdlog sur le serveur SafeKit
ou
cliquer sur l’onglet le journal de commandes depuis la console
web.
Ci-dessous un extrait du contenu « brut » du journal de commandes :
| 2021-07-27 14:37:33.205122 | safekit | mirror | 6883 | START | config -m mirror
| 2021-07-27 14:37:33.400513 | cluster | mirror | 0 | I | update cluster state
| 2021-07-27 14:37:33.405597 | cluster | mirror | 0 | I | module state change on node centos7-test3
| 2021-07-27 14:37:34.193280 | | | 6883 | END | 0
| 2021-07-27 14:37:34.718292 | cluster | mirror | 0 | I | update cluster state
| 2021-07-27 14:37:34.722080 | cluster | mirror | 0 | I | module state change on node centos7-test4
| 2021-07-27 14:37:37.510971 | | | 6871 | END | 0
| 2021-07-27 14:38:05.092924 | safekit | mirror | 7017 | START | prim -m mirror -u web@10.0.0.103
| 2021-07-27 14:38:05.109368 | | | 7017 | END | 0
Chaque champ a la signification suivante :
ü le 1er correspond à la date d’écriture de l’entrée dans le journal
ü le suivant correspond au type d’action exécutée.
ü le suivant porte le nom du module si l’action s’applique à un module en particulier
ü le suivant contient le pid du processus exécutant l’action
ü le suivant vaut START au lancement de la commande, suivi du contenu de la commande ; ou bien, il vaut END lorsque la commande s’est terminée suivi du code de retour.
11.1 « Vue générale » page
181
11.2 « Configuration HTTP » page 183
11.3 « Configuration HTTPS » page 187
11.4 « Configuration de l’authentification utilisateur » page 196
11.5 « Exemple de configuration de HTTPS et de
l'authentification par certificat personnel » page 217
11.6 « Configuration avancée avec la PKI SafeKit » page 223
Le service web de SafeKit est principalement utilisé par :
la console web (voir section 3
page 35)
l'interface en ligne des commandes distribuées sur le cluster (voir section 9.1 page
145)
SafeKit fournit différentes configurations pour ce service afin de renforcer la sécurité de la console web SafeKit et des commandes distribuées.

|
Protocole |
Authentification |
Gestion de rôle |
|
ü HTTP ü HTTPS |
ü Aucune ü A base de fichiers ü LDAP/AD ü Certificat client |
ü Admin ü Control ü Monitor |
Les configurations les plus sûres sont basées sur HTTPS et l'authentification des utilisateurs.
SafeKit fournit un assistant de configuration pour configurer HTTPS, et optionnellement les certificats clients, avec une autorité de certification "privée" (la PKI de SafeKit). Cela permet de sécuriser rapidement SafeKit sans avoir besoin d'une PKI externe (PKI d'entreprise ou PKI commerciale) qui fournit une autorité de certification de confiance.
SafeKit propose également une gestion de rôles basée sur 3 rôles :
|
Rôle Admin
|
Ce rôle accorde tous les droits d'administration en autorisant l’accès aux onglets :
|
|
Rôle Control |
Ce rôle accorde les droits de contrôle et de supervision en autorisant l’accès aux onglets :
|
|
Rôle Monitor |
Ce rôle accorde uniquement le droit de supervision en autorisant l’accès à l’onglet :
|
Depuis SafeKit 7.5, la configuration par défaut est la suivante :
|
Configuration |
Protocole |
Authentification/Gestion de rôles |
|
Par défaut |
ü HTTP |
ü Authentification à base de fichiers ü Initialisation avec un unique utilisateur admin, ayant le rôle Admin
Pour la configuration, voir 11.2.1 page 183 |
Les configurations prédéfinies sont les suivantes :
|
Configuration |
Protocole |
Authentification/Gestion de rôles |
|
Non sécurisée |
ü HTTP |
ü Pas d’authentification ü Rôle identique pour tous les utilisateurs
Pour la configuration, voir 11.2.2 page 185
|
|
A base de fichiers |
ü HTTP ü HTTPS
Pour configurer HTTPS avec :
|
ü Authentification à base de fichiers (nom/mot de passe des utilisateurs stockés dans un fichier Apache) ü Gestion de rôles facultative (stockée dans un fichier Apache)
Pour la configuration, voir 11.4.1 page 196 |
|
LDAP/AD |
ü HTTP ü HTTPS
Pour configurer HTTPS avec :
|
ü Authentification à base de serveur LDAP/AD ü Gestion de rôles facultative
Pour la configuration, voir 11.4.2 page 199 |
|
Certificat client |
ü HTTPS
Pour la configuration avec :
|
ü Authentification à base de certificat client ü Gestion de rôles intégrée
Pour la configuration :
|
Par défaut, après l'installation de SafeKit, le service web est configuré pour HTTP avec une authentification à base de fichiers qui doit être initialisée.
La configuration par défaut peut être étendue comme décrit en 11.2.1 page 183.
Elle peut aussi être remplacée par la configuration minimale décrite en 11.2.2 page 185 ou une des autres configurations prédéfinies.
Depuis SafeKit 7.5, la configuration par défaut repose sur HTTP avec une authentification à base de fichiers. Elle nécessite d’être initialisée comme décrit ci-dessous. C’est une étape obligatoire.
Cette configuration par défaut peut être étendue :
ü pour rajouter des utilisateurs et leur affecter un rôle, comme décrit en 11.4.1 page 196
ü pour passer en HTTPS, avec :
la PKI SafeKit, décrit en 11.3.1 page
187
votre PKI, décrit en 11.3.2 page 192
Après l'installation de SafeKit, la configuration et le redémarrage du service web ne sont pas nécessaires puisqu'il s'agit de la configuration par défaut, et que le service web a été démarré avec celle-ci. Si vous avez modifié la configuration par défaut et que vous souhaitez revenir à celle-ci, voir 11.4.1 page 196.
SafeKit fournit un script pour que la console Web et les commandes distribuées soient rapidement opérationnelles.
En Linux, ce script peut être appelé automatiquement lors de l’installation de SafeKit. En Windows, il doit être exécuté manuellement. Dans les deux cas, vous devez donner la valeur du mot de passe, pwd pour l’utilisateur admin.
|
webservercfg -passwd pwd
|
Sur S1 et S2 :
SAFE/private/bin/webservercfg.ps1 -passwd pwd
SAFE/private/bin/webservercfg -passwd pwd
Vous devez affecter le même mot de passe sur tous les nœuds. |
|
|
Le mot de passe doit être identique sur tous les nœuds du cluster. Dans le cas contraire, la console web et les commandes distribuées échoueront avec des erreurs d'authentification. |
Une fois cette initialisation effectuée sur tous les nœuds du cluster :
vous pouvez vous authentifier dans la console web avec le nom admin et le mot de passe que vous avez
fourni. Le rôle est Admin par défaut (à moins que vous ne changiez le
comportement par défaut en fournissant le fichier group.conf comme décrit en 11.4.1.1 page 197).
En cas d'échec de l'authentification dans la console, vous devrez peut-être réinitialiser le mot de passe. Pour cela, exécutez à nouveau webservercfg -passwd pwd sur tous les nœuds.
vous pouvez exécuter des commandes distribuées. Leur
authentification est basée sur un utilisateur dédié rcmdadmin avec le rôle Admin. Il est géré dans un fichier
utilisateur différent et privé que vous n'avez pas à modifier.
En cas d'échec de l'authentification pour la commande distribuée, vous devrez peut-être réinitialiser le mot de passe de rcmdadmin. Pour réinitialiser uniquement celui-ci, sans modifier le mot de passe de admin, exécutez webservercfg -rcmdpasswd pwd sur tous les nœuds.
La configuration est terminée ; vous pouvez maintenant vérifier qu'elle est opérationnelle :
Tester la console web
1. Démarrer un navigateur web
2. Le connecter à l’URL http://servername:9010 (où servername est l’adresse IP ou le nom d’un nœud SafeKit)
3. Dans la page de connexion, entrer comme nom d’utilisateur admin et comme mot de passe celui que vous avez donné pendant l’initialisation (par exemple, pwd). Puis cliquer sur Connecter
4. La page chargée contient tous les onglets correspondant au rôle Admin (qui est le rôle par défaut)
Tester une commande distribuée
1. Se loguer sur S1 ou S2 en tant que administrateur/root
2. Ouvrir un terminal (PowerShell, shell, …)
3. Aller dans le répertoire SAFE
4. Exécuter safekit -H "*" level
qui doit retourner le résultat de la commande level sur tous les nœuds
Elle est basée sur la configuration d'un rôle unique qui est appliqué à tous les utilisateurs sans nécessiter d'authentification. Cette solution ne peut être mise en œuvre qu'en HTTP et est incompatible avec les méthodes d'authentification des utilisateurs.
Pour configurer (SAFE=C:\safekit en Windows si %SYSTEMDRIVE%=C: ; et SAFE=/opt/safekit en Linux) :
|
|
Sur S1 et S2 :
#Define usefile … #Define useldap
httpadminport (9010)
ü httpadminport pour le rôle Admin ü httpcontrolport pour le rôle Control ü httpmonitorport pour le rôle Monitor |
|
|
Sur S1 et S2, désactiver HTTPS s’il avait été active :
|
|
|
Sur S1 et S2 :
|
La configuration est terminée ; vous pouvez maintenant vérifier qu'elle est opérationnelle :
Tester la console web
1. Démarrer un navigateur web
2. Le connecter à l’URL http://servername:9010 (où servername est l’adresse IP ou le nom d’un nœud SafeKit)
3. La page chargée contient uniquement les onglets autorisés en fonction du port sélectionné précédemment
Tester une commande distribuée
1. Se loguer sur S1 ou S2 en tant que administrateur/root
2. Ouvrir un terminal (PowerShell, shell, …)
3. Aller dans le répertoire SAFE
4. Exécuter safekit -H "*" level
qui doit retourner le résultat de la commande level sur tous les nœuds
Le service web HTTPS s'appuie sur la présence d'un ensemble de certificats énumérés ci-dessous :
|
|
Le certificat de l’Autorité de Certification CA utilisée pour générer les certificats serveur de S1 et S2 |
|
|
|
|
|
Les certificats serveur de S1 et
de S2 permettant de s’assurer de l’identité des nœuds |
Appliquez l’une des 2 procédures suivantes pour la configuration HTTPS et des certificats associés :
11.3.1 « Configuration HTTPS avec la PKI SafeKit » page 187
Aller à cette section pour une configuration rapide de HTTPS avec l’autorité de certification « privée » de SafeKit
11.3.2 «Configuration HTTPS avec une PKI externe» page 192
Aller à cette section pour configurer HTTPS à l’aide de votre PKI externe (PKI d'entreprise ou PKI commerciale) qui fournit une autorité de certification de confiance
A l’issue de cette configuration, vous devez mettre en œuvre une des méthodes d’authentification décrites dans la section 11.4 page 196.
Suivez les étapes suivantes pour configurer HTTPS avec la PKI de SafeKit et l’assistant de configuration associé :
Tout d'abord, choisissez parmi les nœuds composant le cluster
SafeKit, un premier serveur. Le nœud sélectionné sera appelé dans la suite le premier serveur (ou serveur CA). Ce nœud agira en plus en
tant que serveur d'autorité de certification pour les autres nœuds. Appliquez
les étapes de 11.3.1.1 à 11.3.1.4 pour mettre en œuvre HTTPS sur le premier
serveur, S1 par exemple.
Les autres nœuds sont appelés serveur
supplémentaire (ou serveur
non-CA). Pour chaque serveur supplémentaire appliquez les étapes de 11.3.1.5 à 11.3.1.8 pour leur appliquer la configuration HTTPS. Seulement sur S2 dans
l’exemple.
Appliquez l’étape 11.3.1.9 pour arrêter le service web CA sur
tous les serveurs supplémentaires. Si vous souhaitez utiliser
l’authentification à base de certificats clients, avant d’arrêter le service du
premier serveur, S1 dans l’exemple, appliquez la procédure décrite en 11.4.3 page 202
|
|
Vérifier que l'horloge système est réglée à la date et l'heure courante sur tous les clients et les serveurs. Les certificats portant une date de validité, une différence de date entre les systèmes peut avoir pour effet de les invalider. |
Sur le serveur :
1. Se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes
2. Aller dans le répertoire SAFE/web/bin
3. Exécuter la commande ./startcaserv
A l’invite, entrer le mot de passe qui protègera l’accès à ce service pour l’utilisateur CA_admin (par exemple, PasW0rD).
|
|
Dans les prochaines étapes, ce mot de passe devra être fourni pour se connecter à ce service. Le service web CA qui s’exécute sur le premier serveur, est aussi accédé par les serveurs supplémentaires et par les clients de la console web pour télécharger les signatures et certificats. |
|
|
Etant donné que ce service écoute sur le port TCP 9001, s’assurer que ce port n’est pas déjà utilisé et qu’il n’est pas bloqué par la configuration du pare-feu. En Linux, le port 9001 est automatiquement ouvert par la commande startcaserv. En Windows, la commande firewallcfg ouvre les communications pour le service safeacaserv. |
Lancer l'assistant de configuration HTTPS en démarrant sur le serveur un navigateur web local et en le connectant à https://localhost:9001.
Le certificat associé au service web CA est auto-signé. Par conséquent, le navigateur affiche un avertissement de sécurité indiquant que le certificat est invalide. Vous devez cliquer sur Continue to this website (not recommended) pour poursuivre

À l'invite de connexion, entrez CA_admin comme nom d'utilisateur et le mot de passe que vous avez spécifié lors du démarrage du service web CA (par exemple, PasW0rD)

L’assistant de configuration HTTPS est affiché :

ü certaines méthodes de configuration avancées sont présentes dans le panneau ... qui n'est pas décrit dans ce document
ü le panneau journal des commandes affiche le résultat des commandes qui ont été exécutées
Cette étape active HTTPS sur le premier serveur :
Dans l’assistant de configuration
HTTPS
Aller à l’onglet Configurer le serveur
HTTPS
Ouvrir le panneau Premier serveur

Cliquer sur le bouton Confirmer
A la fin du traitement, l'autorité de certification est générée ; les certificats nécessaires à l’exécution du service web SafeKit en HTTPS (service safewebserver), sont installés localement. De plus, ce service a été reconfiguré et redémarré en HTTPS (en appliquant automatiquement la procédure décrite en 10.6.4 page 174).
Dans l’assistant de configuration
HTTPS
Aller à l’onglet Changer les règles du
pare-feu

Sélectionner oui pour appliquer automatiquement
les règles
Cette option consiste à exécuter le script firewallcfg qui applique les règles pour SafeKit au pare-feu du système d’exploitation (en Windows, Microsoft Windows Firewall ; en Linux, firewalld ou iptables).
Sélectionner non pour ne pas
appliquer les règles
Choisissez cette option si vous souhaitez configurer vous-même le pare-feu ou si vous utilisez un pare-feu différent de celui du système. Pour la liste des processus et ports de SafeKit, voir 10.3 page 160.
Cliquer sur le bouton Confirmer pour appliquer votre choix
Une fois le premier serveur configuré pour HTTPS, il faut configurer tous les autres serveurs. Pour démarrer le service web CA (service safecaserv) sur ceux-ci, appliquer la même procédure que celle décrite en 11.3.1.1 page 188.
Sur le serveur supplémentaire, appliquer la même procédure que celle décrite en 11.3.1.2 page 188, pour lancer l’assistant de configuration.
Cette étape active HTTPS sur un serveur différent du premier serveur :
Dans l’assistant de configuration
HTTPS
Aller à l’onglet Configurer le serveur
HTTPS
Ouvrir le panneau Serveur supplémentaire

Entrer l’adresse IP du premier serveur
Entrer le mot de passe tel qu’il a été spécifié au moment du
lancement du service web CA sur le premier serveur (par exemple, PasW0rD)
Cliquer sur le bouton Confirmer
A l’issue du traitement, les certificats nécessaires pour exécuter le service web SafeKit (service safewebserver) en mode HTTPS sont installés localement. De plus, ce service a été reconfiguré et redémarré en HTTPS (en appliquant automatiquement la procédure décrite 10.6.4 page 174).
Appliquer sur le serveur supplémentaire, la même procédure que celle décrite en 11.3.1.4 page 190.
Si vous souhaitez mettre en œuvre l’authentification à base de certification client, avant d’arrêter le service web CA sur le premier serveur, appliquez la procédure décrite en 11.4.3 page 202.
Une fois tous les serveurs et clients configurés, il faut arrêter le service web CA (service safecaserv) sur tous les serveurs. Cela limite le risque d’accès accidentel ou malveillant à l’assistant de configuration HTTPS.
Pour arrêter le service web CA :
1. Se connecter en tant qu’administrateur/root et ouvrir une fenêtre d’invite de commandes
2. Aller dans le répertoire SAFE/web/bin
3. Exécuter la commande ./stopcaserv
|
|
En Windows, cette commande supprime également l'entrée du service safecaserv pour empêcher son démarrage accidentel par la suite. En Linux, le port 9001 est automatiquement fermé sur le pare-feu local. |
Appliquez les étapes ci-dessous pour configurer HTTPS avec votre autorité de certification de confiance (PKI d’entreprise ou commerciale).
Vous devez récupérer les certificats depuis votre PKI dans le format décrit ci-dessous.
|
|
Attention : vous devez fournir tous les noms et/ou adresses IP utilisés pour la connexion HTTPS. Ceux-ci doivent également être inclus dans le fichier de configuration du cluster SafeKit. Voir l'exemple dans 11.3.2.1.3 page 193. |
|
|
Les certificats serveur de S1 et S2 doivent être signés par l’autorité de certification CA |
||
|
|
Le certificat serveur de S1 permettant de l’authentifier |
||
|
|
Le certificat serveur de S2 permettant de l’authentifier |
||
|
server1.crt server2.crt |
ü Fichier pour le certificat X509 dans le format PEM Le sous-champ CN (Common Name) du champ Objet (Subject) ou le champ Autre nom de l’objet (Subject Alternative Name), doit contenir : ü localhost et 127.0.0.1 ü noms et/ou adresses IP de S1 pour server1.crt ü noms et/ou adresses IP de S2 pour server2.crt
|
||
|
server1.key server2.key |
|
Installer les certificats comme suit (SAFE=C:\safekit en Windows si System Drive=C: ; et SAFE=/opt/safekit en Linux) :
|
server1.crt server1.key
|
Sur S1 :
|
|
server2.crt server2.key |
Sur S2 :
|
Vous pouvez contrôler les certificats installés sur le nœud SafeKit avec :
cd SAFE/web/bin
checkcert -t server
Cette commande retourne en échec si une erreur est détectée.
Vous pouvez également vérifier que le certificat contient bien un nom DNS ou une adresse IP :
checkcert -h ”nom DNS”
checkcert -i ”adresse IP”
Vérifier également que le certificat contient bien localhost et 127.0.0.1 :
checkcert -h ”localhost”
checkcert -i ”127.0.0.1”
Prenons comme exemple l’architecture suivante :

Le fichier de configuration
pour le cluster SafeKit, SAFEVAR/cluster/cluster.xml, contient les valeurs suivantes pour
le champ addr :
<?xml version="1.0"
encoding="UTF-8"?>
<cluster>
<lans>
<lan name="default" console="on"
framework="on">
<node name="s1" addr="10.0.0.10"/>
<node name="s2" addr="10.0.0.11"/>
</lan>
<lan name="console" console="on"
framework="off">
<node name="s1" addr=" s1.w.com"/>
<node name="s2" addr=" s2.w.com"/>
</lan>
</lans>
</cluster>
Le certificat serveur et la configuration du cluster doivent contenir la même liste de valeurs (noms DNS et/ou adresses IP). Si ce n’est pas le cas, la console web SafeKit et les commandes distribuées ne fonctionneront pas correctement.
Pour vérifier que cela est bien le cas :
1. Copier le fichier .crt (ou .cer) sur une station de travail Windows
2. Double cliquer sur le fichier pour l’ouvrir avec Extension noyau de chiffrement
3. Cliquer sur l’onglet Détails
4. Vérifier le contenu du champ Autre nom de l’objet (Subject Alternative Name)
|
|
Si vous préférez utiliser la ligne de commande, exécutez sur chaque nœud : SAFE/web/bin/openssl.exe x509 -text -noout -in SAFE/web/conf/server.crt Et vérifier le contenu de la valeur après Subject Alternative Name |
|
|
|
|
|
|
Vous devez récupérer le certificat de l’Autorité de Certification CA (chaîne de certificats pour la CA racine et les intermédiaires, s’il y en a) utilisé pour générer les certificats serveur de S1 et S2. Le format attendu est le suivant :
|
cacert.crt |
Le certificat de l’Autorité de Certification CA utilisée pour générer les certificats serveur.
La chaîne de certificats pour la CA racine et les intermédiaires, s’il y en a |
Certificats serveur pour S1 et S2 |
Si vous rencontrez des difficultés pour récupérer ce fichier depuis votre PKI, vous pouvez le construire à l’aide de la procédure décrite en 7.18. page 131.
Installer le certificat comme suit (SAFE=C:\safekit en Windows si System Drive=C: ; et SAFE=/opt/safekit en Linux) :
|
cacert.crt |
Sur S1 et S2 :
|
Vous pouvez contrôler l’installation avec :
cd SAFE/web/bin
checkcert -t CA
Cette commande retourne en échec si une erreur est détectée.
Vous devez également vérifier que le fichiers cacert.crt contient bien la chaîne de certificats pour les autorités de certification racine et intermédiaires.
Pour activer la configuration HTTPS (SAFE=C:\safekit en Windows si System Drive=C: ; et SAFE=/opt/safekit en Linux):
|
|
Sur S1 et S2 :
|
|
|
Sur S1 et S2 :
|
Vous pouvez exécuter le script firewallcfg pour appliquer les règles pour SafeKit au pare-feu du système d’exploitation (en Windows, Microsoft Windows Firewall ; en Linux, firewalld ou iptables).
|
Pare-feu |
Sur S1 et S2 :
|
N’exécutez pas cette commande si vous souhaitez configurer vous-même le pare-feu ou si vous utilisez un pare-feu différent de celui du système. Pour la liste des processus et ports de SafeKit, voir 10.3 page 160.
Mettez en œuvre l’une des méthodes suivantes pour l’authentification utilisateur :
11.4.1 « Configuration l’authentification à base de fichier »
page 196
11.4.2 « Configuration de l’authentification à base de
serveur LDAP/AD » page 199
11.4.3 «Configuration de l’authentification à base de certificat
client avec la PKI SafeKit» page 202
11.4.4 « Configuration de l’authentification à base de
certificat client avec une PKI externe » page
209
A l’issue de cette configuration, vous pouvez utiliser la console web sécurisée.
L’authentification à base de fichier peut être appliquée en HTTP ou HTTPS. Elle repose sur les fichiers suivants :
|
Contrôle d’accès à partir du fichier des utilisateurs |
|
|
|
Configuration facultative pour restreindre le rôle de l'utilisateur. Si le fichier group.conf n'est pas présent, tous les utilisateurs authentifiés auront le rôle Admin. |
Les utilisateurs et groupes doivent être identiques sur S1 et S2, ainsi que les mots de passe. Ils sont définis par les fichiers user.conf et group.conf dans le répertoire SAFE/web/conf (SAFE=C:\safekit en Windows si %SYSTEMDRIVE%=C: ; et SAFE=/opt/safekit en Linux).
|
|
Pendant l'initialisation de la configuration par défaut, décrite dans 11.2.1 page 183, l'utilisateur nommé admin a été créé et est donc présent dans user.conf. Vous pouvez décider de le supprimer si vous en créez d'autres. |
Création d’un utilisateur
Les utilisateurs sont créés avec la commande SAFE/web/bin/htpasswd.
Par exemple, pour ajouter le nouvel utilisateur manager et lui affecter son mot de passe à managerpassword, exécutez :
SAFE/web/bin/htpasswd -b SAFE/web/conf/user.conf manager managerpassword
Le nouvel utilisateur est inséré dans le fichier SAFE/web/conf/user.conf :
|
|
admin:$2y$05$oPquL6Z2Y78QcXpHIako.O58Z6lWfa5A86XD.eCbEnbRcguJln9Ce manager:$apr1$U2GLivF5$x39WKmSpq6BGmLybESgNV1 operator1:$apr1$DetdwaZz$hy5pQzpUlPny3qsXrIS/z1 operator2:$apr1$ICiZv2ru$wRkc3BclBhXzc/4llofoc1 |
Affecter un rôle au nouvel utilisateur
Par défaut, tous les utilisateurs ont le rôle Admin. Si vous souhaitez affecter des rôles différents en fonction des utilisateurs, vous devez créer le fichier SAFE/web/conf/group.conf et y définir le rôle de chaque utilisateur. Ce fichier peut contenir les 3 groupes : Admin, Control, Monitor. Les utilisateurs auront le rôle correspondant au groupe auquel ils appartiennent.
|
|
Chaque ligne débute par le nom du groupe, suivi de :, suivi de la liste des utilisateurs (dont le séparateur est l’espace). Voir l’exemple ci-dessous. |
Par exemple, pour affecter le rôle Control au nouvel utilisateur manager :
|
|
Admin : admin Control : manager Monitor : operator1 operator2 |
|
|
Si vous activez la gestion de rôle, vous devez insérer l’utilisateur admin dans group.conf. Sinon, cet utilisateur ne sera plus opérationnel. |
Supprimer un utilisateur, …
Exécuter htpasswd -? Pour lister toutes les options de gestion des utilisateurs.
Installer les fichiers comme décrit ci-dessous (SAFE=C:\safekit en Windows si %SYSTEMDRIVE%=C: ; et SAFE=/opt/safekit en Linux):
|
|
Sur S1 et S2 :
|
|
|
Sur S1 et S2, si les groupes sont définis :
|
Ces fichiers doivent identiques sur tous les nœuds.
Pour activer l’authentification à base de fichier (SAFE=C:\safekit en Windows si %SYSTEMDRIVE%=C: ; et SAFE=/opt/safekit en Linux) :
|
|
Sur S1 et S2 :
Define usefile
# Define useldap
httpadminport (9010) |
|
|
Sur S1 et S2 :
|
La configuration est terminée ; vous pouvez maintenant vérifier qu'elle est opérationnelle :
Tester la console web
1. Démarrer un navigateur web
2. Le connecter à l’URL http://servername:9010 (où servername est l’adresse IP ou le nom d’un nœud SafeKit). Si HTTPS est configuré, il y a une redirection automatique sur https://servername:9453.
1. Dans la page de connexion, saisir le Nom utilisateur et le Mot de passe, puis cliquer sur Connecter. Avec la configuration par défaut de SafeKit 7.5, vous pouvez vous connecter avec l'utilisateur admin en donnant le mot de passe que vous lui avez attribué lors de l'initialisation.
2. La page chargée contient uniquement les onglets autorisés en fonction du rôle de l'utilisateur. Si les groupes n’ont pas été définis, tous les utilisateurs ont le rôle Admin.
Tester une commande distribuée
1. Se loguer sur S1 ou S2 en tant que administrateur/root
2. Ouvrir un terminal (PowerShell, shell, …)
3. Aller dans le répertoire SAFE
4. Exécuter safekit -H "*" level
qui doit retourner le résultat de la commande level sur tous les nœuds
L’authentification LDAP/AD peut être appliquée en HTTP ou HTTPS. Elle repose sur :
|
|
Contrôle d’accès à partir d’un compte LDAP/AD associé à l’utilisateur |
|
|
Configuration facultative des groupes LDAP/AD pour restreindre le rôle de l'utilisateur. Lorsque les groupes ne sont pas définis, tous les utilisateurs authentifiés ont le rôle Admin. |
|
|
Sur certaines distributions Linux (telles que RedHat 8 et CentOS 8), le démarrage du service web échoue lorsqu’il est configuré avec l’authentification LDAP/AD. Dans ce cas, appliquer la solution décrite dans SK-0092. |
Appliquer les étapes décrites ci-dessous après avoir vérifié que S1 et S2 peuvent bien se connecter au port du domaine contrôleur LDAP (par défaut est 389).
Si nécessaire, demandez à l’administrateur LDAP de créer les utilisateurs de la console web SafeKit.
Si vous souhaitez restreindre les accès en fonction des rôles, demandez à l’administrateur LDAP de créer les groupes Admin, Control, Monitor et d’affecter les utilisateurs au groupe adéquate. Si les groupes ne sont pas définis, tous les utilisateurs auront le rôle Admin.
Pour activer l’authentification LDAP/AD (SAFE=C:\safekit en Windows si %SYSTEMDRIVE%=C: ; et SAFE=/opt/safekit en Linux) :
|
|
Sur S1 et S2 : Initialiser l’authentification pour la commande distribuée. Cela peut avoir déjà été fait si vous avez initialisé la configuration par défaut après l’installation de SafeKit. Sinon :
où est le pwd est le mot de passe pour l’utilisateur privé rcmdadmin. Vous n’avez pas besoin de le mémoriser. |
||
|
|
Sur S1 et S2 :
# Define usefile
Define useldap
httpadminport (9010)
Define binddn "CN=bindCN,OU=bindOU1,OU=bindOU2,DC=domain,
DC=fq,DC=dn" Define bindpwd "Password0" Define searchurl "ldap://ldaporad.fq.dn:389/OU=searchou,DC=domain,DC=fq,DC=dn
ü les variables binddn et bindpwd doivent contenir les identifiants d’un compte possédant les droits de recherche dans le répertoire LDAP ü la variable searchurl définit l’url de recherche (au sens RFC2255) permettant d’authentifier l’utilisateur
Si aucun groupe n’est défini, tous les utilisateurs authentifiés auront le rôle Admin. |
||
|
Sur S1 et S2 : Pour activer la gestion de groupes :
Define admingroup "CN=Group1CN,OU=Group1OU1,OU=Group1OU2,DC=domain,DC=fq,DC=dn" Define controlgroup "CN=Group2CN,OU=Group2OU1,OU=Group2OU2,DC=domain,DC=fq,DC=dn" Define monitorgroup "CN=Group3CN,OU=Group3OU1,OU=Group3OU2,DC=domain,DC=fq,DC=dn"
Les utilisateurs appartenant au groupe admingroup, controlgroup ou monitorgroup, auront respectivement les rôles Admin, Control et Monitor. Pour une configuration plus avancée, voir la documentation du service web Apache (voir http://httpd.apache.org). |
|||
|
|
Sur S1 et S2 :
|
La configuration est terminée ; vous pouvez maintenant vérifier qu'elle est opérationnelle :
Tester la console web
3. Démarrer un navigateur web
4. Le connecter à l’URL http://servername:9010 (où servername est l’adresse IP ou le nom d’un nœud SafeKit). Si HTTPS est configuré, il y a une redirection automatique sur https://servername:9453.
5. Dans la page de connexion, saisir le Nom utilisateur et le Mot de passe, puis cliquer sur Connecter
6. La page chargée contient uniquement les onglets autorisés en fonction du rôle de l'utilisateur. Si les groupes n’ont pas été configurés, tous les utilisateurs ont le rôle Admin.
Tester une commande distribuée
1. Se loguer sur S1 ou S2 en tant que administrateur/root
2. Ouvrir un terminal (PowerShell, shell, …)
3. Aller dans le répertoire SAFE
4. Exécuter safekit -H "*" level
qui doit retourner le résultat de la commande level sur tous les nœuds
Une fois la configuration de HTTPS terminée, comme décrit dans 11.3.1 page 187, vous pouvez poursuivre avec la configuration de l'authentification à base de certificats clients :
1. La configuration du service web doit être modifiée pour activer l'authentification des certificats du client.
2. L’assistant de configuration des certificats client assiste dans la création et le téléchargement des certificats client pour les importer sur le poste de travail de l’utilisateur de la console. Pour cela, appliquer les sections de 11.4.3.2 à 11.4.3.6 sur chaque poste de travail des utilisateurs concernés.
|
|
Vérifier que l'horloge système est réglée à la date et l'heure courante sur tous les clients. Les certificats portant une date de validité, une différence de date entre les systèmes peut avoir pour effet de les invalider. |
Les assistants de configuration associés à la PKI SafeKit gèrent la création de tous les certificats nécessaires à la mise en place de l'authentification par certificat client pour la console web et les commandes distribuées :
|
|
Le certificat de l’Autorité de Certification CLCA utilisée pour générer les certificats client |
|
|
Les certificats client permettant d’assurer l’identité de l’utilisateur de la console et de restreindre ses accès en fonction de son rôle |
|
|
Les certificats client de S1 et de S2 permettant de s’assurer de l’identité du nœud qui exécute une commande distribuée |
|
|
Les certificats client de S1 et de S2 permettant de s’assurer de l’identité du nœud qui accède à la console en mode proxy |
Cette implémentation correspond à celle supportée depuis SafeKit 7.4. Elle a été modifiée depuis SafeKit 7.5 mais uniquement pour la configuration avec une PKI externe.
Pour activer l’authentification à base de certificat client (SAFE=C:\safekit en Windows si %SYSTEMDRIVE%=C: ; et SAFE=/opt/safekit en Linux) :
|
|
Sur S1 et S2 :
# Define useldap … # Define usefile
httpadminport (9010) |
|
|
Sur S1 et S2 :
|
Se connecter sur le poste de travail de l'utilisateur qui aura
accès à la console
Lancer un navigateur avec l’URL https://firstserver:9001/adduser.html
où firstserver est l’adresse IP
du premier serveur configuré pour HTTPS
Le certificat associé au service web CA est auto-signé. Par
conséquent, le navigateur affiche une alerte de sécurité indiquant que le
certificat est invalide. Vous devez cliquer sur Continue
to this website (not recommended) pour poursuivre

À l'invite de connexion, entrez CA_admin
le nom d'utilisateur et le mot de passe que vous avez spécifié lors du
démarrage du service web CA (par exemple, PasW0rD)

L’assistant de configuration des certificats client est affiché :

Créez un nouveau certificat client pour l'utilisateur s'il n'existe pas déjà.

Remplir les champs nom d'utilisateur,
mot de passe et sélectionner le rôle dans le formulaire. Notez que le nom d'utilisateur
doit être unique.
Cliquer sur Confirmer
Une fois le traitement du formulaire terminé, le certificat client généré (le fichier user_Admin_administrator.p12) est téléchargé par le navigateur
Une fois le certificat client téléchargé (le nouveau ou l’existant), l’importer dans le magasin des certificats de la station de travail de l’utilisateur. L’accès à la console web SafeKit est interdit tant que le certificat client n’a pas été importé.
La procédure d’importation dépend du navigateur web et/ou du système d’exploitation. La procédure ci-dessous est décrite pour Windows.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Le navigateur émet des alertes de sécurité lorsque vous vous connectez à la console web tant que ce certificat n’a pas été importé. La procédure d’importation dépend du navigateur web et/ou du système d’exploitation. La procédure ci-dessous est décrite pour Windows.
Cliquer sur Confirmer pour
télécharge le certificat CA
![]()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
La configuration est terminée ; vous pouvez maintenant vérifier qu'elle est opérationnelle :
Tester la console web
Une fois les certificats importés sur son poste de travail, l’utilisateur peut commencer à utiliser la console web.
1. Cliquer sur Confirmer pour démarrer la console

Ou
1. Démarrer un navigateur web
2. Le connecter à l’URL http://servername:9010 (où servername est l’adresse IP ou le nom d’un nœud SafeKit). Comme HTTPS est configuré, il y a une redirection automatique sur https://servername:9453.
3. En fonction des navigateurs et des serveurs, l’utilisateur peut avoir à sélectionner le certificat client à utiliser (le champ friendly-name du certificat est affiché)
4. La page chargée contient uniquement les onglets autorisés en fonction du rôle de l'utilisateur
Tester une commande distribuée
1. Se loguer sur S1 ou S2 en tant que administrateur/root
2. Ouvrir un terminal (PowerShell, shell, …)
3. Aller dans le répertoire SAFE
4. Exécuter safekit -H "*" level
qui doit retourner le résultat de la commande level sur tous les nœuds
Une fois la configuration de HTTPS terminée, comme décrit dans 11.3.2 page 192, vous pouvez poursuivre avec la configuration de l'authentification à base de certificats clients. Celle-ci repose sur la présence d'un ensemble de certificats énumérés ci-dessous.
|
|
Le certificat de l’Autorité de Certification CLCA utilisée pour générer les certificats client |
|
|
Les certificats client permettant d’assurer l’identité de l’utilisateur de la console et de restreindre ses accès en fonction de son rôle
Ou
|
|
|
Les certificats client de S1 et de S2 permettant de s’assurer de l’identité du nœud qui exécute une commande distribuée
Ou
|
|
|
Les certificats client de S1 et de S2 permettant de s’assurer de l’identité du nœud qui accède à la console en mode proxy. Ils sont construits à partir de admin1 et admin2. |
Suivez les étapes suivantes pour mettre en œuvre l’authentification à base de certificats clients générés avec votre PKI. La configuration HTTPS, décrite en 11.3.2 page 192, doit avoir été effectuée au préalable.
Les certificats serveurs sont ceux qui ont été générés pour mettre en œuvre la configuration HTTPS en 11.3.2 page 192.
Pour vérifier que ces certificats peuvent être utilisés comme certificats clients, lisez leur contenu. Voici la procédure à suivre sous Windows :
1. Copier le fichier .crt (ou .cer) sur une station de travail Windows
2. Double cliquer sur le fichier pour l’ouvrir avec Extension noyau de chiffrement
3. Cliquer sur l’onglet Détails
4. Vérifier le champ Utilisation avancée de la clé (Enhanced Key Usage)
|
|

|
|
Notez la valeur du sous-champ CN (Common Name) incluse dans le champ Objet (Subject) pour configurer les rôles plus tard. |
Quand ce champ contient la valeur Authentification du client (Client Authentication), ces certificats peuvent être utilisés comme certificats client pour la commande distribuée :
|
|
Le certificat client de S1 pour l’autoriser à exécuter des commandes distribuées. |
|
admin1.crt |
ü copier server1.crt dans admin1.crt |
|
admin1.key |
ü copier server1.key dans admin1.key |
|
|
Le certificat client de S2 pour l’autoriser à exécuter des commandes distribuées. |
|
admin2.crt |
|
|
admin2.key |
|
Lorsque les certificats serveur ne peuvent pas être utilisés, vous devez obtenir de nouveaux certificats de client de votre PKI avec le format attendu décrit ci-dessous :
|
|
Le certificat client de S1 pour l’autoriser à exécuter des commandes distribuées. |
||
|
|
Le certificat client de S2 pour l’autoriser à exécuter des commandes distribuées. |
||
|
admin1.crt admin2.crt |
Le champ Utilisation avancée de la clé (Enhanced Key Usage) contient la valeur Authentification du client (Client Authentication). Le sous-champ CN (Common Name) incluse dans le champ Objet (Subject) contient le nom du serveur.
|
||
|
admin1.key admin2.key |
|
Installer les fichiers correspondants aux certificats comme suit (SAFE=C:\safekit en Windows si System Drive=C: ; et SAFE=/opt/safekit en Linux) :
|
admin1.crt admin1.key |
Sur S1 :
|
|
admin2.crt admin2.key |
Sur S2 :
|
|
proxy.crtkey |
Sur S1 et S2 : Construire le fichier SAFE/web/conf/proxy.crtkey comme suit :
SAFE/web/bin/openssl rsa -in SAFE/web/conf/admin.key -out SAFE/web/conf/rsa-admin.key
|
Vous pouvez contrôler les certificats installés avec :
cd SAFE/web/bin
checkcert -t client
Cette commande retourne en échec si une erreur est détectée.
Dans certaines entreprises, chaque utilisateur dispose d'un certificat personnel comme identifiant numérique, qui est présent dans le magasin de certificats sur le poste de travail de l'utilisateur.
|
|
Le certificat personnel est utilisé pour assurer l'identité de l'utilisateur dans la console. |
|
Certificat personnel |
Pour vérifier que ce certificat peut être utilisé comme certificat client pour la console web, lisez son contenu. Voici la procédure à suivre sous Windows :
1. Connectez-vous sur la station de travail de l’utilisateur
2. Ouvrez une console PowerShell
3. Exécutez certmgr
4. Localisez le certificat dans le magasin Certificats - Utilisateur actuel\Personnel\Certificats, puis faites un clic droit dessus. Si l’utilisateur possède plusieurs certificats, sélectionner celui ayant « Authentification du client » comme « Rôles prévus » et dont la « Date d’expiration » n’est pas passée
5. Cliquer sur le certificat avec le bouton droit puis « Ouvrir ». Cela ouvre la fenêtre de certificat
6. Vérifiez le contenu du champ Utilisation avancée de la clé (Enhanced Key Usage)
Ci-dessous l’exemple du certificat personnel de Mary Smith :

|
|
Notez la valeur du sous-champ CN (Common Name) incluse dans le champ Objet (Subject) pour configurer les rôles plus tard. |
Comme le champ Key Usage contient la valeur Client Authentication, ce certificat personnel peut être utilisé comme certificat client pour la console. Dans ce cas, il n'est pas nécessaire de l'importer puisqu'il est déjà présent dans le magasin de certificats du poste de travail de l'utilisateur.
Lorsque les certificats personnels ne peuvent pas être utilisés, vous devez obtenir un nouveau certificat client de votre PKI avec le format attendu décrit ci-dessous :
|
user.p12 |
Le certificat client pour authentifier l’utilisateur de la console web
Le champ Utilisation avancée de la clé (Enhanced Key Usage) contient la valeur Authentification du client (Client Authentication). Le sous-champ CN (Common Name) incluse dans le champ Objet (Subject) contient le nom de l’utilisateur.
|
||
|
|
Pour chaque utilisateur de la console web, vous devez ensuite importer son certificat dans son magasin de certificats comme suit :
1. Connectez-vous sur la station de travail de l’utilisateur
2. Cliquez sur le fichier user.p12 pour ouvrir la fenêtre Certificate
3. Cliquez sur le bouton Install Certificate
L’assistant d’importation de certificat s’ouvre
4. Sélectionnez Current User puis cliquez sur le bouton Next
5. Poursuivez en laissant l’assistant choisir automatiquement le magasin où importer le certificat
Il doit s’agir du magasin Personnel.
6. Terminez l’importation du certificat
Vous devez récupérer ce certificat de votre PKI avec le format attendu :
|
clcacert.crt |
Le certificat de l’Autorité de Certification CLCA utilisée pour générer les certificats client.
La chaîne de certificats pour la CA racine et les intermédiaires, s’il y en a
Si différents CLCAs sont utilisés pour générer les certificats client, le fichier clcacert.crt doit contenir la concaténation de ces différents CLCAs. |
Certificats client pour la commande distribuée |
|
Certificats client pour les utilisateurs de la console web |
Si vous rencontrez des difficultés pour récupérer ce fichier depuis votre PKI, vous pouvez le construire à l’aide de la procédure décrite en 7.18. page 131.
|
|
Si votre PKI utilise la même Autorité de Certification pour émettre des certificats serveur et client, les fichiers cacert.crt et clcacert.crt sont identiques. Le fichier cacert.crt a été récupéré et installé durant la procédure de configuration HTTPS (voir 11.3.2.2 page 195). |
Installer le certificat comme suit (SAFE=C:\safekit en Windows si System Drive=C: ; et SAFE=/opt/safekit en Linux) :
|
clcacert.crt |
Sur S1 et S2:
|
Vous pouvez contrôler les certificats installés avec :
cd SAFE/web/bin
checkcert -t CLCA
Cette commande retourne en échec si une erreur est détectée.
Vous devez également vérifier que le fichier clcacert.crt contient bien la chaîne de certificats pour les autorités de certification racine et intermédiaires.
Tant que le certificat de l’autorité de certification n’a pas été importé, le navigateur émet des alertes de sécurité lorsque l’utilisateur se connecte à la console web avec son certificat client. Si l’importation n’a pas déjà été faite, appliquez la procédure ci-dessous en Windows :
1. Connectez-vous sur la station de travail de l’utilisateur
2. Cliquez sur le fichier clcacert.crt pour ouvrir la fenêtre Certificate
3. Cliquez sur le bouton Install Certificate
L’assistant d’importation de certificat s’ouvre
4. Sélectionnez Current User puis cliquez sur le bouton Next
5. Poursuivez l’assistant et sélectionnez le magasin Trusted Root Certification Authorities
6. Terminez l’importation du certificat
Le certificat client est utilisé pour authentifier l'utilisateur de la console ou de la commande distribuée. Un rôle doit lui être attribué pour définir les actions autorisées.
Ceci doit être défini dans le fichier sslgroup.conf qui peut contenir les 3 groupes Admin, Control, Monitor. Les utilisateurs de ces groupes auront les rôles correspondants.
|
|
Chaque ligne débute par le nom du groupe, suivi de :, suivi de la liste des utilisateurs (dont le séparateur est l’espace). Voir l’exemple ci-dessous. |
|
|
1. récupérer la valeur du sous-champ CN (Common Name) incluse dans le champ Objet (Subject) du certificat 2. insérer CN avec le rôle souhaité ü pour les certificats de la console, cela peut-être n’importe lequel des rôles Admin, Control ou Monitor ü pour les certificats de la commande distribuée, le rôle doit être Admin |
|
|
Sur S1 et S2:
|
Dans l'exemple suivant, s1.w.com et s2.w.com sont la valeur CN des certificats de commande distribuée ; les autres noms sont la valeur CN des certificats de console :
|
|
Admin : ”s1.w.com” “s2.w.com” ”MARY SMITH” admin Control: ”NAD ROU” “DAVID JOHNS” manager Monitor : monitor |
Pour activer l’authentification à base de certificat client (SAFE=C:\safekit en Windows si %SYSTEMDRIVE%=C: ; et SAFE=/opt/safekit en Linux) :
|
|
Sur S1 et S2 :
# Define useldap … # Define usefile
httpadminport (9010) |
|
|
Sur S1 et S2 :
|
La configuration est terminée ; vous pouvez maintenant vérifier qu'elle est opérationnelle :
1. Démarrer un navigateur web
2. Le connecter à l’URL http://servername:9010 (où servername est l’adresse IP ou le nom d’un nœud SafeKit). Comme HTTPS est configuré, il y a une redirection automatique sur https://servername:9453.
3. En fonction des navigateurs et des serveurs, l’utilisateur peut avoir à sélectionner le certificat client à utiliser (le champ friendly-name du certificat est affiché)
4. La page chargée contient uniquement les onglets autorisés en fonction du rôle de l'utilisateur
Tester une commande distribuée
1. Se loguer sur S1 ou S2 en tant que administrateur/root
2. Ouvrir un terminal (PowerShell, shell, …)
3. Aller dans le répertoire SAFE
4. Exécuter safekit -H "*" level
qui doit retourner le résultat de la commande level sur tous les nœuds
Cette section est une synthèse de la configuration avec un PKI externe. Elle montre la configuration de HTTPS et de l’authentification basée sur les certificats personnels des utilisateurs, pour l’exemple suivant :

Cette configuration simplifiée n'est disponible que sous certaines conditions décrites ci-dessous. Pour tous les autres cas, veuillez vous référer à 11.3.2 page 192 pour la configuration HTTPS et à 11.4.4 page 209 pour la configuration de l'authentification utilisateur basée sur des certificats client.
Configuration du cluster SafeKit
Configurer le cluster, dans SAFEVAR/cluster/cluster.xml, comme suit :
<?xml version="1.0"
encoding="UTF-8"?>
<cluster>
<lans>
<lan name="default"
console="on" framework="on">
<node name="s1" addr="s1.w.com"/>
<node name="s2" addr="s2.w.com"/>
</lan>
</lans>
</cluster>
Certificats serveur
Demander à votre PKI, pour chaque nœud SafeKit, les fichiers pour le certificat et la clé associée.
Consulter le contenu du certificat :
ü vérifier que le champ Utilisation avancée de la clé (Enhanced Key Usage) contient bien Authentification du client (Client Authentication)
ü vérifier que la valeur de addr dans cluster.xml est bien présente dans le champ Autre nom de l’objet (Subject Alternative Name)
ü Avec SafeKit <= 7.5.2.9, vérifier que le nom du serveur est bien présent dans le champ Autre nom de l’objet (Subject Alternative Name)
ü Noter la valeur du CN dans le champ Objet (Subject), qui sera utilisée plus loin pour remplir le fichier the sslgroup.conf
|
Certificat serveur de S1 Fichiers server1.crt et server1.key |
Certificat serveur de S2 Fichiers server2.crt et server2.key |
|
|
|
Certificats personnels des utilisateurs
Ils devraient déjà être présents dans le magasin des certificats de la station de travail de chaque utilisateur (certmgr.msc) sous « Certificats - Utilisateur actuel\Personnel\Certificats »
Consulter le contenu du certificat :
ü Vérifier que le champ Utilisation avancée de la clé (Enhanced Key Usage) contient bien Authentification du client (Client Authentication)
ü Noter la valeur du CN dans le champ Objet (Subject), qui sera utilisée plus loin pour remplir le fichier the sslgroup.conf
ü
|
Certificat personnel de Mary Smith |
Certificat personnel de David Johns |
|
|
|
Appliquer les étapes suivantes pour configurer HTTPS et mettre en œuvre l’authentification à base de certificat personnel.
|
server1.crt server1.key |
Sur S1 :
ü copier server1.crt dans SAFE/web/conf/server.crt ü copier server1.key dans SAFE/web/conf/server.key
ü copier server1.crt dans SAFE/web/conf/admin.crt ü copier server1.key dans SAFE/web/conf/admin.key |
|
server2.crt server2.key |
Sur S2 :
ü copier server2.crt dans SAFE/web/conf/server.crt ü copier server2.key dans SAFE/web/conf/server.key
ü copier server2.crt dans SAFE/web/conf/admin.crt ü copier server2.key dans SAFE/web/conf/admin.key |
|
proxy.crtkey |
Sur S1 et S2 :
Construire le fichier SAFE/web/conf/proxy.crtkey comme suit : ü convertir admin.key au format rsa en exécutant SAFE/web/bin/openssl rsa -in SAFE/web/conf/admin.key -out SAFE/web/conf/rsa-admin.key ü concaténer les fichiers admin.crt et rsa-admin.key dans proxy.crtkey à l’aide d’un éditeur ou d’une commande |
|
cacert.crt |
Récupérer le certificat de l'autorité de certification utilisé pour émettre les certificats du serveur (la chaîne de certificats du CA racine et des intermédiaires, s’il y en a). Si vous ne l’avez pas, vous pouvez le construire comme indiqué ci-dessous :
|
|
|
Sur S1 et S2 :
|
|
clcacert.crt |
Récupérer le certificat de l'autorité de certification utilisé pour émettre les certificats personnels (la chaîne de certificats du CA racine et des intermédiaires, s’il y en a). Si vous ne l’avez pas, vous pouvez le construire comme indiqué ci-dessous :
|
|
|
Sur S1 et S2 :
|
|
|
Sur S1 et S2 :
Admin:"s1.w.com" "s2.w.com" "MARY SMITH" Control:"DAVID JOHNS" |
|
|
Sur S1 et S2 :
# Define useldap … # Define usefile
httpadminport (9010) |
|
|
Sur S1 et S2 :
|
|
|
Sur S1 et S2 :
|
|
Pare-feu |
Sur S1 et S2 :
|
La configuration est terminée ; vous pouvez maintenant vérifier qu'elle est opérationnelle :
Tester la console web
1. Démarrer un navigateur web
2. Le connecter à l’URL http://s1.w.com:9010/ ou http://s2.w.com:9010/. Comme HTTPS est configuré, il y a une redirection automatique sur https://servername:9453.
3. En fonction des navigateurs et des serveurs, l’utilisateur peut avoir à sélectionner le certificat client à utiliser (le champ friendly-name du certificat est affiché).
4. La page chargée contient uniquement les onglets autorisés en fonction du rôle de l'utilisateur
ü Mary Smith, avec le
rôle Admin, accède aux onglets
Configuration,
Contrôle,
Supervision et
Configuration Avancée
ü David Johns, avec le
rôle Control, accède uniquement aux onglets
Contrôle et
Supervision
Tester une commande distribuée
1. Se loguer sur S1 ou S2 en tant que administrateur/root
2. Ouvrir un terminal (PowerShell, shell, …)
3. Aller dans le répertoire SAFE
4. Exécuter safekit -H "*" level
qui doit retourner le résultat de la commande level sur tous les nœuds
Tout d'abord, choisissez parmi les nœuds composant le cluster SafeKit, un nœud pour agir en tant que serveur d'autorité de certification. Le nœud sélectionné sera appelé ci-après le serveur CA. Les autres nœuds de cluster sont appelés serveur non-CA. Appliquez ensuite séquentiellement chacune des sous-sections suivantes pour activer la configuration HTTPS préconfigurée pour sécuriser la console web SafeKit.
|
|
Vérifier que l'horloge système est réglée à la date et l'heure courante sur tous les clients et les serveurs. Les certificats portant une date de validité, une différence de date entre les systèmes peut avoir pour effet de les invalider. |
|
Appliquer la même procédure que celle décrite en 11.3.1.1 page 188, pour démarrer le service web CA (service safecaserv).
Pendant cette étape, l’environnement de génération des certificats est mis en place ; les certificats de l’autorité de certification et du serveur CA sont générés et installés à l’emplacement attendu par la configuration HTTPS ; les trois certificats clients sont également créés.
|
|
Vérifier que l'horloge système est réglée à la date et l'heure courante sur le serveur.
|
Par défaut, le certificat serveur inclut toutes les adresses IP et les noms DNS définis localement. Ils sont répertoriés dans les fichiers SAFE/web/conf/ipv4.json, SAFE/web/conf/ipv6.json et SAFE/web/conf/ipnames.json. Ces fichiers sont générés par la commande qui démarre le service web CA, appelée à l'étape précédente.
|
|
Si vous souhaitez accéder à la console web depuis un nom DNS ou une adresse IP non répertorié, modifiez le fichier correspondant pour insérer la nouvelle valeur avant d'exécuter la commande initssl. Cela est nécessaire par exemple pour accéder depuis internet à un cluster SafeKit dans le cloud, quand les serveurs ont une adresse publique mappée sur une adresse privée. |
Sur le serveur CA :
Se connecter en tant qu’administrateur/root et ouvrir une fenêtre
d’invite de commandes
Aller dans le répertoire SAFE/web/bin
Exécuter la commande :
./initssl ca
Cette commande crée un certificat CA avec un « subject name » par défaut. Pour spécifier sa valeur, exécuter plutôt la commande étendue :
./initssl ca “/O=My Company/OU=My Entity/CN=My Company Private Certificate Authority”
A l’invite, entrer le mot de passe qui protègera chacun des trois certificats clients :
Enter the password for the Admin role pkcs12 file (../conf/ca/private/user_Admin_administrator.p12) twice:
Enter Export Password: pwd1
Verifying - Enter Export Password: pwd1
Enter the password for the Control role pkcs12 file (../conf/ca/private/user_Control_manager.p12) twice:
Enter Export Password: pwd2
Verifying - Enter Export Password: pwd2
Enter the password for the Monitor role pkcs12 file (../conf/ca/private/user_Monitor_operator.p12) twice:
Enter Export Password: pwd3
Verifying - Enter Export Password: pwd3
|
|
Le mot de passe saisi sera demandé au moment de l’importation du certificat client sur la station cliente. |
Copier les certificats clients devant être exportés (fichiers .p12)
dans le répertoire ../conf/ca/certs
Pendant cette étape, le certificat du serveur local est généré, les certificats signés sont téléchargés depuis le serveur CA, et enfin les certificats sont installés à l’emplacement prévu par la configuration HTTPS.
Appliquer en séquence la procédure suivante sur chaque serveur non-CA :
Se connecter en tant qu’administrateur/root et ouvrir une fenêtre
d’invite de commandes
Aller dans le répertoire SAFE/web/bin
Répertorier les noms DNS et adresses IP du serveur
Par défaut, le certificat serveur inclut toutes les adresses IP et les noms DNS définis localement. Ils sont répertoriés dans les fichiers SAFE/web/conf/ipv4.json, SAFE/web/conf/ipv6.json et SAFE/web/conf/ipnames.json. Pour générer ces fichiers, exécutez la commande :
ü en Linux
./getipandnames
Cette commande utilise sur la commande host délivrée avec le package bind-utils. Installez-le si nécessaire ou remplissez manuellement les noms DNS dans le fichier SAFE/web/conf/ipnames.json.
ü en Windows
./getipandnames.ps1
|
|
Si vous souhaitez accéder à la console web depuis un nom DNS ou une adresse IP non répertorié, modifiez le fichier correspondant pour insérer la nouvelle valeur avant d'exécuter la commande initssl. Cela est nécessaire par exemple pour accéder depuis internet à un cluster SafeKit dans le cloud, quand les serveurs ont une adresse publique mappée sur une adresse privée. |
Exécuter la commande :
./initssl req https://CAserverIP:9001 CA_admin
A chaque fois que cela est demandé, entrer le mot de passe qui a été utilisé au moment du démarrage du service web CA du serveur CA (PasWOrD). Pour ne pas avoir à saisir le mot de passe, exécuter plutôt la commande :
./initssl req https://CAserverIP:9001 CA_admin:PasW0rD
CAserverIP est l’adresse IP ou le nom DNS du serveur CA.
|
|
Si la commande retourne l’erreur "Certificate is not yet valid", cela signifie que les horloges des deux serveurs ne sont pas synchronisées. Pour corriger le problème, il faut changer la date et l’heure des serveurs puis réexécuter la commande initssl. |
Une fois les certificats générés sur le serveur CA et sur chaque serveur non-CA, le service web SafeKit (service safewebserver) peut être configuré pour HTTPS. Appliquez la procédure décrite en 10.6.4 page 174, sur tous les serveurs.
Une fois le service Web SafeKit configuré en HTTPS, les communications réseau peuvent être ouvertes en configurant le pare-feu comme décrit en 10.3 page 160.
5. Télécharger depuis le serveur CA, les certificats clients (.p12 files) et le certificat du serveur CA (cacert.crt file), localisés dans SAFE/web/conf/ca/certs
6. Importer le certificat client comme décrit en 11.4.3.4 page 205
7. Importer le certificat CA comme décrit en 11.4.3.5 page 206
Une fois tous les serveurs et clients configurés, il est recommandé d’arrêter le service web CA (service safecaserv) sur tous les serveurs. Cela limite le risque d’accès accidentel ou malveillant à l’assistant de configuration HTTPS. Pour arrêter le service web CA en ligne de commande :
Se connecter en tant qu’administrateur/root et ouvrir une fenêtre
d’invite de commandes
Aller dans le répertoire SAFE/web/bin
Exécuter la commande ./stopcaserv
|
|
En Windows, cette commande supprime également l'entrée du service safecaserv pour empêcher son démarrage accidentel par la suite. En Linux, le port 9001 est automatiquement fermé sur le pare-feu local. |
Une fois tous les serveurs et clients configurés, il est recommandé d’arrêter le service web CA (service safecaserv) sur le serveur CA. Cela limite le risque d’accès accidentel ou malveillant à l’assistant de configuration HTTPS.
Se connecter en tant qu’administrateur/root et ouvrir une fenêtre
d’invite de commandes
Aller dans le répertoire SAFE/web/bin
Exécuter la commande ./stopcaserv
|
|
En Windows, cette commande supprime également l'entrée du service safecaserv pour empêcher son démarrage accidentel par la suite. En Linux, le port 9001 est automatiquement fermé sur le pare-feu local. |
Cette étape n’est pas obligatoire, mais en production il est préférable de ne pas laisser accessible les fichiers sensibles.
Les fichiers présents sur le serveur CA, dans le répertoire SAFE/web/conf/ca (en particulier les clés privées sous SAFE/web/conf/ca/private/*.keys) doivent être sauvegardés dans un espace de stockage sûr et détruits sur le serveur. Ces fichiers devront être restaurés à leur emplacement initial si le serveur CA est à nouveau nécessaire (par exemple pour sécuriser un nouveau serveur SafeKit).
Pour les serveurs non-CA, il faut sauvegarder et détruire les fichiers présents sous le répertoire SAFE/web/conf/ca.
Chaque certificat possède une date d'expiration. Par défaut, la date d'expiration du certificat CA est fixée à 10 ans après la date d'installation. Par défaut, la date d'expiration des certificats serveur et client est fixée à 5 ans après la date de demande de certificat.
Lorsque le certificat client est expiré, la console web ne peut se connecter aux serveurs SafeKit. Si le certificat serveur est expiré, la console web émet une alerte lors de la connexion au serveur. Une fois le certificat CA expiré, il sera impossible pour le service web SafeKit de valider les certificats présentés.
Il est possible de renouveler les certificats ou de régénérer une requête de création de certificat à partir des clés privées utilisées précédemment. Cette procédure n’est pas explicitée dans ce document. Il est proposé à la place de créer de nouveau jeu de certificats, pour remplacer les anciens :
supprimer
le répertoire web/conf/ca
sur tous les serveurs, y compris le serveur CA
supprimer les certificats des magasins des stations de travail
des utilisateurs
réappliquer complètement les procédures décrites en 11.3.1 page 187 et 11.4.3 page 202
Il est possible de modifier la configuration des serveurs web SafeKit pour utiliser une liste de révocation de certificats (CRL). Cette procédure n’est pas explicitée dans ce document. Reportez-vous à la documentation apache et openssl.
Vous pouvez sinon créer un nouveau jeu de certificats, y compris celui de l’autorité de certification, pour remplacer le précédent. Cela a pour effet de révoquer les anciens certificats, car le certificat de l'autorité de certification a changé.
Les commandes sont localisées et doivent être exécutées depuis le répertoire SAFE/web/bin.
|
initssl ca [<subject>] |
Paramètres <Subject>: le sujet du certificat du CA, qui identifie le propriétaire du CA. Exemple initssl ca "/O=My Company/OU=My Unit/CN=My Company Private Certificate Authority" Description Tous les chemins d’accès ci-dessous sont relatifs au répertoire SAFE/web. Cette commande crée le répertoire conf/ca utilisé par les commandes openssl. Les certificats générés sont stockés sous conf/ca/certs ; les clés privées générées sont stockées sous conf/ca/private.
ü conf/ca/private/user_Admin_administrator.p12 ü conf/ca/private/user_Control_manager.p12 ü conf/ca/private/user_Monitor_operator.p12 Les certificats clients sont utilisés pour authentifier le client lorsqu’il se connecte au service web en HTTPS. Pour pouvoir connecter la console web, le certificat client correspondant au rôle désiré doit d’abord être importé dans le magasin des certificats du navigateur web.
|
||
|
initssl req <url> <user>[:<password>]] |
Paramètres <url>: Url du service web du serveur CA (https://192.168.0.1:9001) <user>,<password>: utilisateur et mot de passe protégeant l’accès au service web. La valeur par défaut pour <user> est CA_admin. La valeur pour <password> doit être celle affectée au moment du lancement du service web. Si ce champ n’est pas donné en argument, le script demandera sa saisie. Exemple initssl req https://192.168.0.1:9001 CA_admin:PasW0rD Description Tous les chemins d’accès ci-dessous sont relatifs au répertoire SAFE/web. <hostname> est le nom du serveur local.
|
||
|
initssl req |
Paramètres None Description Tous les chemins d’accès ci-dessous sont relatifs au répertoire SAFE/web. La commande se termine après avoir généré les requêtes de certificats pour :
Ces requêtes sont stockées dans le format base64 pour pouvoir être transmises à un CA externe tel Microsoft Active Directory Certificate Services (voir la documentation de Microsoft). |
||
|
|
|||
|
makeusercert <name> <role> |
Paramètres <name> correspond au champ CN du sujet du certificat, habituellement le nom de l’utilisateur du sujet <role> correspond au rôle lors de l’utilisation de la console web. Les valeurs valides sont Admin ou Control ou Monitor. Exemples makeusercert administrator Admin makeusercert manager Control makeusercert operator Monitor Description Tous les chemins d’accès ci-dessous sont relatifs au répertoire SAFE/web. Création d’une requête de certificat client (ainsi que le certificat, le fichier pkcs12, et la clé associée si la commande est exécutée sur le serveur CA) pour <name> et <role>. Lors de la génération du fichier pkcs12, le script demande d’entrer deux fois le mot de passe qui sera utilisé pour protéger son accès. La clé privée non cryptée est stockée dans conf/ca/private/user_<role>_<name>.key file. Quand ils ont générés, le certificat est stocké dans conf/ca/certs/user_<role>_<name>.crt et le pkcs12 dans conf/ca/private/user_<role>_<name>.p12. |
||
La configuration du service web du serveur de CA se trouve dans le fichier SAFE/web/conf/httpd.caserv.conf.
Ce service implémente une sous-partie des fonctionnalités d’un PKI :
Le certificat CA est accessible depuis l’URL https://CAserverIP>:9001/<certificate
name>.crt
Le téléchargement de ce fichier ne nécessite pas de s’authentifier.
Les requêtes de certificats sont soumises par l’envoi d’un POST à
l’URL https://<CA server
IP>:9001/caserv
Les arguments sont :
action = signrequest
name = <certificate name>
servercsr = <file content of the server certificate request>
or
usercsr = <file content of the client certificate request>
12.1 « Le fichier cluster.xml »
page 231
12.2 « Configuration du cluster SafeKit » page 235
Depuis SafeKit 7.2, SafeKit utilise le fichier de configuration : cluster.xml. Ce fichier définit tous les serveurs qui composent le cluster SafeKit ainsi que l’adresse IP (ou nom) de ces serveurs sur les réseaux utilisés pour communiquer avec les nœuds du cluster. Ce fichier permet aussi de spécifier l’usage des réseaux :
ü un réseau de type framework (framework="on") est un réseau utilisé pour les communications internes au framework de SafeKit. Il s’agit des communications globales au cluster et internes aux modules ; ces communications étant encryptées. Ce type de réseau est aussi utilisé pour l’exécution des commandes distribuées. Vous devez définir au moins un réseau de type framework qui inclut tous les nœuds du cluster. Il est recommandé de définir plusieurs réseaux de type framework pour tolérer au moins une défaillance réseau.
ü un réseau de type console (console="on") est un réseau sur lequel la console web SafeKit peut se connecter pour la configuration et l’administration du cluster et des modules. Ce type de réseau doit obligatoirement inclure tous les nœuds qui composent le cluster SafeKit. Vous pouvez définir plusieurs réseaux de type console en fonction des besoins d’administration et de la topologie réseau.
Par défaut, les réseaux sont utilisés à la fois par la console et le framework. Toutes les communications
Chaque réseau (lan) possède un nom logique qui sera utilisé dans la configuration des modules pour nommer les réseaux (à condition que le réseau soit configuré avec framework="on") :
dans la section heartbeat pour un module miroir (voir section 13.3
page 241)
dans la section lan pour un module ferme (voir section 13.4
page 243)
Pour chaque réseau, il peut être spécifié s’il peut être utilisé par la console et/ou le framework. Par défaut, un réseau peut être utilisé à la fois par la console et le framework (console="on" framework="on").
Le nom du nœud est utilisé par le service d’administration de SafeKit (safeadmin) pour identifier de manière unique un nœud SafeKit. Vous devez toujours utiliser le même nom pour désigner le même serveur sur les différents réseaux. Ce nom est aussi utilisé par la console web SafeKit lors de l’affichage du nom du nœud.
Dans l’exemple ci-dessous, les 2 réseaux peuvent être utilisés à la fois par la console et le framework (par défaut : console="on" framework="on").
<cluster>
<lans>
<lan name="default">
<node name="node1" addr="192.168.1.67"/>
<node name="node2" addr="192.168.1.68"/>
<node name="node3" addr="192.168.1.69"/>
<node name="node4" addr="192.168.1.70"/>
</lan>
<lan name="repli">
<node name="node1" addr="10.0.0.1"/>
<node name="node2" addr="10.0.0.2"/>
<node name="node3" addr="10.0.0.3"/>
<node name="node4" addr="10.0.0.4"/>
</lan>
</lans>
</cluster>
Dans l’exemple ci-dessous, le réseau private ne peut être utilisé par la console puisqu’il n’inclut pas tous les nœuds du cluster. Il s’agit par exemple d’un lien de réplication dédié pour un module de type miroir.
<cluster>
<lans>
<lan name="default">
<node name="node1" addr="192.168.1.67"/>
<node name="node2" addr="192.168.1.68"/>
<node name="node3" addr="192.168.1.69"/>
<node name="node4" addr="192.168.1.70"/>
</lan>
<lan name="repli" console="off">
<node name="node1" addr="10.0.0.1"/>
<node name="node2" addr="10.0.0.2"/>
</lan>
</lans>
</cluster>
Dans l’exemple ci-dessous, le réseau public est utilisé uniquement pour l’administration via la console. Il s’agit par exemple d’un réseau public sur lequel l’administrateur ne souhaite pas voir transiter les communications internes au cluster SafeKit.
<cluster>
<lans>
<lan name="default">
<node name="node1" addr="192.168.1.67"/>
<node name="node2" addr="192.168.1.68"/>
</lan>
<lan name="public" framework=”off”>
<node name="node1" addr="node1.mydomain.com"/>
<node name="node2" addr="node2.mydomain.com"/>
</lan>
</lans>
</cluster>
<cluster>
<lans>
<lan name="default">
<node name="node1" addr="server1.dns.name" laddr="10.0.0.1"/>
<node name="node2" addr="server2.dns.name" laddr="10.0.0.2"/>
</lan>
</lans>
</cluster>
Notes :
ü Tous les nœuds doivent pouvoir communiquer avec les autres via les adresses externes.
ü Si un LAN NATé est utilisé comme LAN console, la console Web doit avoir accès aux nœuds via les adresses externes.
ü La configuration d’un cluster avec adresses Natés ne peut être effectué via la console Web. L’interface en ligne de commande doit être utilisée (voir section 12.2.2 page 236).
<cluster>
<lans [port="4800"]>
<lan name="lan_name" [console="on|off"] [framework="on|off"]
[command="on|off"] >
<node name="node_name" addr="IP1_address"|"IP1_name"
[ laddr="local_IP1_address" ]/>
<node name="node_name" addr="IP2_address"|"IP2_name"
[ laddr="local_IP2_address" ]/>
…
</lan>
…
</lans>
</cluster>
|
<lans |
Début de la définition des nœuds SafeKit et de la topologie réseau |
|
[port="xxxx"] |
Port UDP sur lequel le
protocole membership échange. |
|
[pulse=”xxxx”] |
Période d’émission des messages du protocole d’appartenance. Un pulse élevé utilise moins de bande passante, mais entraîne un délai de réaction plus long. |
|
[mlost_count=”xx”] |
Nombre de périodes écoulées sans réception de message avant d’élire un nouveau leader. |
|
[slost_count=”xx”] |
Nombre de périodes écoulées sans réception de message avant de déclarer un follower hors ligne. |
|
<lan |
Définition d’un réseau sur lequel s'exécute le protocole membership. Au moins un réseau. Autant de sections qu'il y a de LANs entre les serveurs. |
|
name="lan name" |
Nom logique unique pour le réseau Ce nom est utilisé dans la configuration du module pour définir les réseaux utilisés. |
|
framework="on"|"off" |
Mettre framework="off" pour ne pas utiliser ce réseau pour les communications du framework SafeKit. Dans ce cas, ce réseau ne peut être utilisé dans la configuration d’un module. Par défaut, framework ="on". Vous pouvez définir plusieurs sections <lan> avec framework="on" ou framework="off". Il faut au moins une section <lan> avec framework="on", qui inclut tous les nœuds du cluster. Valeur par défaut : on |
|
console="on"|"off" |
Mettre console="off" pour ne pas utiliser ce réseau pour connecter la console web SafeKit. Par défaut, console="on". Quand console="on", la section <lan> doit inclure tous les nœuds qui composent le cluster. Vous pouvez définir plusieurs sections <lan> avec console="on" ou console="off". Il faut au moins une section <lan> avec console="on" si vous souhaitez utiliser la console web. Valeur par défaut : on |
|
command="on"|"off" |
Mettre command="on" pour utiliser ce réseau pour l’exécution des commandes distribuées sur le cluster. Dans ce cas, la section <lan> doit inclure tous les nœuds qui composent le cluster et avoir aussi framework="on". Il faut définir une unique section <lan> avec command="on". Quand cet attribut n’est pas positionné, c’est la première section <lan> avec framework="on" qui est utilisée pour l’exécution des commandes distribuées sur le cluster. Valeur par défaut : off |
|
<node |
Définition d'un nœud dans le réseau. Positionner autant de nœuds qu'il y a de serveurs dans le cluster SafeKit (au moins 2). |
|
name="node name" |
Nom unique logique pour le serveur SafeKit Vous devez toujours utiliser le même nom pour désigner le même serveur sur les différents réseaux. |
|
addr= |
Adresse IPv4 ou IPv6, ou nom du nœud tel qu’il est connu par les autres nœuds dans le LAN (préférer une adresse IP pour être indépendant d'un serveur de noms DNS). Pour des configurations NAT, c’est l’adresse extérieure qui doit être indiquée. Lors de la définition d’une adresse IPv6, utiliser le format littéral : l'adresse est placée entre crochets (par exemple [2001::7334]) |
|
laddr= |
Adresse IP locale dans le LAN. A utiliser uniquement pour les configurations NAT. |
La console web de SafeKit fournit une interface graphique pour l’édition du fichier cluster.xml et appliquer la configuration sur tous les nœuds qui composent le cluster SafeKit. Pour la description complète, voir la section 3.2 page 37.
Cliquer sur
Configuration
du cluster pour ouvrir le panneau. La liste des nœuds du cluster
s’affiche.
Editer la configuration. Dans le mode
d’édition Simple, vous ne pouvez éditer que le réseau de connexion de la
console. Passer dans le mode d’édition Avancé pour
éditer tous les réseaux.
Cliquer sur le bouton Appliquer
pour sauvegarder la configuration et générer de nouvelles clés de chiffrement.
Dans le mode d’édition Simple, ce
bouton n’est actif que si des changements ont été faits. Si vous souhaitez régénérer
de nouvelles clés ou réappliquer la configuration sur tous les nœuds sans
changer la configuration, basculer dans le mode
d’édition Avancé, puis cliquer sur le bouton Appliquer.

Les commandes équivalentes pour configurer le cluster SafeKit avec une nouvelle clé de chiffrement sont :
safekit cluster config
[<filepath>]
où filepath est le chemin d’accès au nouveau cluster.xml
quand filepath n’est pas passé en argument, la configuration courante est conservée et seule la clé d’encryption est régénérée
safekit –H "*"
-G
la configuration est appliquée sur les nœuds du cluster
Les commandes équivalentes pour reconfigurer sans clé de chiffrement sont :
safekit cluster delkey
safekit –H "*"
-G
Les commandes équivalentes pour régénérer des clés de chiffrement et les prendre en compte sont :
safekit cluster genkey
safekit –H "*"
-G
Pour la description complète des commandes, se référer à la section 9.3 page 148.
Lorsque la configuration du cluster SafeKit est modifiée, la nouvelle configuration doit impérativement être appliquée sur tous les serveurs qui composent le cluster. Si la configuration n’est appliquée que sur un sous-ensemble des nœuds présents dans la configuration du cluster, seul le sous-ensemble des nœuds sera en mesure de communiquer. Cela peut avoir pour conséquence de perturber le fonctionnement des modules installés sur les serveurs. Pour rétablir un fonctionnement correct, vous devez réappliquer la configuration sur tous les nœuds du cluster comme décrit précédemment.
|
|
Il est possible d’afficher la configuration courante en exécutant la commande safekit cluster confinfo sur chaque nœud (voir section 9.3 page 148). Quand la configuration est correcte, cette commande retourne sur tous les nœuds, la même liste de nœuds et la même signature de configuration. |
Changer la configuration du cluster peut aussi avoir un impact important sur la configuration des modules car les noms logiques de réseau <lan> sont utilisés dans les configurations de modules. Tout changement de configuration déclenche une mise à jour des modules démarrés pour prendre en compte ces modifications. Cela peut conduire à un arrêt de ces modules en cas d’incompatibilité (par exemple sur destruction d’un réseau alors qu’il est utilisé par un module). Aussi, il faut être prudent lors de la modification de la configuration du cluster quand des modules sont en cours de fonctionnement.
13.1 « Macro définition (<macro> tag) » page 238
13.2 « Module ferme ou miroir (<service> tag) » page 238
13.3 « Heartbeats (<heart>,
<heartbeat > tags) » page 241
13.4 « Topologie d'une ferme (<farm>, <lan>
tags) » page 243
13.5 « Adresse IP virtuelle (<vip> tag) » page 245
13.6 « Réplication de fichiers (<rfs>,
<replicated> tags) » page
252
13.7 « Activer les scripts utilisateurs (<user>,
<var> tags) » page 270
13.8 « Hostname virtuel (<vhost>,
<virtualhostname> tags) » page
271
13.9 « Détection de la mort de processus ou de services
(<errd>, <proc>
tags) » page 273
13.10 « Checkers (<check> tags) » page 279
13.11 « TCP checker (<tcp> tags) » page 280
13.12 « Ping checker (<ping> tags) » page 281
13.13 « Interface checker (<intf> tags) » page 282
13.14 « IP checker (<ip> tags) » page 283
13.15 « Checker customisé (<custom> tags) » page 285
13.16 « Module checker (<module> tags) » page 286
13.17 « Splitbrain checker (<splitbrain> tag) » page 288
13.18 « Failover machine (<failover> tag) » page 289
|
|
A chaque fois que vous modifiez userconfig.xml, vous devez appliquer la nouvelle configuration sur les serveurs avec : ü la console web/ ü ou la console web/ ü ou la commande safekit config –m AM Il est possible d’appliquer une nouvelle configuration alors que le module est démarré, mais uniquement dans l’état ALONE (vert) et WAIT (rouge). Cette fonctionnalité est appelée configuration dynamique. Uniquement un sous-ensemble restreint de la configuration peut être modifié dynamiquement. Quand la nouvelle configuration ne peut être appliquée, un message d’erreur est affiché. Les attributs de configuration pouvant être changés dynamiquement sont listés ci-après.
|
|
|
Exemple de userconfig.xml <safe> <!-- Insérer ci-dessous les tags <macro> <service> --> </safe> |
<macro name="ADDR1" value="aa.bb.com"/>
Un exemple d’utilisation de macro est donné dans 15.3 page 305.
<macro
name="identifier"
value="value"
/>
|
<macro |
|
|
name="identifier" |
Une chaîne de caractères qui identifie la macro. |
|
value="value" |
La valeur qui remplacera chaque occurrence de %identifier% dans la suite de userconfig.xml. |
|
/> |
|
|
|
La syntaxe %identifier% peut être aussi utilisée dans userconfig.xml pour récupérer la valeur d'une variable d'environnement de nom identifier. En cas de conflit, c'est la valeur de macro qui prime. |
Exemple pour un module miroir :
<service mode="mirror"
defaultprim="alone" maxloop="3" loop_interval="24" failover="on">
<!-- Insérer ci-dessous les tags <hearbeat> <rfs> <vip> <user> <vhost> <errd> <check> <failover> -->
</service>
Exemple pour un module ferme :
<service mode="farm" maxloop="3" loop_interval="24">
<!-- Insérer ci-dessous les tags <farm> <vip> <user> <vhost> <errd> <check> <failover> -->
</service>
Des exemples de définition de <service> sont donnés pour un module miroir dans 15.1 page 302 et pour un module ferme dans 15.2 page 303.
<service mode="mirror"|"farm"|"light"
[boot="off"|"on"|"auto"|"ignore"]
[boot_delay="0"]
[failover="on"|"off"]
[defaultprim="alone"|"server_name"|"lastprim"]
[maxloop="3"] [loop_interval="24"]
[automatic_reboot="off"|"on"]>
</service>
|
|
Seuls les attributs boot, maxloop, loop_interval et automatic_reboot peuvent être modifiés dynamiquement. |
|
<service |
Première section à définir dans un module |
||
|
mode= |
mirror pour un module miroir. Le protocole de synchronisation entre les 2 serveurs est défini en 13.3 page 241. Voir le module applicatif mirror.safe en tant qu'exemple. farm pour un module ferme. Le protocole de synchronisation entre les serveurs est défini en 13.4 page 243. Voir le module applicatif farm.safe en tant qu'exemple. light pour une configuration sur un seul serveur avec une détection d'erreur logicielle et un redémarrage local seulement. |
||
|
[boot= |
Si on, le module est automatiquement démarré au boot de la machine. Si off, le module n’est pas démarré au boot de la machine. Si auto, le module est démarré automatiquement au boot de la machine s’il était démarré avant le reboot. Avant SafeKit 7.5, la configuration du démarrage au boot du module se faisait avec la commande safekit boot -m AM on|off (qui devait être exécutée sur chaque nœud). Si vous préférez continuer à utiliser cette commande, supprimez l’attribut boot ou affectez-lui la valeur ignore (valeur par défaut). Le module ne sera pas démarré au boot, à moins que la commande safekit boot -m AM on ne soit exécutée. L’état de la configuration du
démarrage au boot est visible dans la ressource usersetting.boot. L’état des ressources est visible
dans la console web/ Valeur par défaut : off |
||
|
[boot_delay="0"] |
Le délai, en secondes, avant le démarrage du module au boot. Valeur par défaut : 0 (pas de délai) |
||
|
[failover= |
Pour un module miroir seulement. Si on, reprise automatique sur le serveur secondaire lorsque le serveur primaire est arrêté. Si off, lorsque le serveur primaire est arrêté, le serveur secondaire se met en attente (pas de reprise automatique). Seule la commande safekit prim peut forcer le démarrage du serveur secondaire en primaire. Pour une description, voir la section 5.7 page 106. Valeur par défaut : on |
||
|
[defaultprim= |
Pour un module miroir seulement. defaultprim décide quel serveur parmi 2 serveurs est le serveur primaire par défaut pour un module applicatif. Cette option est utile quand un module est ALONE sur un serveur et que le module est démarré sur l'autre serveur. Avec defaultprim="alone", le module ALONE devient PRIM alors que le module redémarré devient SECOND. Valeur recommandée pour éviter les basculements d'application juste après la réintégration. Avec defaultprim="server_name", lorsque le module tourne sur deux serveurs, le serveur PRIM est celui indiqué dans defaultprim. Cette valeur peut être utile dans les architectures actif/actif (voir section 1.5.1 page 20) ou N-1 (voir section 1.5.2 page 21). Avec defaultprim="lastprim", le serveur redémarré redevient PRIM s'il était PRIM avant son dernier arrêt. Valeur par défaut : alone |
||
|
[maxloop="3"] |
Nombre de détections d'erreur successives avant arrêt. Cet attribut définit le maximum de restart ou stopstart appelés par les détecteurs d'erreur avant d'arrêter localement SafeKit. Ce compteur est réinitialisé à sa valeur initiale à l'expiration du timeout loop_interval ou lors d'une commande manuelle safekit start, restart, swap, stopstart…. Noter qu'une commande safekit émise par un détecteur avec l'option -i identity décrémente le compteur, alors qu'une commande manuelle sans cette option ne décrémente pas le compteur. Pour plus d'informations, voir section 13.18.4 page 290.
Depuis SafeKit 7.5, maxloop est représenté par la ressource heart.stopstartloop. Sa valeur courante correspond à la date à laquelle le compteur a été initialisé (sous la forme d'un timestamp Epoch Unix) ; et sa date d'affectation correspond soit à son initialisation, soit à un rebouclage (stopstart, restart). Consulter l'historique des ressources pour visualiser chaque incrémentation du compteur.
Valeur par défaut : 3 |
||
|
[loop_interval |
Intervalle de temps, en heures, sur lequel maxloop s'applique. Affectez sa valeur à 0 pour désactiver le compteur maxloop. Valeur par défaut : 24 heures
|
||
|
[automatic_reboot |
Si positionné à on, reboot sur safekit stopstart au lieu de stopper puis redémarrer. Valeur par défaut : off
|
Les heartbeats doivent être utilisés seulement avec les modules miroirs. La topologie d’une ferme est décrite dans la section 13.4 page 243.
Le mécanisme basique pour synchroniser deux serveurs et détecter les défaillances d'un serveur est le heartbeat (battement de cœur), qui consiste en un échange de petits paquets UDP entre les serveurs. Normalement, on met autant de heartbeats qu'il y a de réseaux connectant les 2 serveurs. Dans une situation normale, les 2 serveurs échangent leurs états (PRIM, SECOND, les états des ressources) à travers les heartbeats et synchronisent ainsi les procédures de démarrage arrêt applicatif.
Si tous les heartbeats sont perdus, cela signifie que l'autre serveur est en panne. Le serveur local décide de devenir ALONE. Bien que non obligatoire, il est préférable d'avoir deux voies de heartbeats sur deux réseaux différents afin de distinguer une panne réseau d'une panne serveur et d'éviter le cas du splitbrain.
<heart>
<heartbeat name=”default” ident="Hb1" />
<heartbeat name=”net2” ident="Hb2" />
</heart>
Un exemple de configuration de heartbeats avec de multiples voies est donné en 15.4 page 306.
<heart
[port="xxxx"]
[pulse="700"] [timeout="30000"]
[permanent_arp="on"]
>
<heartbeat
[port="xxxx"] [pulse="700"] [timeout="30000"] name=”network” [ident="name"]
>
[<!-- syntaxe pour SafeKit < 7.2 -->
<server addr="IP1_address" />
<server addr="IP2_address" />
]
</hearbeat>
…
</heart>
|
|
Le tag <heart> et son sous-arbre peuvent être entièrement modifiés dynamiquement. |
|
<heart |
|
||
|
[port="xxxx"] |
Port UDP sur lequel les heartbeats sont échangés. Valeur par défaut : dépend de l'id du module applicatif. Rendu par la commande safekit module getports. |
||
|
[pulse="700"] |
Délai en milliseconde entre l’émission de 2 paquets de heartbeat. Valeur par défaut : 700 ms |
||
|
[timeout="30000"] |
Timeout de détection en ms de la perte d'un heartbeat. Valeur par défaut : 30 000 ms |
||
|
<heartbeat |
Définition d'un heartbeart. Il y a autant de sections <heartbeat> qu'il y a de voies de heartbeats (réseaux connectant les serveurs). Au moins 1 heartbeat. |
||
|
[port="xxxx"] |
Redéfinition du port de heartbeat. Par défaut le même que celui dans <heart>. |
||
|
[pulse="700"] |
Redéfinition du délai en milliseconde entre l’émission de 2 paquets de heartbeat. Par défaut le même que celui dans <heart>. |
||
|
[timeout= |
Redéfinition du timeout de détection en ms de la perte d'un heartbeat. Par défaut le même que celui dans <heart>. |
||
|
name="network" |
Nom du réseau utilisé par le heartbeat. "network" doit être le nom d’un réseau défini dans la configuration du cluster SafeKit (voir section 12 page 231). |
||
|
[ident="name"] |
Donne le nom qui sera utilisé pour ce heartbeat dans la console web ainsi que pour la ressource interne correspondante, i.e. : heartbeat.name peut être utilisé dans la failover machine (voir section 13.18 page 289). Si l’attribut ident n’est pas défini la valeur de l’attribut name est utilisée.
|
||
|
[permanent_arp= |
Régulièrement, heart positionne un ARP permanent pour ses voies de heartbeats. Cette procédure peut geler heart sur certains systèmes (Linux). Dans ce cas, positionner à "off" et affecter l’ARP permanent sur les voies de heartbeats au boot. Sur Linux, ceci peut être fait en ajoutant la commande suivante dans un script exécuté au boot : arp -s hostname hw_addr Valeur par défaut : on |
||
|
<server
addr= |
Définition de l’adresse ip du serveur pour ce heartbeat. Le tag <server> était utilisé dans l’ancienne syntaxe de configuration (avant SafeKit 7.2). Il est supporté pour assurer la compatibilité ascendante, mais ne doit pas être utilisé pour la configuration de nouveaux modules.
|
Le mécanisme basique pour synchroniser une ferme de serveurs est un protocole de groupe qui détecte automatiquement les membres disponibles dans le groupe (protocole membership).
<farm>
<lan name=”default” />
<lan name=”net2” />
</farm>
Pour des exemples de configuration <farm>, voir section 15.5 page 306.
<farm [port="xxxx"]>
<lan name=”network>
[<!-- syntaxe pour SafeKit < 7.2 -->
<node name="server1" addr="IP1_address"|"IP1_name" />
<node name="server2" addr="IP2_address"|"IP2_name" />
]
</lan>
…
</farm>
|
|
Le tag <farm> et son sous-arbre ne peuvent pas être modifiés dynamiquement. |
|
<farm |
|
||
|
[port="xxxx"] |
Port UDP sur lequel le
protocole membership échange. Valeur par défaut : dépend de l'id du module applicatif. Rendu par la commande safekit module getports |
||
|
[pulse= "xxx"] |
Période d’émission des messages du protocole d’appartenance. Un pulse élevé utilise moins de bande passante, mais entraîne un délai de réaction plus long. |
||
|
[mlost_count= "xx"] |
Nombre de périodes écoulées sans réception de message avant d’élire un nouveau leader. |
||
|
[slost_count= "xx"] |
Nombre de périodes écoulées sans réception de message avant de déclarer un follower hors ligne. |
||
|
<lan |
Définition d’un lan sur lequel s'exécute le protocole membership. Au moins un lan doit être défini. Autant de sections qu'il y a de réseaux entre les serveurs. |
||
|
name="network" |
Nom du réseau utilisé. network doit être le nom d’un réseau défini dans la configuration du cluster SafeKit (voir section 12 page 231). |
||
|
< node name=”identity” addr= "IP1_address" /> |
Adresse IP et nom du nœud dans ce lan. Le tag <node> était utilisé dans l’ancienne syntaxe de configuration (avant SafeKit 7.2). Il est supporté pour assurer la compatibilité ascendante, mais ne doit pas être utilisé pour la configuration de nouveaux modules.
|
|
|
Si vous installez plusieurs modules applicatifs sur le même serveur, l'adresse IP virtuelle doit être différente pour chaque module. |
L’exemple ci-dessous configure l’équilibrage de charge, à destination du port 80 et de l’adresse IP virtuelle, entre les nœuds d’un cluster sur site :
<vip>
<interface_list>
<interface check="on" arpreroute="on" arpinterval="60" arpelapse="10">
<virtual_interface type="vmac_directed">
<virtual_addr addr="192.168.1.222" where="alias" check="on"/>
</virtual_interface>
</interface>
</interface_list>
<loadbalancing_list>
<group name="FarmProto">
<rule port="80" proto="tcp" filter="on_port"/>
</group>
</loadbalancing_list>
</vip>
Voir aussi l’exemple en 15.2 page 303.
L’exemple ci-dessous configure l’adresse IP virtuelle sur le nœud primaire d’un cluster sur site :
<vip>
<interface_list>
<interface check="on" arpreroute="on">
<real_interface>
<virtual_addr addr="192.168.1.222" where="one_side_alias" check="on"/>
</real_interface>
</interface>
</interface_list>
</vip>
Voir aussi l’exemple en 15.1 page 302.
La configuration d'une adresse IP virtuelle avec une section <vip> dans userconfig.xml requiert des serveurs dans le même réseau IP (reroutage réseau et équilibrage de charge effectués au niveau 2).
Si les serveurs se trouvent dans des réseaux IP différents, la section <vip> ne peut pas être configurée. Dans ce cas, une alternative consiste à configurer l'adresse IP virtuelle dans un équilibreur de charge. L'équilibreur de charge achemine les paquets vers les adresses IP physiques des serveurs en testant le statut d’une URL nommée vérificateur d’état (health check) et géré par SafeKit.
SafeKit fournit donc un vérificateur d’état pour chaque module. Vous devez configurer le test de vérification dans le load balancer avec :
le protocole HTTP
le port 9010, port du service web de SafeKit
l’URL /var/modules/AM/ready.txt où AM est
le nom du module
Pour un module miroir, le test retourne :
OK,
qui signifie que l'instance est saine, quand le module est dans l’état
PRIM (vert) ou
ALONE (vert)
NOT FOUND, qui signifie que l'instance est hors service, dans tous
les autres états
Pour un module ferme, le test retourne :
OK, qui signifie l'instance est saine, quand le module est
dans l’état
UP (vert)
NOT FOUND, qui signifie que l'instance est hors service, dans tous
les autres états
Une autre alternative consiste à ce que vous implémentiez une configuration DNS spéciale et une commande de redirection DNS insérée dans les scripts de redémarrage de SafeKit.
<vip [tcpreset="off"|"on"]>
<interface_list>
<interface
[check="off"|"on"]
[arpreroute="off"|"on"]
[arpinterval="60"]
[arpelapse="1200"]
>
<virtual_interface
[type="vmac_directed"|"vmac_invisible"]
[addr="xx:xx:xx:xx:xx"]
>
<virtual_addr
addr="virtual_IP_name"|"virtual_IP_address"
[where="alias"]
[check="off"|"on"]
/>
…
</virtual_interface>
</interface>
</interface_list>
<loadbalancing_list>
<group name="group_name"
<cluster>
<host name="node_name" power="integer" />
…
</cluster>
<rule
[virtual_addr="*"|"virtual_IP_name"|"virtual_IP_address"]
[port="*"|"value"]
proto="udp"|"tcp"
filter="on_addr"|"on_port"|"on_ipid"
/>
…
</group>
…
</loadbalancing_list>
</vip>
|
|
Le tag <vip> et son sous-arbre ne peuvent pas être modifiés dynamiquement. |
Pour un cluster sur site :
<vip [tcpreset="off"|"on"]>
<interface_list>
<interface
[check="off"|"on"]
[arpreroute="off"|"on"]
[arpinterval="60"]
[arpelapse="1200"]
>
<real_interface>
<virtual_addr
addr="virtual_IP_name"|"virtual_IP_address"
where="one_side_alias"
[check="off"|"on"]
[connections="off"|"on"]
/>
…
</real_interface>
</interface>
…
</interface_list>
</vip>
|
<vip> |
|
|
[tcpreset="off"|"on"] |
Avant de déconfigurer l’adresse IP virtuelle, les connexions l’ayant comme IP source, sont rompues. La rupture de connexion est désactivée en positionnant cet attribut à off. Valeur par défaut : on |
|
<interface_list> |
|
|
<interface |
Définition des adresses IP virtuelles sur une interface. Mettre autant de sections <interface> que vous avez d'interfaces réseau à configurer. |
|
[check="off"|"on"] |
Positionner un checker sur l'interface réseau. Le module est mis dans l'état WAIT tant que l'interface est down. Le nom du checker d'interface est intf.<network_IP_mask> (intf.192.168.0.0). Valeur par défaut : on Pour plus d'informations, voir section 13.13 page 282. |
|
[arpreroute="off"|"on"] |
Broadcast de gratuitous ARP pour le reroutage des adresses IP virtuelles définies dans les sections <real_interface>. Valeur par défaut : off |
|
[arpinterval="60"] |
Temps en seconde entre 2 gratuitous ARP. Valeur par défaut : 60 s |
|
[arpelapse="1200"] |
Temps total pendant lequel des gratuitous ARP sont émis. Valeur par défaut : 1200 s |
|
[name="interface name"] |
Linux seulement. Vous pouvez spécifiez le nom de l'interface. Exemple, positionner name="bond0" Par défaut, SafeKit détecte l'interface réseau à configurer à partir des adresses IP virtuelles configurées sur cette interface. |
A utiliser pour les modules ferme avec partage de charge sur l’IP virtuelle :
|
<virtual_interface |
Définition des adresses IP virtuelles configurées sur une interface Ethernet. |
|
type= "vmac_directed"| "vmac_invisible" |
vmac_directed: Associe l’adresse MAC de l’un des serveurs à l’adresse IP virtuelle, comme pour le reste du trafic normal. Voir la description en 13.5.7.3 page 252 vmac_invisible: adresse MAC virtuelle jamais visible dans les entêtes Ethernet pour permettre le broadcast des switchs. Nécessite le support du mode promiscuous. Voir la description en 13.5.7.2 page 251 Note : configuration possible pour un module miroir et pour un reroutage transparent sans gratuitous ARP. |
|
[addr="xx:xx:xx:xx:xx"] |
Unicast virtual MAC adresse. Si non positionné, par défaut concaténation de "5A:FE" (Safe) et de la 1ère adresse IP virtuelle en hexadécimal. Ignoré lorsque type="vmac_directed" |
|
<virtual_addr |
Définition d'une adresse IP virtuelle. Mettre autant de lignes <virtual_addr> qu'il y a d'adresses IP virtuelles à configurer sur l'interface. |
|
addr="virtual_IP_name"| |
Nom ou adresse IP virtuelle (préférer une adresse IP pour être indépendant de la panne du serveur de nom). Adresse IPv4 ou IPv6. |
|
where="alias" |
L'adresse IP virtuelle est définie sur tous les serveurs de la ferme en alias. Note : Dans le cas particulier d'une configuration d'un module miroir avec VMAC mettre ici where="one_side_alias". |
|
[check="off"|"on"] |
Positionner un IP checker sur l’adresse virtuelle. Le module exécute un stopstart quand l’IP virtuelle est détruite. Le nom de l’IP checker est ip.<virtual addr value> (ip.192.168.1.99). Valeur par défaut : on Pour plus d’informations, voir section 13.14 page 283. |
|
[connections="off"|"on"] |
Active le comptage du nombre de connexions actives sur l’adresse virtuelle. Ce nombre est stocké dans la ressource nommée connections.<addr value> (par exemple : connections.192.168.1.99) qui est affectée toutes les 10 secondes. Cette valeur est fournie à un titre indicatif uniquement. Valeur par défaut : off |
|
netmask="defaultnetmask" |
Linux et IPV4 seulement Par défaut, prend le netmask de l'interface. A positionner si l'interface a plusieurs netmasks. |
|
</virtual_interface> |
|
A utiliser pour les modules miroir avec basculement de l’IP virtuelle :
|
<real_interface> |
Définition d'adresses IP virtuelle associée avec l'adresse MAC réel de l'interface. |
|
<virtual_addr |
Définition d'une adresse IP virtuelle. Mettre autant de lignes <virtual_addr> qu'il y a d'adresses IP virtuelles à configurer sur l'interface. |
|
addr= |
Nom ou adresse IP virtuelle (préférer une adresse IP pour être indépendant de la panne du serveur de nom). Adresse IPv4 ou IPv6. |
|
where="one_side_alias" |
Adresse mise en alias sur le serveur PRIM ou ALONE. |
|
[check="off"|"on"] |
Positionner un IP checker sur l’adresse virtuelle. Le module exécute un stopstart quand l’IP virtuelle est détruite. Le nom de l’IP checker est ip.<addr value> (ip.192.168.1.99). Valeur par défaut : on Pour plus d’informations, voir section 13.14 page 283. |
|
[connections="off"|"on"] |
Active le comptage du nombre de connexions actives sur l’adresse virtuelle. Ce nombre est stocké dans la ressource nommée connections.<virtual addr value> (par exemple : connections.192.168.1.99) qui est affectée toutes les 10 secondes. Cette valeur est fournie à un titre indicatif uniquement. Valeur par défaut : off |
|
netmask="defaultnetmask" |
Linux et IPV4 seulement Par défaut, prend le netmask de l'interface. A positionner si l'interface a plusieurs netmasks. |
|
</real_interface> |
|
Pour des exemples de load balancing, voir section 15.5 page 306.
A utiliser avec un module ferme
|
<loadbalancing_list> |
|
|
<group |
Définition d'un groupe de load balancing. Mettre autant de sections qu'il y a de groupes : un exemple est donné en 15.5.3 page 308. |
|
name="group_name" |
Nom du groupe de load balancing. |
|
<cluster |
Définition des serveurs et des poids. Sans la section <cluster>, les règles s'appliquent sur tous les serveurs de la ferme. |
|
<host |
Définition d'un nœud dans le groupe |
|
name = "node_name" |
Nom du nœud utilisé. node_name doit être le nom d’un serveur défini dans la configuration du cluster SafeKit (voir section 12 page 231). |
|
power = "value" |
Poids du nœud dans le groupe. Peut-être égal à 0 si l’on ne veut aucun trafic sur le nœud. Pour plus d'informations, voir 13.5.7.4 page 252. |
|
</cluster> |
|
|
<rule |
Définition d'une règle de load balancing dans le groupe. Autant de lignes que de règles de load balancing. |
|
[virtual_addr= |
Adresses IP virtuelles concernées par le load balancing. Par défaut toutes : * |
|
[port="*"|"value"] |
Port TCP ou UDP sur lequel s'applique la règle de load balancing Par défaut tous les ports : * |
|
proto="udp" | "tcp"| "arp" |
proto="udp" : règle de load balancing UDP. proto="tcp" : règle de load balancing TCP. proto="arp": règle de load balancing pour le protocole de résolution IP<->MAC. |
|
filter="on_addr" | |
filter="on_addr" La règle de load balancing est réalisée sur l'adresse IP client en entrée. filter="on_port" La règle de load balancing est réalisée sur le port client en entrée. Voir l’exemple en 15.5.1 page 306. filter="on_ipid" La règle de load balancing est réalisée sur l'ip_id en entrée. Utile pour UDP seulement (voir l’exemple en 15.5.2 page 307).
|
Voir les prérequis réseau décrits en 2.3.2 page 30.
La configuration type="vmac_invisible" associe une adresse MAC virtuelle à l’adresse IP virtuelle. Avec une adresse MAC virtuelle, les paquets émis vers l'adresse IP virtuelle sont reçus par tous les serveurs. Dans un module noyau, chaque serveur décode le paquet réseau et l'accepte ou le rejette. Après une sélection à très bas niveau des paquets réseau, l'application sur le serveur gère seulement le trafic réseau sélectionné par le module noyau.
Le mécanisme d'adresse MAC virtuelle consiste à associer une adresse MAC unicast dite virtuelle à l'adresse IP virtuelle. Quand un routeur ou une machine réseau recherche l'adresse IP virtuelle, les serveurs SafeKit répondent avec l'adresse MAC virtuelle (via le protocole standard). Cependant, chaque serveur utilise son adresse MAC physique pour communiquer. Ainsi, l'adresse MAC virtuelle est invisible et non localisable par les switchs Ethernet. Par défaut, les switchs émettent ce type de paquet sur tous leurs ports (flooding), ceux-ci sont alors reçus par tous les serveurs de la ferme.
Avec la technologie d'adresse MAC virtuelle, le reroutage en cas de panne et de reprise est immédiat. Tous les équipements conservent l'association adresse IP virtuelle, adresse MAC virtuelle dans leur cache ARP.
Pour tester une adresse MAC virtuelle sur votre réseau, faire d’abord le test de compatibilité décrit en 4.3.7 page 88.
La configuration type= "vmac_directed" modifie le fonctionnement du filtre. Dans ce mode, il n’y a pas de MAC virtuelle ; vu de l’extérieur, l’adresse IP virtuelle se comporte comme une adresse IP normale du point de vue de la résolution IP<->MAC.
Le module noyau est chargé de filtrer et transmettre les paquets entrant au serveur désigné par l’algorithme de partage de charge.
Le mode "vmac_directed" introduit un délai pour les clients ayant résolu l’adresse IP virtuelle sur l’adresse MAC d’un serveur qui est devenu indisponible. Ceci est comparable à ce qui se passe dans le cas <real_interface>. Les autres clients ne sont pas affectés.
Pour minimiser ce délai en IPV4, positionner arpreroute="on" sur l’interface correspondante, et régler les paramètres arpelapse et arpinterval.
Ipv6 possède un mécanisme interne et ne nécessite pas de configuration particulière.
Dans un module kernel, l'algorithme de load balancing est réalisé par filtrage sur les l'identité des paquets en réception. Cette identité est définie par configuration dans userconfig.xml : adresse IP client, port client … (i.e. : load balancing de niveau 4). L'identité est passée dans une table de hachage (une bitmap de 256 bits) qui indique si le paquet doit être accepté ou rejeté sur le serveur. Un seul filtre accepte le paquet dans la ferme de serveurs. Quand un serveur est défaillant, le protocole membership reconfigure les filtres pour redistribuer le trafic du serveur défaillant sur les serveurs disponibles.
Chaque serveur peut avoir un poids (=1, 2…) et prendre plus ou moins de trafic. Le poids est mis en œuvre par le nombre bits à 1 dans la table de hachage (la bitmap de 256 bits).
Un exemple de bitmap est donné en 4.3.5 page 86.
S'applique à un module miroir seulement.
Sur Linux, vous devez définir la même valeur pour les uid/gid sur les deux nœuds pour la réplication des permissions sur les fichiers. Lors de la réplication d'un point de montage du système de fichiers, vous devez appliquer une procédure spéciale décrite en 13.6.4.2 page 261.
Sur Windows, il est vivement recommandé d'activer le journal USN sur le lecteur contenant le répertoire répliqué, comme décrit en 13.6.4.3 page 263.
|
|
Si vous exécutez plusieurs modules simultanément, les répertoires répliqués doivent être différents pour chaque module. |
Exemple en Windows :
<rfs async="second" >
<replicated dir="c:\safedir" mode="read_only"/>
</rfs>
Exemple en Linux :
<rfs async="second" >
<replicated dir="/safedir" mode="read_only"/>
</rfs>
Voir l’exemple de flux de réplication dédié décrit en 15.4 page 306.
<rfs
[acl="on"|"off"]
[async="second"|"none"]
[iotimeout="nb seconds"]
[roflags="0x10"|"0x10000"]
[locktimeout="100"]
[sendtimeout="30"]
[nbrei="3"]
[ruzone_blocksize="8388608"]
[namespacepolicy="0"|"1"|"3"|"4"]
[reitimeout="150"]
[reicommit="0"]
[reidetail="on"|"off"]
[allocthreshold="0"]
[nbremconn ="1"]
[checktime="220000"]
[checkintv="120"]
[nfsbox_options="cross"|"nocross"]
[scripts="off"]
[reiallowedbw=”20000”]
[syncdelta=”nb minutes”]
[syncat=”planification de la synchronisation”]
>
[<flow name=”network” >
[<!-- syntaxe pour SafeKit < 7.2 -->
<server addr="IP_address_1" />
<server addr="IP_address_2" />
]
</flow>]
<replicated dir="absolute path of a directory"
[mode="read_only"]>
<tocheck path="relative path of a file or subdir" />
<notreplicated path="relative path of a file or subdir" />
<notreplicated regexpath="regular expression on relative path of a file or subdir" />
…
</replicated>
</rfs>
|
|
Seuls les attributs async, nbrei, reitimeout et reidetail du tag <rfs> peuvent être modifiés par une configuration dynamique. Le tag <flow>, qui décrit le flux de réplication, peut également être changé dynamiquement. |
|
<rfs |
|
||||||
|
[mountoversuffix= "suffix"] |
Sur Linux uniquement. À la configuration du module miroir, le répertoire répliqué "/a/dir" est renommé en "/a/dirsuffix". Le répertoire /a/dir est créé et c'est :
Par défaut le suffix est « _For_SafeKit_Replication »
|
||||||
|
[acl= |
Active la réplication des ACLs sur les fichiers et répertoires. Valeur par défaut : off
|
||||||
|
[async= |
Positionner async="second" améliore les performances de la réplication de fichiers : les opérations d'écriture répliquées sont mises en cache sur le serveur secondaire et les acquittements sont envoyés plus rapidement au serveur primaire. Positionner async="none" assure plus de sécurité : les opérations d'écriture répliquées sont mises sur disque avant d'envoyer les acquittements au serveur primaire. Avec async="second", en cas de double panne simultanée des 2 serveurs PRIM et SECOND, si le serveur PRIM ne peut pas redémarrer, alors le serveur SECOND n'a pas les données à jour sur son disque. Il y a perte de données si on force le serveur SECOND à redémarrer en primaire avec la commande prim. Valeur par défaut : second
|
||||||
|
[packetsize] |
Linux seulement. Taille maximale en octet des paquets de réplication NFS. Elle doit être inférieure ou égale à la taille maximale des paquets supportée par le serveur NFS des 2 serveurs. Quand cet attribut est affecté dans la configuration, il est utilisé pour affecter rsize et wsize au montage NFS. Par défaut, la taille est celle du serveur NFS. |
||||||
|
[reipacketsize ="8388608"] |
Taille maximale en octets des paquets de réintégration. En Linux, cette taille doit être inférieure ou égale à packetsize. Valeur par défaut en Linux : valeur de packetsize si elle est affectée dans la configuration et est < 8388608; sinon 8388608 Valeur par défaut en Windows : 8388608 octets |
||||||
|
[ruzone_blocksize="8388608"] |
Taille en octet d'une zone pour la bitmap de modification d'un fichier. Ça doit être un multiple de l’attribut reipacketsize. Valeur par défaut : valeur de reipacketsize si elle est affectée dans la configuration ; sinon 8388608 |
||||||
|
[iotimeout] |
Windows seulement. Timeout en seconde sur les IO gérées dans le filtre file system Windows. Si une IO ne peut pas être répliquée et si le timeout du filtre expire, alors le serveur PRIM devient ALONE. Si non positionné, la valeur par défaut est calculée dynamiquement. |
||||||
|
[roflags="0x10"| "0x10000"]
|
Windows seulement. Pour garantir la cohérence des données répliquées sur les 2 serveurs, la modification des répertoires/fichiers répliqués ne doit avoir lieu que sur le serveur PRIM. Si des modifications ont lieu sur le serveur SECOND, celles-ci sont notifiées dans le journal du module avec l'identification du processus responsable afin que l'administrateur puisse corriger cette anomalie. C'est le comportement avec roflags="0x10". Depuis SafeKit 7.4.0.31, le module peut en plus être arrêté sur le serveur SECOND en définissant roflags="0x10000". Valeur par défaut : 0x10 |
||||||
|
[locktimeout= |
Timeout en secondes des requêtes répliquées. Si une requête ne peut pas être traitée dans cet intervalle de temps, le serveur PRIM devient ALONE Valeur par défaut : 100 secondes |
||||||
|
[sendtimeout= |
Depuis SafeKit> 7.4.0.5 Timeout en secondes pour l'envoi de paquets TCP au nœud distant. Si l’envoi du paquet n’a pas pu être effectué dans le délai imparti, le serveur PRIM devient ALONE. Augmentez cette valeur en cas de réseau lent. Valeur par défaut : 30 secondes
|
||||||
|
[nbrei="3"] |
Nombre de threads de réintégration s'exécutant en parallèle pour resynchroniser les fichiers. Valeur par défaut : 3
|
||||||
|
[namespacepolicy="0"|"1"|"3"|"4"] |
En Windows, avec l’option namespacepolicy="1", la réintégration par zones ne peut être assurée après l’arrêt propre du module, puis reboot du serveur. Pour que ce cas soit supporté en Windows, il faut positionner namespacepolicy="3". Cette option exploite l’USN journal du volume qui contient le répertoire répliqué (voir la commande fsutil usn pour la création du journal). Malgré cette option, la réintégration complète doit être appliquée lorsque :
Lorsque la synchronisation par zones n'est pas possible (lors de la première réintégration ou lorsque les zones ne sont pas disponibles), les fichiers devant être synchronisés sont entièrement copiés. Si cette réintégration ne se termine pas, la suivante copiera à nouveau ces fichiers. Pour éviter cela, définissez namespacepolicy = "4". Cette option active également la vérification de journal USN en Windows. Utiliser namespacepolicy="0" pour désactiver la synchronisation par zones sur Windows ou Linux. Valeur par défaut : 4 pour SafeKit > 7.4.0.5 (non supporté dans les versions antérieures) |
||||||
|
[reitimeout= |
Timeout en seconde des requêtes de réintégration. Ce timeout peut être augmenté pour éviter les arrêts de réintégration à cause d'une machine primaire chargée. Valeur par défaut : 150 secondes
|
||||||
|
[reicommit="0"] |
Linux seulement. Positionner reicommit="nb blocks" pour commiter sur disque tous les (nb blocks)*reipacketsize lors de la réintégration d'un fichier (en plus du commit réalisé à la fin de la copie). Ceci peut aider la réintégration de gros fichiers mais ralentit le temps de réintégration global. Valeur par défaut : 0 signifie pas de commit intermédiaire. |
||||||
|
[reidetail= |
Journal détaillé de la réintégration. Valeur par défaut : off
|
||||||
|
[allocthreshold= |
Windows seulement. Taille en Go pour appliquer la politique d’allocation avant réintégration. Quand allocthreshold > 0, activation de l’allocation rapide de l’espace disque pour les fichiers à réintégrer sur le nœud secondaire. Cette fonctionnalité permet, quand le fichier est très gros (> 200 Go) et pas encore complètement recopié, d’éviter le timeout de l’écriture du primaire en fin de fichier. Depuis SafeKit 7.4.0.64, la politique d’allocation a changé et est appliquée :
Valeur par défaut : 0 (qui désactive la fonctionnalité) |
||||||
|
[nbremconn="1"] |
Nombre de connexions TCP entre les nœuds primaire et secondaire. Cette valeur peut être augmentée pour améliorer le débit de réplication et de synchronisation lorsque le réseau présente une latence élevée (dans le cloud, par exemple). Valeur par défaut : 1 |
||||||
|
[checktime= |
Linux seulement. Timeout en millisecondes pour une requête null qui vérifie le bon fonctionnement local de la réplication de fichiers. Commande stopstart si le timeout est atteint. Valeur par défaut : 220000 |
||||||
|
[checkintv= |
Linux seulement. Intervalle en secondes entre 2 requêtes null. Valeur par défaut : 120 secondes |
||||||
|
nfsbox_options="cross"|"nocross" |
Windows seulement. Cette option spécifie la politique à appliquer lorsqu’un reparse point du type MOUNT_POINT est présent dans l’arborescence répliquée. Cette politique est globale à tous les répertoires répliqués. Dans NTFS, les reparse point de type MOUNT_POINT représentent : ü soit un point de montage NTFS (par exemple D:\directory) ü soit un "directory junction" NTFS (en quelque sorte un lien symbolique vers une autre partie du système de fichiers) Avec l’option nfsbox_options="cross", les points de montages sont évalués avant réplication et le contenu de la cible du point de montage est répliqué, ce qui rend le point de montage équivalent à un répertoire normal. Ce comportement est utile lorsque le répertoire répliqué est la racine d’un système de fichier (par exemple D:\ ). C’est le comportement par défaut. Lorsque nfsbox_options="nocross", les points de montages ne sont pas évalués et sont répliqués en tant que point de montage (fichier de type « reparse point »). Le contenu de la cible du point de montage n’est pas répliqué ou réintégré lorsque le point de montage est sollicité. Ce comportement est utile lorsque la cible du point de montage est située dans un autre répertoire répliqué (fichier de type « junctions »). Par exemple, les bases de données PostgreSQL utilisent des fichiers de ce type. Valeur par défaut : cross |
||||||
|
[scripts= |
scripts="on" active les callback vers les scripts _rfs_* utilisés pour mettre en œuvre une réplication de données externe (voir le module Linux DRBD.safe pour plus d'information) Valeur par défaut : off |
||||||
|
[reiallowedbw= |
Quand cet attribut est défini, il spécifie la bande passante maximum susceptible d’être utilisée par la phase de réintégration (par exemple 20000 KB/s), en kilo octets par secondes (KB/s). Etant donné l’implémentation retenue, une fluctuation de +/- 10% de la bande passante réellement utilisée est observable.
Par défaut : l’attribut n’est pas défini et la bande passante utilisée par la réintégration n’est pas limitée |
||||||
|
[syncdelta=”nb minutes”] |
Quand cet attribut est <=1, l’attribut est ignoré et la politique par défaut de démarrage et de reprise sur panne est appliquée : seul le serveur avec les données à jour peut démarrer en primaire ou effectuer une reprise sur panne. Quand cet attribut est >1, la politique par défaut de démarrage et de reprise sur panne est modifiée. Le serveur avec des données non à jour peut devenir primaire mais uniquement si le temps écoulé depuis sa dernière synchronisation est inférieur à la valeur de syncdelta (en minutes). Valeur par défaut : 0 minutes |
||||||
|
[syncat=”planification de la synchronisation”] |
Valeur par défaut : réplication temps réel et synchronisation automatique (pas de planification) Utiliser l’attribut syncat pour planifier la synchronisation des répertoires répliqués sur le nœud secondaire à des dates/heures données. Pour plus de détails, voir 13.6.4.10 page 270. Le module doit être démarré pour activer cette fonctionnalité. Une fois synchronisé, le module se bloque dans l'état WAIT (rouge) jusqu'à la prochaine synchronisation. La planification est basée sur le gestionnaire de tâches du système d’exploitation :
Vous devez simplement configurer syncat avec la syntaxe du gestionnaire de tâche du système. Par exemple, pour une synchronisation quotidienne, après minuit :
syncat="/SC DAILY /ST 00:01:00"
syncat="01 0 * * *"
|
||||||
|
[<flow
name=”network” > |
Ancienne configuration préservée pour la compatibilité ascendante. Quand cette section n'est pas définie, le flux de réplication passe par le heartbeat défini avec ident="flow" s’il y en a un, sinon par la voie du 1er heartbeat (pour la description des heartbeats, voir section 13.3 page 241). Si vous utilisez cette configuration, il faut assurer la cohérence avec la définition d’un heartbeat avec ident=flow" car des règles de failover par défaut sont définies (décrites en 13.18.5 page 291).
L’attribut name de <flow> nommé le réseau utilisé pour le flux de réplication. network doit être le nom d’un réseau défini dans la configuration du cluster global (voir section 12 page 231). Le tag <server> était utilisé dans l’ancienne syntaxe de configuration (avant SafeKit 7.2). Il est supporté pour assurer la compatibilité ascendante, mais ne doit pas être utilisé pour la configuration de nouveaux modules.
|
||||||
|
<replicated |
Définition des répertoires
répliqués |
||||||
|
dir="/abs_path" |
Path absolu du répertoire à répliquer. |
||||||
|
[mode= |
Accès en read-only sur la machine secondaire pour éviter la corruption. |
||||||
|
<notreplicated |
Path relatif d'un fichier ou d'un sous répertoire d'un répertoire répliqué. Le fichier (ou sous répertoire) est non répliqué. Autant de lignes que de fichiers ou sous répertoire à non répliquer. |
||||||
|
<notreplicated |
Linux seulement. Expression régulière pour définir les fichiers ou sous répertoires non répliqués. Exemple (pour plus d'information, voir "man regex"): <replicated
dir="/safedir"> Dans cet exemple, /safedir/conf/config.tmp et /safedir/log.tmp sont non répliqués alors que /safedir/conf/config.tmp.bak est répliqué. |
||||||
|
<tocheck |
Path relatif d'un fichier ou d'un sous répertoire dans un répertoire répliqué. Vérifier sa présence avant de démarrer. Evite un démarrage sur un répertoire vide. Mettre autant de lignes que nécessaire. |
Voir les prérequis décrits en 2.2.4 page 29.
En Windows, activez le journal USN sur le lecteur qui contient les répertoires répliqués afin d'activer la réintégration par zones, après redémarrage du serveur, à condition que le module ait été arrêté proprement.
Sur Linux, l'interception des données répliquées est basée sur un montage NFS local. Et le flux de réplication entre les serveurs est basé sur le protocole NFS v3 / TCP.
Le montage NFS des répertoires répliqués à partir de clients Linux externe n'est pas supporté. En revanche, le montage d'autres répertoires peut être réalisé avec les commandes standards.
Procédure pour répliquer un point de montage
Quand un répertoire répliqué est un point de montage, la configuration du module échoue avec l'erreur suivante :
Erreur: périphérique ou ressource occupée
Dans la suite, nous prenons l'exemple du module PostgreSQL qui définit en tant que répertoires répliqués /var/lib/pgsql/var et /var/lib/pgsql/data. Le fichier userconfig.xml du module contient :
<rfs … >
<replicated dir="/var/lib/pgsql/var" mode="read_only" />
<replicated dir="/var/lib/pgsql/data" mode="read_only" />
</rfs>
Ces répertoires sont des points de montage comme le montre le résultat de la commande df –H. La commande retourne par exemple :
/dev/mapper/vg01-lv_pgs_var … /var/lib/pgsql/var
/dev/mapper/vg02-lv_pgs_data … /var/lib/pgsql/data
Vous devez appliquer la procédure suivante pour configurer le module avec la réplication de ces répertoires.
|
|
C'est la même procédure pour tous les points de montage qui doivent être répliqués.
|
démonter les systèmes de fichiers en exécutant :
umount /var/lib/pgsql/var
umount /var/lib/pgsql/data
configurer le module en exécutant :
/opt/safekit/safekit config –m postgresql
La configuration se termine avec succès.
vérifier l’existence des liens symboliques créés lors de la
configuration en exécutant ls -l
/var/lib. La commande retourne :
lrwxrwxrwx 1 root root var -> var_For_SafeKit_Replication
lrwxrwxrwx 1 root root data -> data_For_SafeKit_Replication
éditer /etc/fstab et
modifier les 2 lignes :
/dev/mapper/vg01-lv_pgs_var /var/lib/pgsql/var ext4…
/dev/mapper/vg02-lv_pgs_data /var/lib/pgsql/data ext4…
par
/dev/mapper/vg01-lv_pgs_var /var/lib/pgsql/var_For_SafeKit_Replication ext4…
/dev/mapper/vg02-lv_pgs_data /var/lib/pgsql/data_For_SafeKit_Replication ext4..
monter les systèmes de fichiers en exécutant :
mount /var/lib/pgsql/var_For_SafeKit_Replication
mount /var/lib/pgsql/data_For_SafeKit_Replication
|
|
Appliquez cette procédure sur les deux nœuds si les répertoires répliqués sont des points de montage sur les deux nœuds. Une fois appliquée, vous pouvez utiliser le module comme d’habitude : par exemple safekit start stop etc ... |
|
|
Pour empêcher le démarrage du module quand le répertoire est non monté et vide, vous pouvez insérer dans userconfig.xml la vérification de la présence d'un fichier dans le répertoire répliqué. Exemple pour /var/lib/pgsql/var (faire de même pour /var/lib/pgsql/data en testant un fichier toujours présent dans ce répertoire) : <replicated dir="/var/lib/pgsql/var" mode="read_only"> <tocheck path="postgresql.conf" /> </replicated> |
A la déconfiguration du module (ou désinstallation du package SafeKit), vous devez appliquer la procédure inverse pour restaurer l’état initial :
démonter les systèmes de fichiers en exécutant :
umount /var/lib/pgsql/var_For_SafeKit_Replication
umount /var/lib/pgsql/data_For_SafeKit_Replication
déconfigurer le module en exécutant /opt/safekit/safekit deconfig -m postgresql
éditer /etc/fstab pour
y restaurer son état initial
monter les systèmes de fichiers en exécutant :
mount /var/lib/pgsql/var
mount /var/lib/pgsql/data
Sur Windows, l'interception des données est basée sur un filtre file system. Et le flux de réplication entre les serveurs est basé sur le protocole NFS v3 / TCP.
Certains anti-virus peuvent empêcher le fonctionnement correct de la réplication.
Sur Windows, il est possible de monter à distance un répertoire répliqué. Si vous voulez pouvoir monter avec le nom et non l'adresse IP virtuelle, vous devez positionner les valeurs suivantes dans les bases de registre des deux serveurs SafeKit :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"DisableLoopbackCheck"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"DisableStrictNameChecking"=dword:00000001
En Windows, pour activer la réintégration par zones après le redémarrage du serveur, lorsque le module a été correctement arrêté, le composant <rfs> utilise le journal NTFS USN pour vérifier que les informations enregistrées sur les zones sont toujours valables après le redémarrage. Lorsque le contrôle réussit, la réintégration par zones peut être appliquée sur le fichier ; sinon, le fichier doit être recopié dans sa totalité.
Par défaut, seul le lecteur système a un journal USN actif. Si les répertoires répliqués sont situés sur un lecteur différent du lecteur système, vous devez créer le journal (avec commande fsutil usn). Voir SK-0066 pour un exemple.
Avec la réplication de fichiers, l’architecture miroir est particulièrement adaptée à la haute disponibilité des applications base de données avec des données critiques à protéger contre les pannes. En effet, les données du serveur secondaire sont fortement synchronisées avec celles du serveur primaire. Le serveur est dit à jour et seul un serveur à jour peut démarrer en primaire ou effectuer une reprise sur panne
Si la disponibilité de l’application est plus critique que la synchronisation des données, la politique par défaut peut être relâchée pour autoriser un serveur non à jour à devenir primaire mais uniquement si la date de la dernière synchronisation est inférieure à un délai configurable. Cela est configuré avec l’attribut syncdelta du tag <rfs> dont la valeur est exprimée en minutes :
syncdelta <= 1
L’attribut est ignoré et la politique par défaut de démarrage en primaire et de reprise sur panne est appliquée. La valeur par défaut 0.
syncdelta > 1
Si le serveur à jour ne répond pas, le serveur non à jour peut devenir primaire mais uniquement si le temps écoulé depuis la dernière synchronisation est inférieur à la valeur de syncdelta (en minutes).
Cette fonctionnalité est implémentée à l’aide de :
la ressource rfs.synced
Quand syncdelta est > 1, la gestion de la ressource rfs.synced est activée. Cette ressource est dans l’état UP si les données répliquées sont cohérentes et le temps écoulé depuis la dernière synchronisation est inférieur à la valeur de syncdelta.
Le checker syncedcheck
Quand syncdelta est > 1, ce checker est activé. Il affecte la valeur de la ressource rfs.synced.
La règle de failover rfs_forceuptodate
Quand syncdelta est > 1, la règle de failover suivante est valide :
rfs_forceuptodate: if (heartbeat.* == down && cluster() == down && rfs.synced == up && rfs.uptodate == down) then rfs.uptodate=up;
Cette règle provoque le démarrage en primaire du serveur lorsque le serveur à jour ne répond pas, et à condition que ce serveur soit isolé et considéré synchronisé en fonction de la valeur de syncdelta.
Vous pouvez vérifier que les fichiers sont identiques sur le primaire et le secondaire avec la commande suivante à passer sur la machine SECOND : safekit rfsverify –m AM. Exécuter safekit rfsverify –m AM > log pour rediriger la sortie de la commande dans un fichier nommé log.
La sortie de la commande est un journal similaire à celui de la réintégration dans lequel sont indiqués les fichiers à recopier (donc différents).
Quand sur la primaire, il y a de l’activité sur les répertoires répliqués, il se peut qu'une anomalie soit détectée alors qu'il n'y a pas de différence entre les fichiers. Cela se produit dans les cas suivants :
sur Windows à cause des modifications faites sur disque avant
d'être répliquées,
avec async="second"
(défaut) car les lectures peuvent dépasser les écritures.
Pour vérifier s'il y a vraiment une incohérence, vous devez relancer la commande sur le serveur secondaire en s'assurant qu'il n'y plus d'activité sur le serveur primaire.
Sur Windows, certains fichiers modifiés avec l'option SetvalidData sont systématiquement détectés différents car ils sont étendus sans reset des données : le contenu en lecture des zones étendues est le contenu aléatoire du disque au moment de la lecture.
|
|
Il est fortement recommandé d'exécuter cette commande uniquement lorsqu'il n'y a pas d'accès aux répertoires répliqués sur le primaire. |
Avant de démarrer le serveur secondaire, il peut être utile d'évaluer le nombre de fichiers et la quantité de données qui ont été modifiés sur le serveur primaire depuis l'arrêt du serveur secondaire. Cette fonctionnalité est fournie en exécutant la commande suivante sur le serveur ALONE : safekit rfsdiff –m AM. Exécuter safekit rfsdiff –m AM > log pour rediriger la sortie de la commande dans un fichier nommé log.
Cette commande exécute des vérifications en ligne du contenu des fichiers réguliers du module AM. Elle analyse l'arborescence répliquée entièrement et affiche le nombre de fichiers qui ont été modifiés ainsi que la taille qui doit être recopiée. Elle affiche également une estimation du temps total de réintégration. Ceci n'est qu'une évaluation car seuls les fichiers réguliers sont analysés et d'autres modifications peuvent se produire jusqu'à ce que la synchronisation soit exécutée par le serveur secondaire.
Cette commande doit être utilisée avec précaution sur un serveur en production car elle entraîne une surcharge sur le serveur (pour la lecture, avec verrouillage, de l’arborescence et des fichiers). En Windows, le renommage des fichiers peut échouer pendant cette évaluation.
|
|
Il est fortement recommandé d'exécuter cette commande uniquement lorsqu'il n'y a pas d'accès aux répertoires répliqués. |
Le composant de réplication collecte sur le serveur PRIM la bande passante utilisée par les opérations d’écritures de réplication et de réintégration.
Deux ressources (rfs_bandwidth.replication et rfs_bandwidth.reintegration), exprimées en kilo octet par seconde (KB/s), reflètent la bande passante moyenne utilisée respectivement par la réplication et la réintégration durant les 3 dernières secondes.
Si la charge de réplication est très active en écriture, une saturation du lien réseau peut se produire lors de la phase de réintégration, entraînant un ralentissement significatif de l’application. Dans ce cas, l’attribut <rfs> reiallowedbw peut être utilisé pour limiter la bande passante utilisée par la phase de réintégration (voir section 13.6.3 page 254). Il faut cependant considérer que la limitation de la bande passante de réintégration allongera la durée de la phase de réintégration.
Depuis SafeKit 7.5, il y a 2 nouvelles ressources qui reflètent la bande passante réseau (en KOctets/sec), utilisée entre les processus nfsbox, qui s'exécutent sur chaque nœud pour implémenter la réplication et la réintégration :
rfs.netout_bandwidth
est la bande passante utilisée en sortie
rfs.netin_bandwidth
est la bande passante utilisée en entrée
Vous pouvez observer la valeur de rfs.netout_bandwidth sur le primaire ou de rfs.netin_bandwidth sur le secondaire pour connaître le taux de modification au moment de l’observation (écriture, création, suppression, ...). L'historique des valeurs de la ressource donne un aperçu de son évolution dans le temps.
La valeur de la bande passante dépend de l’activité applicative, système et réseau. Sa mesure n’est disponible qu’à titre d’information.
Depuis SafeKit 7.2, SafeKit offre la nouvelle commande safekit secondforce -d date -m AM qui force le module AM à démarrer comme secondaire après avoir copié uniquement les fichiers modifiés après la date spécifiée.
|
|
Cette commande doit être utilisée avec précautions car la synchronisation ne copiera pas les fichiers modifiés avant la date spécifiée. Il incombe à l'administrateur de s'assurer que ces fichiers sont cohérents et à jour. |
La date est dans le format YYYY-MM-DD[Z] ou "YYYY-MM-DD hh:mm:ss[Z]" ou YYYY-MM-DDThh:mm:ss[Z], où:
Par exemple :
Cette commande peut être utile dans le cas suivant :
· le module est arrêté sur le serveur primaire et une sauvegarde des données répliquées est effectuée (sur un lecteur amovible par exemple)
· le module est arrêté sur le serveur secondaire et les données répliquées sont restaurées à partir de la sauvegarde. Il peut s'agir du premier démarrage ou de la réparation du serveur secondaire.
· le module est démarré sur le serveur primaire qui devient ALONE
· le module est démarré sur le secondaire avec la commande safekit secondforce -d date -m AM où la date est la date de sauvegarde
Dans ce cas, seuls les fichiers modifiés depuis la date de la sauvegarde seront copiés (dans leur totalité), au lieu de la copie complète de tous les fichiers.
|
|
En Windows, la date de modification du fichier sur le serveur secondaire est affectée lorsque le fichier est copié par le processus de réintégration. Par conséquent, safekit secondforce -d date -m AM, dont la date est antérieure à la dernière réintégration sur ce serveur, n'a aucun intérêt. |
Lors de la première synchronisation, tous les fichiers répliqués sont copiés dans leur totalité du nœud principal vers le nœud secondaire. Lors des synchronisations suivantes, nécessaires lors du redémarrage du nœud secondaire, seules les zones modifiées des fichiers sont recopiées. Lorsque les répertoires répliqués sont volumineux, la première synchronisation peut prendre beaucoup de temps en particulier si le réseau est lent. C'est pourquoi, depuis SafeKit> 7.3.0.11, SafeKit fournit une nouvelle fonctionnalité pour synchroniser un grand volume de données qui doit être utilisée conjointement avec un outil de sauvegarde.
Sur le nœud principal, il suffit d’effectuer une sauvegarde des répertoires répliqués et de passer la politique synchronisation au mode externe. La sauvegarde est transportée (en utilisant un lecteur externe par exemple) et restaurée sur le nœud secondaire, qui est aussi configuré pour effectuer une synchronisation externe. Lorsque le module est démarré sur le nœud secondaire, il recopie uniquement les zones de fichiers modifiées sur le nœud principal depuis la sauvegarde.
La synchronisation externe repose sur une nouvelle commande safekit rfssync qui doit être appliquée sur les deux nœuds afin de positionner le mode de synchronisation à external. Cette commande prend comme arguments :
Procédure de synchronisation externe
La procédure de synchronisation externe, décrite ci-dessous, est la procédure à appliquer dans le cas d’une sauvegarde à froid des répertoires répliqués. Dans ce cas, l’application doit être arrêtée et toute modification des répertoires répliqués est interdite jusqu’au démarrage du module, et de l’application, en ALONE – vert. L’ordre des opérations doit être strictement respecté.

La procédure de synchronisation externe, décrite ci-dessous, est la procédure à appliquer dans le cas d’une sauvegarde à chaud des répertoires répliqués. Dans ce cas, le module est ALONE – vert ; l’application est démarrée et les modifications du contenu des répertoires répliqués sont autorisées. L’ordre des opérations doit être strictement respecté.

Commande safekit rfssync
|
safekit rfssync external prim <uid> [–m AM] |
Positionne la politique de synchronisation à external. Elle est identifiée par la valeur de uid (max 24 char). Le nœud est le primaire, source pour la synchronisation des données. |
||
|
safekit rfssync external second <uid> [–m AM] |
Positionne la politique de synchronisation à external. Elle est identifiée par la valeur de uid (max 24 char). Le nœud est le secondaire, destination de la synchronisation des données. |
||
|
safekit rfssync –d prim <uid> [–m AM] safekit rfssync –d second <uid> [–m AM] |
Désactive le contrôle des modifications des répertoires répliqués entre le moment de la sauvegarde à froid/la restauration et le démarrage du module.
|
||
|
safekit rfssync full [–m AM] |
Positionne la politique de synchronisation à full. Celle-ci entraîne la recopie de tous les fichiers dans leur totalité à la prochaine synchronisation. |
||
|
safekit rfssync |
Affiche la politique de synchronisation courante. |
Internes
La politique de synchronisation est représentée par des ressources du module : usersetting.rfssyncmode, usersetting.rfssyncrole, usersetting.rfssyncuid et rfs.rfssync :
usersetting.rfssyncmode=”default”
(usersetting.rfssyncrole=”default”, usersetting.rfssyncuid=”default”)
Ces valeurs sont associées à la politique de synchronisation standard, celle appliquée par défaut. Elle consiste à ne copier que les zones modifiées des fichiers. Quand cette stratégie ne peut être appliquée, les fichiers modifiés sont recopiés dans leur totalité.
usersetting.rfssyncmode=”full”
(usersetting.rfssyncrole=”default”, usersetting.rfssyncuid=”default”)
Ces valeurs sont associées à la politique de synchronisation full. Elle est appliquée :
o au premier démarrage du module après sa première configuration
o sur commandes safekit (safekit second fullsync ; safekit rfssync full ; safekit primforce ; safekit config ; safekit deconfig)
o sur changement d’appariement du module
La politique de synchronisation full entraîne la recopie de tous les fichiers dans leur totalité à la prochaine synchronisation.
usersetting.rfssyncmode=”external”,
usersetting.rfssyncrole=”prim | second”
and usersetting.rfssyncuid=”uid”
Ces valeurs sont associées à la politique de synchronisation external affectée avec les commandes safekit rfssync external prim uid ou safekit rfssync external second uid. La prochaine synchronisation appliquera la politique de synchronisation externe.
rfs.rfssync=”up | down”
Cette ressource vaut up uniquement lorsque la politique de synchronisation, définie par les ressources précédentes, peut être appliquée.
Quand la politique de synchronisation n’est pas celle par défaut, celle-ci repasse automatiquement dans le mode par défaut une fois la synchronisation appliquée avec succès.
Dans certains cas, la synchronisation externe ne peut être appliquée et le nœud secondaire s’arrête avec une erreur indiquée dans le journal du module. Dans cette situation, il faut soit :
compléter la procédure de synchronisation externe si celle-ci n’a
pas été effectuée dans sa totalité sur les 2 nœuds
réappliquer complètement la procédure de synchronisation sur les
2 nœuds
appliquer la politique de synchronisation full (commande safekit
rfssync full)
appliquer la synchronisation par date, en utilisant la date de la
sauvegarde (voir section 13.6.4.8 page
266). Contrairement à la synchronisation externe, la synchronisation par date
va copier dans leur totalité (et non par zones) les fichiers modifiés sur le
nœud primaire.
Par défaut, SafeKit offre la réplication de fichiers en temps réel et une synchronisation automatique. Si la charge est importante sur le nœud primaire ou si le réseau a une forte latence, il peut être préférable d’accepter que le nœud secondaire ne soit pas fortement synchronisé avec le nœud primaire. Pour cela, vous pouvez utiliser l'attribut syncat pour planifier une synchronisation régulière des répertoires répliqués sur le nœud secondaire. Le module doit être démarré pour activer cette fonctionnalité. Une fois synchronisé, le module se bloque dans l'état WAIT (rouge) jusqu'à la prochaine synchronisation planifiée. Cette fonctionnalité est implémentée avec :
la ressource rfs.syncat
affectée à up aux dates
planifiées et affectée à down une
fois le nœud secondaire synchronisé
la règle de failover rfs_syncat_wait
qui bloque le nœud secondaire dans l’état WAIT
(rouge) jusqu’à ce que la ressource rfs.syncat
soit up
Si vous souhaitez forcer la synchronisation en dehors des dates planifiées, il faut exécuter la commande safekit set –r rfs.syncat –v up –m AM quand le module est dans l’état WAIT (rouge).
La configuration de syncat se fait simplement en utilisant la syntaxe du gestionnaire de tâches du système d’exploitation : crontab en Linux et schtasks.exe en Windows (voir section 13.6.3 page 254).
Cette section décrit uniquement les options de configuration du tag <user>. Pour une description complète des scripts, voir la section 14 page 293.
<user logging="userlog" >
<var name="VARENV" value="V1" />
</user>
Voir un exemple en 15.1 page 302.
<user
[nicestoptimeout="300"]
[forcestoptimeout="300"]
[logging="userlog"|"none"]
[userlogsize="2048"]
>
<var name="ENVIRONMENT_VARIABLE_1" value="VALUE_1" />
…
</user>
|
|
Le tag <user> et son sous-arbre peuvent être entièrement modifiés dynamiquement. |
|
<user |
|
||
|
[nicestoptimeout="300"] |
Timeout en secondes pour exécuter les scripts stop_xx. Valeur par défaut : 300 secondes |
||
|
[forcestoptimeout="300"] |
Timeout en secondes pour exécuter les scripts stop_xx –force Valeur par défaut : 300 secondes |
||
|
[logging="userlog"|="none"] |
logging="userlog" : les messages stdout et stderr de l'application démarrée dans les scripts redirigés dans le journal applicatif dans le fichier SAFEVAR/modules/AM/userlog.ulog où AM est le nom du module (SAFEVAR=C:\safekit\var sur Windows et /var/safekit sur LINUX).
logging="none" : les messages stdout et stderr de l'application démarrée dans les scripts ne sont pas logués Valeur par défaut : userlog |
||
|
[userlogsize="2048"] |
Taille limite en KO du journal applicatif. Au démarrage du module, le fichier est reseté si sa taille a dépassé la limite. Valeur par défaut : 2048 KO |
||
|
<var |
Variable d'environnement et sa valeur exportée avant l'exécution des scripts. Mettre autant de lignes que de variables. |
<vhost>
<virtualhostname name="vhostname" envfile="vhostenv" />
</vhost>
Voir l’exemple en 15.6 page 309.
<vhost>
<virtualhostname
name="virtual_hostname"
envfile="path_of_a_file"
[when="prim"|"second"|"both"]
/>
</vhost>
|
|
Le tag <vhost> et son sous-arbre ne peuvent pas être modifiés dynamiquement. |
|
<vhost> |
|
|
<virtualhostname |
|
|
name="virtual_hostname" |
Définition du nom virtuel. |
|
envfile="path_of_envfile" |
Chemin d'un fichier d'environnement généré automatiquement par SafeKit à la configuration. Si le chemin du fichier est relatif, le fichier est généré dans les fichiers d'environnement du module, i.e. : SAFEUSERBIN Ce fichier est utilisé dans les scripts pour positionner le hostname virtuel. Voir le module vhost.safe livré avec le package Linux et Windows. |
|
[when="prim"|"second"|"both"] |
Définis quand le hostname virtuel doit être rendu. Par défaut, prim signifie quand le module est primaire (PRIM ou ALONE). |
|
/> |
|
|
</vhost> |
|
Certaines applications ont besoin de voir le même hostname quel que soit le serveur d'exécution (typiquement, elles stockent le hostname dans un fichier répliqué). Le hostname virtuel peut être présenté à ces applications alors que les autres applications voient le hostname physique des serveurs.
Sur Linux
La mise en œuvre est basée sur la variable d'environnement LD_PRELOAD : les fonctions gethostname et uname sont surchargées.
Sur Windows
La mise en œuvre est basée sur la variable d'environnement CLUSTER_NETWORK_NAME_ : les fonctions de l'API name query (GetComputerName, GetComputerNameEx, gethostname) sont surchargées.
Pour utiliser vhost avec un service, utiliser les commandes vhostservice <service> [<file>] avant/après le démarrage/arrêt du service dans les scripts utilisateurs.
Pour un exemple complet, voir 15.6 page 309.
|
|
La section <errd> nécessite d'avoir défini la section <user/> |
Linux and Windows myproc est le nom de la commande associée au processus à surveiller :
<errd>
<proc name="myproc" atleast="1" action="restart" class="prim" />
</errd>
Linux uniquement (pour SafeKit > 7.2.0.29), oracle_.* est une expression régulière sur le nom de la commande associée au processus à surveiller :
<errd>
<proc name="oracle" nameregex="oracle_.*" atleast="1" action="restart" class="prim"/>
</errd>
Voir l’exemple en 15.7 page 311.
myservice est le nom du service Windows (pour safekit > 7.3) ou du service systemd Linux (pour safekit > 7.4.0.19) à surveiller :
<errd>
<proc name="myservice" service="yes" action="restart" class="prim" />
</errd>
<errd
[polltimer="10"]
>
<proc name="command name and/or resource name for the monitored process or service"
[service="no|yes"]
[nameregex=="regular expression on the command name"]
[argregex="regular expression on process arguments, including command name"]
atleast="1"
action="stopstart"|"restart"|"stop"|"executable_name"
class="prim"|"both"|"pre"|"second"|"sec"|"othername"]
[start_after="nb polling cycles"]
[atmax="-1"]
/>
…
</errd>
|
|
Le tag <errd> et son sous-arbre peuvent être entièrement modifiés dynamiquement. |
|
<errd |
|
||||
|
polltimer="30" |
Temps de polling, en secondes, entre 2 surveillances des processus. Valeur par défaut : 30 secondes |
||||
|
<proc |
Définition du processus à surveiller. Autant de lignes que de processus. Une ressource est associée à chaque <proc> et est nommée proc.<valeur de l'attribut name> (par exemple proc.process_name). La ressource vaut up lorsque la condition de surveillance est vraie ; vaut down sinon. |
||||
|
name="command_name"
Ou name="command_name" nameregex="regular expression on the command name"
Ou name="service_name" service="yes"
|
name est le nom de la commande associée au processus à surveiller. C’est aussi le nom de la ressource associée au processus surveillé. Au maximum 15 caractères pour Linux (le nom de la commande peut être tronqué) ; 63 pour Windows. Exemple : sur LINUX, name="vi" et sur Windows name="notepad.exe".
Pour retrouver le nom des commandes associées aux processus, voir les commandes décrites en 13.9.4 page 277.
Linux uniquement nameregex est une expression régulière sur le nom de la commande pour sélectionner le processus à surveiller. name est le nom de la ressource associée au processus surveillé.
Exemple : nameregex = "oracle _. *" name = "oracle" surveille les processus oracle dont le nom de la commande respecte l’expression régulière La ressource associée est proc.oracle L’attribut nameregex est facultatif
name est le nom du service à surveiller. C’est aussi le nom de la ressource associée au service surveillé. Au maximum, 63 caractères. Exemples : name="W32Time" service="yes" surveille le service de Temps Windows. name="ntpd" service="yes" surveille le service de Temps Linux (systemd ntpd.service) .
L’attribut service est facultatif et sa valeur par défaut est : no |
||||
|
class= "prim"| "both"| "pre"| "sec"| "othername" |
Le processus appartient à une classe. La surveillance démarre avec la commande safekit errd enable classname -m AM. Les fonctions enable/disable des classes prim, both, pre, second, sec sont automatiques et faites par SafeKit dans le composant <user/> après/avant start_prim/stop_prim, start_both/stop_both, start_second/stop_second, start_sec/stop_sec. Pour une description des scripts, voir 14 page 293. Avec un autre nom de classe, les fonctions enable/disable doivent être faites explicitement après/avant le démarrage/arrêt des processus de la classe. |
||||
|
[argregex="regular expression on process arguments"] |
Expression régulière sur la liste des arguments du processus incluant le nom de l'exécutable. Paramètre optionnel. Pour retrouver la liste des arguments d'un processus, utiliser les commandes décrites en 13.9.4 page 277. Exemples sur Linux avec l'éditeur vi sur myfile ("man regex" pour plus d'information) : name="vi" argregex=".*myfile.*" name="vi" argregex="/myrep/myfile.*" name="vi" argregex="/myrep/myfile" Exemples Windows avec l'éditeur Notepad sur myfile ("class CatlRegExp" pour plus d'information): name="notepad.exe" argregex=".*myfile.*" name="notepad.exe" argregex="c:\\myrep\\myfile.*" name="notepad.exe" argregex="c:\\myrep\\myfile"
|
||||
|
atleast="1" |
Nombre minimum de processus qui doivent s'exécuter. Si le minimum est atteint, SafeKit déclenche l'action. Exemple: name="oracle" argregex=".*db1.*" atleast="1" signifie qu'une action est déclenchée si 0 processus s'exécute sur l'instance oracle/db1. S’il est positionné à -1, ce critère n'est pas pris en compte. Valeur par défaut : 1 |
||||
|
action=
|
Action (ou handler) à exécuter sur le module. noaction réalise juste un logging de message, restart un redémarrage local et stopstart un basculement. Les commandes restart/stopstart incrémente le compteur maxloop pour vérifier que l'on n'est pas sur une faute reproductible. Pour la description de maxloop, voir 13.2 page 238. Pour un handler, soit mettre le chemin absolu du handler, soit mettre le chemin relatif au répertoire bin du module ("SAFE/modules/AM/bin/"). Nous conseillons un chemin relatif avec un handler défini dans le module. Avec un handler spécial, une classe avec un nom propre doit être définie. Pour un handler spécial en Linux, insérer à la fin du script, exit 0 Pour un handler spécial en Windows, mettre à la fin %SAFEBIN%\exitcode 0. Sinon, c'est un échec et SafeKit exécute stopstart sur le module. Avec un handler spécial, le compteur maxloop n'est pas incrémenté. Utiliser la commande : safekit incloop –m AM –i <handler name> Cette commande incrémente le compteur et retourne 1 quand la limite est atteinte. Voir l’exemple décrit en 15.7 page 311. Valeur par défaut : stopstart |
||||
|
start_after=[nb polling cycles] |
Sans le paramètre start_after, la surveillance des processus est effective immédiatement. Sinon elle est retardée de (n-1)*polltimer secondes où :
Par exemple si start_after="3", la surveillance est retardée de 60 secondes ((3-1)*30). Le paramètre start_after est utile si le processus prend un certain temps à démarrer. Valeur par défaut : 0 |
||||
|
Paramètres avancées |
|
||||
|
atmax="-1" |
Nombre maximum de processus qui peuvent s'exécuter. Si le maximum est atteint, SafeKit déclenche l'action. Avec atmax="0", une action est déclenchée à chaque démarrage du processus. Valeur par défaut : -1 critère non pris en compte |
||||
|
</errd> |
|
|
|
Si la commande est utilisée dans un script utilisateur, alors la variable d'environnement SAFEMODULE est positionnée et le paramètre "-m AM" n'est pas nécessaire |
|
safekit –r |
Stocke son résultat dans le fichier <SAFEVAR>/errdpoll_reserrd (SAFEVAR = /var/safekit sur Linux ou c:\safekit\var sur Windows) avec une ligne pour chaque processus : <pid> <command name> <command full name and arguments list> (parent=<parent pid>) En Windows, le nom de la commande est affiché en minuscule. Utile pour déterminer le nom des processus à surveiller et leurs arguments pour une configuration <errd> |
|
safekit errd disable "classname" –m AM |
Suspend la surveillance des processus de la classe classname (pour le module applicatif AM). Doit être explicitement appelé dans les scripts stop_... avant d'arrêter l'application, pour des processus dans des classes différentes de prim, both, second, sec. |
|
safekit errd enable "classname" –m AM |
Redémarre la surveillance des processus de la classe classname (pour le module applicatif AM). Doit être explicitement appelé dans les scripts start_... après le démarrage de l'application, pour des processus dans des classes différentes de prim, both, second, sec. |
|
safekit errd suspend –m AM
|
Suspend la surveillance des processus du module AM (sauf les processus SafeKit). Utile lorsque l'on stoppe manuellement l'application et que l'on ne veut pas de détection. |
|
safekit errd resume –m AM
|
Redémarre la surveillance des processus du module AM |
|
safekit errd list –m AM |
Liste tous les processus du module AM surveillés incluant les processus SafeKit. La liste peut être également lue dans SAFEVAR/modules/AM/errdlist. |
|
safekit kill |
Le composant <errd> doit s'exécuter. Tue le(s) processus identifié(s) par le nom et les arguments. level="test" : affiche seulement la liste des processus level="terminate" : kill les processus en Windows level="9" : envoie le signal SIGKILL aux processus en Linux level="15" : envoie le signal SIGTERM aux processus en Linux Exemples Windows ("class CatlRegExp" pour plus d'information): safekit
kill –name="notepad.exe" safekit
kill –name="notepad.exe" Exemples Linux ("man regex" pour plus d'information) : safekit
kill –name="vi" safekit
kill –name="vi" |
SafeKit apporte des checkers avec des règles de failover par défaut (voir section 13.18.5 page 291). Les checkers sont :
13.11 « TCP checker (<tcp> tags) » page 280.
13.12 « Ping checker (<ping> tags) » page 281.
13.13 « Interface checker (<intf> tags) » page 282.
13.14 « IP checker (<ip> tags) » page 283
13.15 « Checker customisé (<custom> tags) » page 285.
13.16 « Module checker (<module> tags) » page 286
13.17 « Splitbrain checker (<splitbrain> tag) » page 288
Tous les checkers se définissent dans une seule section <check> :
<check>
<!-- Insérer ci-dessous les tags <tcp> <ping> <intf> <ip> <custom> <module>
<splitbrain> -->
</check>
<check>
<tcp …>
<to …/>
</tcp>
…
<ping …>
<to …/>
</ping>
…
<intf …>
<to …/>
</intf>
…
<ip …>
<to …/>
</ip>
…
<custom …/>
…
<module …>
[<to …/>]
</module>
…
<splitbrain …/>
</check>
|
|
Le tag <check> et son sous-arbre peuvent être entièrement modifiés dynamiquement. |
|
|
Par défaut, un checker <tcp> réalise un redémarrage local du module lorsque le service TCP est down. |
<check>
<tcp ident="R1test" when="prim" >
<to addr="R1" port="80"/>
</tcp>
</check>
|
|
Insérer le tag <tcp> dans la section <check> si celle-ci est déjà définie. |
Voir l’exemple en 15.8 page 313.
<tcp
ident="tcp_checker_name"
when="prim|second|both|pre"
>
<to
addr="IP_address" or "name_to_check"
port="TCP_port_to_check"
[interval="10"]
[timeout="5"]
/>
</tcp>
|
<tcp |
Positionner autant de sections <tcp> qu'il y a de checkers <tcp>. |
|
ident="tcp_checker_name" |
Nom du checker TCP. |
|
when="prim|second|both" |
Utiliser cette valeur pour tester un service TCP interne à l'application Suivant cette valeur, le checker est démarré/arrêté après/avant les scripts start_prim/stop_prim, start_second/stop_second, start_both/stop_both. Action en cas de défaillance: restart du module (voir les règles de failover par défaut décrites en 13.18.5 page 291). Chaque restart incrémente le compteur maxloop (voir section 13.2.3 page 239). |
|
when="pre" |
Utiliser cette valeur pour tester un service TCP externe à l'application Le checker est démarré/arrêté après/avant les scripts prestart/poststop. Vous devez ajouter une règle de failover spéciale pour un tel checker. Typiquement: external_tcp_service: if (tcp.tcp_checker_name == down) then wait(); Cette règle réalise un stopwait et met le module dans l'état WAIT tant que le service TCP externe ne répond pas (pour plus d'information, voir 13.18 page 289). Chaque stopwait incrémente le compteur maxloop (voir section 13.2.3 page 239). |
|
<to |
|
|
addr="IP_@" or "name" |
Adresse IP ou nom à checker (ex : 127.0.0.1 pour un service local). Adresse IPv4 ou IPv6. |
|
port="value" |
Port TCP port à checker |
|
[interval="10"] |
Temps, en secondes, entre 2
pollings. |
|
[timeout="5"] |
Délai en secondes pour l'acceptation de la connexion. Valeur par défaut : 5 secondes |
|
</tcp> |
|
|
|
Par défaut, un <ping> checker met le module dans l'état WAIT et attend que ping redevienne up. |
<check>
<ping ident="testR2" >
<to addr="R2"/>
</ping>
</check>
|
|
Insérer le tag <ping> dans la section <check> si celle-ci est déjà définie. |
Voir l’exemple en 15.9 page 313.
<ping
ident="ping_checker_name"
[when="pre"]
>
<to
addr="IP_address" or "name_to_check"
[interval="10"]
[timeout="5"]
/>
</ping>
|
<ping |
Mettre autant de section <ping> qu'il y a de ping checkers. |
|
ident="ping_checker_name" |
Nom du checker ping |
|
[when="pre"] |
Valeur par défaut Le checker est démarré/arrêté après/avant les scripts prestart/poststop. La règle de failover par défaut réalise un stopwait qui met le module dans l'état WAIT tant que le ping ne répond pas (pour plus d'informations, voir 13.18 page 289). Chaque stopwait incrémente le compteur maxloop (voir 13.2.3 page 239). |
|
<to |
|
|
addr="IP_@ or name" |
Adresse IP ou nom à checker Adresse IPv4 ou IPv6. |
|
[interval="10"] |
Intervalle de temps, en secondes,
entre 2 pollings. |
|
[timeout="5"] |
Délai en secondes sur la
réponse au ping. |
|
</ping> |
|
|
|
Par défaut, un checker <intf> arrête le module et attend que l'interface réseau soit up. |
<check>
<intf ident="test_eth0">
<to local_addr="192.168.1.10"/>
</intf>
</check>
|
|
Insérer le tag <intf> dans la section <check> si celle-ci est déjà définie. |
Voir l’exemple en 15.10 page 313.
<intf
ident="intf_checker_name"
[when="pre"]
>
<to
local_addr="interface_physical_IP_address"/>
</intf>
|
<intf |
|
||
|
ident="intf_checker_name" |
Le nom de l'interface checker (adresse IP du réseau). |
||
|
[when="pre"] |
Valeur par défaut Le checker est démarré/arrêté après/avant les scripts prestart/poststop. La règle de failover par défaut réalise un stopwait qui met le module dans l'état WAIT tant que le ping ne répond pas (pour plus d'informations, voir 13.18 page 289). Chaque stopwait incrémente le compteur maxloop (voir 13.2.3 page 239). |
||
|
<to local_addr="IP_@ /> |
Adresse IP associée à l'interface à tester. Adresse IPv4 ou IPv6. |
||
|
</intf> |
|
En Windows et en Linux, ce checker vérifie qu’une adresse IP est bien configurée localement ; en Windows, il détecte en plus les conflits sur cette adresse.
|
|
Par défaut, un checker <ip> exécute un stopstart local du module lorsque l’adresse testée est down. |
<check>
<ip ident="ip_check" >
<to addr="192.168.1.10" />
</ip>
</check>
|
|
Insérer le tag <ip> dans la section <check> si celle-ci est déjà définie. |
Voir l’exemple en 15.11 page 314.
<ip
ident="ip_checker_name"
[when="prim"]
>
<to
addr="IP_address" or "name_to_check"
[interval="10"]
/>
</ip>
|
<ip |
Mettre autant de section <ip> qu'il y a de checkers ip. |
|
ident="ip_checker_name" |
Nom du checker ip (dont l’état est affiché par la commande safekit state -v –m AM). Chaque checker doit avoir un nom différent. |
|
[when="prim"] |
Valeur par défaut Le checker est démarré/arrêté après/avant les scripts prestart/poststop. La règle de failover par défaut réalise un stopstart du module (pour plus d'informations, voir 13.18 page 289). Chaque stopstart incrémente le compteur maxloop (voir 13.2.3 page 239). |
|
<to |
|
|
addr="IP_@ or name" |
adresse IP locale ou nom DNS à tester. Adresse IPv4 ou IPv6. |
|
[interval="10"] |
Intervalle de temps, en secondes, entre 2 tests. Valeur par défaut : 10 secondes |
|
</ip> |
|
Un checker customisé est un programme (script ou autre) que vous développez pour tester une ressource, l’application, … . Il s'agit d'une boucle qui effectue un test suivant une période adéquate. Son rôle est de positionner une ressource à "up" ou "down". Puis, une règle de failover dans userconfig.xml décide l'action à exécuter lorsque la ressource est down
<check>
<custom ident="AppChecker" when="prim" exec="mychecker" />
</check>
|
|
Insérer le tag <custom> dans la section <check> si celle-ci est déjà définie. Définir en plus le checker customisé ainsi que la règle de failover associée.
|
Pour des exemples complets, voir les sections 15.12 page 315.
<custom
ident="custom_checker_name"
when="pre|prim|second|both"
exec="executable_path"
arg="executable_arguments"
/>
|
<custom |
Positionner autant de sections <custom> qu'il y a de checkers customisés. |
|
ident="custom_checker_name" |
Nom du checker customisé Un checker customisé positionne sa ressource avec la commande safekit set –r custom.custom_checker_name –v up|down. |
|
when="pre" |
Le checker est démarré/arrêté après/avant les scripts prestart/poststop. Vous devez écrire une règle de failover qui doit réaliser un stopwait. Typiquement: wait_custom_checker: if (custom.custom_checker_name == down) then wait(); Elle met le module dans l'état WAIT tant que la ressource est down. Noter que l'état initial de la ressource est init et que la failover machine reste dans l'état WAIT tant que ressource n'est pas positionnée à up (pour plus d'information, voir 13.18 page 289). Chaque stopwait incrémente le compteur maxloop (voir 13.2.3 page 239). |
|
when="prim"|"second"|"both" |
Suivant cette valeur, le checker est démarré/arrêté après/avant les scripts start_prim/stop_prim, start_second/stop_second, start_both/stop_both. Vous devez écrire une règle de failover qui doit réaliser un restart, stopstart ou stop. Typiquement: restart_custom_checker: if (custom.custom_checker_name == down) then restart(); Pour plus d'information, voir 13.18 page 289. Chaque restart ou stopstart incrémente le compteur maxloop (voir 13.2.3 page 239). |
|
exec="executable_path" |
Défini le chemin de l'exécutable du checker customisé (un script ou un binaire). Lorsque le chemin est relatif, le custom checker est recherché dans SAFEUSERBIN. Mettre dans ce cas votre binaire dans SAFE/modules/AM/bin/ (pour plus d'information, voir 10.1 page 157). Nous conseillons un chemin relatif avec un exécutable dans le module. En Windows, l’exécutable peut être un binaire ou un script ps1, vbs ou cmd En Linux, l’exécutable peut être un binaire ou un script shell |
|
arg="executable_arguments" |
Définis les arguments à passer au checker customisé. |
Le checker de module teste la disponibilité d'un autre module. Le checker est démarré/arrêté après/avant les scripts prestart/poststop. Lorsque le checker de module détecte qu'un module externe est down, la failover machine réalise un stopwait et met le module local en WAIT jusqu'à ce que le module externe soit de nouveau détecté up. Le checker de module effectue également une action stopstart lorsqu'il détecte que le module externe a été redémarré (soit par un restart, un stopstart ou un failover).
Chaque stopwait ou stopstart incrémente le compteur maxloop (voir 13.2.3 page 239).
Le checker de module récupère l’état du module en se connectant au service web de SafeKit qui s’exécute sur le serveur sur lequel le module est activé (voir 10.6 page 170).
Exemple utilisant la configuration par défaut du service web de SafeKit (protocole : HTTP, port : 9010) :
<check>
<module name="mirror">
<to addr="M1host" />
</module>
</check>
Exemple utilisant la configuration sécurisée du service web de SafeKit (protocole : HTTPS, port : 9453) :
<check>
<module name="mirror">
<to addr="M1host" port="9453" secure="on"/>
</module>
</check>
|
|
Insérer le tag <module> dans la section <check> si celle-ci est déjà définie. |
Pour d’autres exemples, voir les sections 15.3 page 305 et 15.13 page 317.
<module
[ident="module_checker_name"]
name="external_module_name">
[<to
addr=" IP_@ or name the Safekit server running the external module"
[port=port of the SafeKit web server"]
[interval="10"]
[timeout="5"]
/>]
</module>
|
<module |
Positionner autant de sections <module> qu'il y a de checkers de module. |
|
name="external_module_name"] |
Nom du checker de module. |
|
[ident="module_checker_name"] |
Nom du module externe à checker. Par défaut external_module_name_<IP_@ or name of the server >. |
|
[<to |
Définition du/des serveurs exécutant le module externe. Par défaut, le serveur local. |
|
addr="IP_@ or name of the server" |
Adresse IP ou nom du module externe. Adresse IPv4 ou IPv6. |
|
[port=port du service web de SafeKit"] |
Port du service web SafeKit pour le checking. Par défaut, 9010. |
|
[interval="10"] |
Intervalle de temps, en secondes, entre 2 pollings. Valeur par défaut : 10 secondes |
|
[timeout="5"] |
Délai en secondes pour la réception d’une réponse à la requête check. Valeur par défaut : 5 secondes |
|
[secure="on"|"off"] |
Utilisation du protocole HTTP (secure="off") ou HTTPS (secure="on") Par défaut : off |
|
/>] |
|
|
</module> |
|
SafeKit offre un checker de splitbrain à utiliser pour des architectures miroir. Le splitbrain est une situation où, à la suite d’une panne matérielle ou logicielle, les deux nœuds SafeKit deviennent primaires, chaque nœud croyant que l'autre ne fonctionne plus. Ceci implique que l’application tourne sur les deux nœuds et, lorsque la réplication est active, les données peuvent se trouver dans un état incohérent.
Pour prévenir ce phénomène, le checker de splitbrain, sur détection d’isolation réseau entre les serveurs, sélectionne un unique nœud pour devenir primaire. L’autre nœud devient non à jour et se bloque dans l’état WAIT :
Jusqu’à ce qu’il reçoive à nouveau les heartbeats de l’autre
serveur
Ou
Si l’administrateur le juge opportun et s’assure que l’autre
serveur n’est plus dans l’état primaire, il peut forcer son démarrage en
primaire (par l’exécution des commandes safekit
stop –m AM puis safekit prim –m
AM).
L’élection du serveur primaire repose sur le ping d’un composant externe, appelé witness. Le réseau doit être configuré de telle manière qu’en cas d’isolation réseau, un seul des deux serveurs a accès au witness (c’est celui-ci qui sera élu primaire). Dans le cas contraire, les deux nœuds deviendront primaires.
|
|
Le ping entre les 2 nœuds et avec le witness doit être ouvert. |
<check>
<splitbrain ident="SBtest" exec="ping" arg="192.168.1.100" />
</check>
|
|
Insérer le tag <splitbrain> dans la section <check> si celle-ci est déjà définie. |
<splitbrain
ident="witness"
exec="ping"
arg="witness IP address "
/>
|
<splitbrain |
Une seule section <splitbrain>. |
|
ident="witness" |
Nom de la ressource affichée par la commande safekit state -v –m AM. splitbrain.witness représente l’état du witness. |
|
[when="pre"] |
Valeur fixe. Le checker est démarré/arrêté après/avant les scripts prestart/poststop. Sur détection de splitbrain, le serveur pour lequel splitbrain.witness=”up” devient primaire. Sur l’autre, pour lequel splitbrain.witness=”down”, il y a affectation de la ressource splitbrain.uptodate à “down”. La règle de failover par défaut réalise un stopwait qui met le module dans l'état WAIT (pour plus d'information, voir 13.18 page 289). Chaque stopwait incrémente le compteur maxloop (voir 13.2.3 page 239). |
|
exec="ping" |
Valeur fixe. Utilise ping pour tester l’accessibilité au witness et affecte la ressource splitbrain.witness. |
|
arg="IP_@ or name" |
Adresse IP ou nom du witness Adresse IPv4 ou IPv6. |
|
</splitbrain> |
|
SafeKit apporte des checkers (interface réseau, ping, tcp, custom, module). Un checker vérifie l'état d'une ressource (par défaut toutes les 10 secondes) et positionne son état à up ou down (voir section 13.10 page 279). La machine de failover évalue régulièrement (par défaut toutes les 5 secondes) l'état global de toutes les ressources et applique une action en fonction des règles de failover écrites dans un langage simple.
Dans un module ferme, la machine de failover ne fonctionne que sur les états locaux des ressources alors que dans un module miroir, elle peut fonctionner sur les états locaux et les états distants des ressources. Comme les états des ressources transitent par les voies de heartbeats, il est conseillé d'avoir plusieurs voies de heartbeats (voir section 13.3 page 241).
<failover>
<![CDATA[
ping_failure: if (ping.testR2 == down) then stopstart();
]]>
</failover>
Voir aussi les règles de failover par défaut décrites en 13.18.5 page 291.
<failover [extends="yes"] [period="5000"] [handle_time="15000"]>
<![CDATA[
label: if (expression) then action;
…
]]>
</failover>
|
|
Le tag <failover> et son sous-arbre ne peuvent pas être modifiés dynamiquement. |
|
<failover |
|
|
[extends="yes"|"no"] |
Avec extends="yes", les nouvelles règles de failover étendent les règles par défaut (voir 13.18.5 page 291). Avec extends="no", les règles par défaut sont écrasées (à éviter). Valeur par défaut : yes |
|
[period="5000"] |
Période entre 2 évaluations. Valeur par défaut : 5000 millisecondes (5 secondes) |
|
[handle_time="15000"] |
Une action (stop() | stopstart() | wait() | restart() | swap()) doit être stable pendant handle_time (en millisecondes) avant d'être appliquée. Valeur par défaut : 15000 millisecondes (15 secondes). handle_time doit être un multiple de period. |
|
safekit set [–m AM] -r resource_class.resource_id -v resource_state
[-n] [-l] |
L'état d'une ressource est positionné par un checker avec cette commande Exemples : safekit set -r custom.myresource -v up safekit set -r custom.myresource -v down Depuis SafeKit 7.5, chaque affectation des principales ressources est mémorisée dans un journal afin de conserver l'historique leur état. Utiliser -n pour désactiver la journalisation de l’affectation en cours ou -l pour la forcer |
|
safekit stopwait -i "identity" |
Equivalent à la commande wait() de la failover machine (voir 13.18 page 289). Avec stopwait, (1) poststop et prestart scripts ne sont pas appelés et (2) les checkers de type when="pre" ne sont pas stoppés. |
Les autres commandes restart(), stopstart(), stop(), swap() sont équivalentes aux commandes de contrôle (avec le paramètre -i identity en plus) décrites en 9.4 page 150.
|
|
maxloop / loop_interval / automatic_reboot s'appliquent si le paramètre -i identity est passé aux commandes (voir 13.2 page 238). Ce qui est le cas lorsque les commandes sont appelées à partir de la failover machine. |
Les règles de failover par défaut pour les checkers sont :
<failover>
<![CDATA[
/* rule for module checkers */
module_failure: if (module.? == down) then wait();
/* rule for interface checkers */
interface_failure: if (intf.? == down) then wait();
/* rule for ping checkers */
ping_failure: if (ping.? == down) then wait();
/* rule for tcp checkers */
tcp_failure: if (tcp.? == down) then restart();
/* rule for ip checkers */
ip_failure: if (ip.? == down) then stopstart();
/* rules for splitbrain */
splitbrain_failure: if (splitbrain.uptodate == down) then wait();
]]>
</failover>
Elles sont définies dans le fichier SAFE/private/conf/include/failover.xml. Il existe en plus des règles de failover dédiées à la gestion de la réplication.
La commande WAKEUP est automatiquement générée lorsqu'aucune action wait() n'est applicable.
|
|
Depuis SafeKit 7.5, les règles de failover utilisent une nouvelle syntaxe et les règles pour la réplication sont définies dans un autre fichier SAFE/private/conf/include/rfs.xml. |
En complément des règles par défaut, l’utilisateur peut définir ses propres règles de (pour un custom checker par exemple) en respectant la syntaxe suivante :
label: if ( expression ) then action;
with:
label ::= string
action ::= stop() |
stopstart() | wait() | restart() | swap()
expression ::= (
expression )
| ! expression
| expression && expression
| expression || expression
| expression == expression
| expression != expression
| resource ::= [local. | remote.] 0/1resource_class.resource_id
| resource_state
La syntaxe pour désigner les ressources est la suivante :
resource ::= [local. | remote.] 0/1resource_class.resource_id (default: local)
resource_class ::= ping | intf | tcp | ip | custom | module | heartbeat | rfs
resource_id ::= * | ? | name
resource_state ::= init | down | up | unknown
|
init |
Etat spécial d'initialisation tant que le checker n'a pas démarré. Si une ressource dans l'état init est testé dans une règle de failover, cette règle n'est pas évaluée tant que la ressource est dans l'état init. |
|
up |
Etat OK |
|
down |
Etat KO |
|
unknown |
Etat inconnu pour une ressource distante (module arrêté sur l’autre nœud) |
14.1 « Liste des scripts » page
293
14.2 « Automate d’exécution des scripts » page 295
14.3 « Variables d’environnement et arguments passés aux
scripts » page 296
14.4 « Commandes spéciales SafeKit pour les scripts » page 296
Pour activer l’appel des scripts utilisateurs, le tag <user> doit être présent dans userconfig.xml (voir 13.7 page 270).
Les scripts doivent être des exécutables :
ü en Windows, un exécutable avec l'extension et le type : .cmd, .vbs, .ps1,.bat ou .exe
ü en Linux, tout type d'exécutable
Chaque fois que vous modifiez les scripts, vous devez réappliquer la configuration sur les serveurs (avec la console ou la commande SafeKit).
Des exemples de scripts sont donnés en 15.1 page 302 pour un module miroir, et en 15.2 page 303 pour un module ferme.
|
|
Au moment de la configuration, les scripts sont copiés de SAFE/modules/AM/bin dans le répertoire d'exécution SAFE/private/modules/AM/bin (=SAFEUSERBIN, ne pas modifier les scripts à cet endroit). |
Ci-dessous la liste des scripts pouvant être définis par l'utilisateur. Les scripts essentiels sont les scripts start/stop qui démarrent et arrêtent l'application au sein du module.
|
start_prim |
Scripts pour un module miroir. Démarre l'application sur le serveur ALONE ou PRIM |
||
|
start_both |
Scripts pour un module ferme. Démarre l'application sur tous les serveurs UP de la ferme. Dans le cas spécial où ils existent dans un module miroir, ils sont exécutés dans les états PRIM, SECOND ou ALONE |
||
|
start_second |
Scripts spéciaux pour un module miroir. Exécutés sur le serveur SECOND
|
||
|
start_sec |
Scripts spéciaux pour un module miroir. Voir l’automate d’exécution des scripts décrit en 14.2 page 295 |
||
|
stop_[both, |
Scripts pour tous les modules. Ces scripts sont appelés 2 fois : une fois pour un arrêt propre (sans le paramètre force en premier argument) et une fois pour un arrêt forcé (avec le paramètre force en premier argument) |
||
|
prestart |
Scripts pour tous les modules. Exécutés au tout début du démarrage du module et à la fin. Par défaut, prestart contient stop_sec, stop_second, stop_prim, stop_both pour arrêter l'application avant de démarrer le module sous contrôle SafeKit |
||
|
transition |
Scripts pour tous les modules. Ce script est appelé sur changement d'état décrit en 14.2 page 295 |
|
config |
config est appelé lors de l’exécution de la commande safekit config –m AM. Vous pouvez exécuter dans ce script des commandes de configuration applicative. |
|
deconfig |
deconfig est appelé lors de l’exécution de la commande safekit deconfig –m AM, celle-ci étant automatiquement effectuée lors de la désinstallation du module Dans ce script, vous devez « défaire » les actions effectuées dans le script config. |
|
confcheck |
confcheck est appelé lors de l’exécution de la commande safekit confcheck –m AM. Vous pouvez exécuter dans ce script des opérations de contrôle de changement de configuration de l’application. |
|
state |
state est appelé lors de l’exécution de la commande safekit state –v –m AM. |
|
level |
level est appelé lors de l’exécution de la commande safekit level –m AM command. |
|
|
Exemple : au démarrage, la première transition de STOP vers WAIT appelle le script transition STOP WAIT. La plupart du temps les scripts stop sont appelés 2 fois (sans l'option force puis avec l'option force). Dans ce cas, le nom du script est en italique. |

Tous les scripts sont appelés avec 3 paramètres :
ü l'état courant (STOP, WAIT, ALONE, PRIM, SECOND, UP)
ü le prochain état (STOP, WAIT, ALONE, PRIM, SECOND, UP)
ü l'action (start, stop, stopstart ou stopwait)
Les scripts de type stop sont appelés 2 fois :
ü une première fois pour un arrêt propre de l'application
ü une deuxième fois avec l’argument force pour un arrêt forcé (avec force comme premier argument)
Les variables d'environnement utilisables à l'intérieur des scripts sont :
ü SAFE, SAFEBIN, SAFEUSERBIN, SAFEUSERVAR (voir 10.1 page 157)
ü toutes les variables définies dans le tag <user> de userconfig.xml (voir 13.7 page 270).
Les commandes spéciales sont sous SAFE/private/bin. Les commandes peuvent être appelées directement dans les scripts utilisateurs avec :
%SAFEBIN%\specialcommand
en Windows
$SAFEBIN/specialcommand
en Linux
En dehors des scripts, il faut utiliser la commande safekit -r.
|
safekit -r |
<special command> <args> exécuté dans l'environnement SafeKit. Lorsque le path absolu n'est pas spécifié, la commande est recherchée dans SAFEBIN=SAFE/private/bin.
|
%SAFEBIN%\sleep.exe <timeout value in seconds>
A utiliser dans les scripts stop car net stop service n'est pas synchrone.
%SAFEBIN%\exitcode.exe <exit value>
Pour sortir d'un script avec une valeur d'erreur
%SAFEBIN%\sync.exe \\.\<drive letter:>
Pour synchroniser les caches file system
%SAFEBIN%/namealias [-n | -s ] <alias name>
–n pour ajouter un nouveau nom NetBIOS en alias (start_prim) ou -s pour supprimer un alias NetBIOS (stop_prim)
Vous pouvez utiliser la commande SafeKit netnames (ou la commande Windows nbtstat) pour lister les informations NetBIOS.
|
$SAFEBIN/gencron |
|
|
[del | add] |
del pour désactiver des entrées dans stop_prim (en insérant des commentaires) ou add pour activer des entrées dans start_prim (en retirant les commentaires). |
|
<user name> |
Nom de l'utilisateur dans la crontab. |
|
[all |<command name>] |
S'applique à toutes les entrées ou au nom de la commande |
|
-c "<comment>" |
Entête du commentaire qui sera insérée. |
Par exemple, pour désactiver/activer l'entrée de la crontab :
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
Insérer dans stop_prim :
$SAFEBIN/gencron del admin daily.job -c "SafeKit configuration for $SAFEMODULE"
Et insérer dans start_prim :
$SAFEBIN/gencron add admin daily.job -c "SafeKit configuration for $SAFEMODULE"
$SAFEBIN/boundcmd <timeout value> <command path> [<args>]
Limite le temps d'exécution d'une commande
boundcmd retourne l'exit code de la commande si la commande se termine et 2 sinon.
Par exemple, pour flusher des données sur disque avec un timeout de 30 secondes :
$SAFEBIN/boundcmd 30 /bin/sync 1>/dev/null 2>&1
|
safekit –r processtree list | kill … |
Liste les processus en cours d’exécution sous forme d’arbre d’appel (excepté pour l’option all) et arrête les processus (option kill)
Liste tous les processus en cours d’exécution.
Liste les processus dont le nom de commande est celui spécifié.
Liste et arrête les processus en cours d’exécution dont le nom de commande est celui spécifié.
Liste (et arrête) les processus dont le nom de commande est celui spécifié et dont les arguments correspondent à l’expression régulière. Exemples en Windows ("class CatlRegExp" pour plus d’informations) safekit –r processtree kill notepad.exe ".*myfile.*" safekit –r processtree list all “mirror”
Exemples en Linux ("man regex" pour plus d’informations) : safekit –r processtree kill vi ".*myfile.*" safekit –r processtree list all “mirror” |
|
safekit incloop -m AM –i <handler name> |
SafeKit fournit un compteur maxloop, du nombre de restart et stopstart du module sur détection d'erreur. Le module est arrêté lorsque ce compteur atteint la valeur maxloop sur la période loop_interval. Lors de l'exécution d’un handler spécial, le compteur maxloop n'est pas incrémenté. Pour l'incrémenter, utilisez la commande : safekit incloop -m AM -i <handler name> La commande augmente le compteur maxloop pour le module AM et retourne 1 lorsque la limite est atteinte. |
|
safekit resetloop -m AM [–i <handler name>] |
Réinitialise le compteur maxloop pour le module AM (affectation de la valeur à 0) |
|
safekit checkloop -m AM |
Pour tester le compteur maxloop pour le module AM, utilisez la commande safekit checkloop –m AM
|
15.1 « Exemple du module générique miroir avec mirror.safe » page 302
15.2 « Exemple du module générique ferme avec farm.safe » page 303
15.3 « Un module ferme dépendant d'un module miroir » page 305
15.4 « Exemple d'un flux de réplication dédié » page 306
15.5 « Exemples de partage de charge dans un module ferme »
page 306
15.6 « Exemple d'un hostname virtuel avec vhost.safe » page 309
15.7 « Détection de la mort de processus avec softerrd.safe » page 311
15.8 « Exemple d’un checker TCP » page 313
15.9 « Exemple d'un checker ping » page 313
15.10 « Exemple d'un checker d'interface réseau » page 313
15.11 « Exemple d’IP checker » page 314
15.12 « Exemple d'un checker customisé avec customchecker.safe » page 315
15.13 « Exemple d'un checker de module avec leader.safe et follower.safe » page
317
Certains exemples décrits sont tirés des modules livrés avec le package SafeKit, sous SAFE/Application_Modules. Vous pouvez les installer avec la console web (voir 3.7.4 page 64) pour examiner en détail leur contenu.
D’autres exemples d’intégration sont décrits sous https://www.evidian.com/fr/produits/haute-disponibilite-logiciel-clustering-application/configuration-cluster-basculement/.
|
Les .safe sont plate-forme dépendants et, par conséquent, différents en Windows et Linux. |
Tous les exemples utilisent la configuration du cluster SafeKit suivante (voir 12 page 231) :
<cluster>
<lans name="net3">
<node name="node1" addr="10.1.0.2"/>
<node name="node2" addr="10.1.0.3"/>
<node name="node3" addr="10.1.0.3"/>
</lan>
<lan name="default" console="off">
<node name="node1" addr="192.168.1.1"/>
<node name="node2" addr="192.168.1.2"/>
</lan>
<lan name="repli" console="off">
<node name="node1" addr="10.0.0.2"/>
<node name="node2" addr="10.0.0.3"/>
</lan>
</lans>
</cluster>
Ci-dessous le fichier de configuration et les scripts utilisateurs du module miroir générique, mirror.safe, pour Windows. Pour Linux, se référer au module mirror.safe livré avec le package Linux.
conf/userconfig.xml – voir 13 page 237
<!-- Mirror Architecture with Real Time File Replication and Failover -->
<!DOCTYPE safe>
<safe>
<service mode="mirror" defaultprim="alone" maxloop="3" loop_interval="24" failover="on">
<heart pulse="700" timeout="30000">
<heartbeat name=”default” ident=”flow”/>
</heart>
<rfs async="second" acl="off" locktimeout="200" nbrei="3" iotimeout="300">
<replicated dir="c:\test1replicated" mode="read_only"/>
<replicated dir="c:\test2replicated" mode="read_only"/>
</rfs>
<vip>
<interface_list>
<interface check="on" arpreroute="on">
<real_interface>
<virtual_addr addr="192.168.4.10" where="one_side_alias"/>
</real_interface>
</interface>
</interface_list>
</vip>
<user nicestoptimeout="300" forcestoptimeout="300" logging="userlog"/>
</service>
</safe>
bin/start_prim.cmd - voir 14 page 293
@echo off
rem Script called on the primary server for starting application services
rem For logging into SafeKit log use:
rem "%SAFE%\safekit" printi | printe "message"
rem stdout goes into Application log
echo "Running start_prim %*"
set res=0
rem Fill with your services start call
rem net start "myservice" /Y
set res=%errorlevel%
if %res% == 0 goto end
:stop
"%SAFE%\safekit" printe "start_prim failed"
rem uncomment to stop SafeKit when critical
rem "%SAFE%\safekit" stop -i "start_prim"
:end
bin/stop_prim.cmd - voir 14 page 293
@echo off
rem Script called on the primary server for stopping application services
rem For logging into SafeKit log use:
rem "%SAFE%\safekit" printi | printe "message"
rem ----------------------------------------------------------
rem
rem 2 stop modes:
rem
rem - graceful stop
rem call standard application stop with net stop
rem
rem - force stop (%1=force)
rem kill application's processes
rem
rem ----------------------------------------------------------
rem stdout goes into Application log
echo "Running stop_prim %*"
set res=0
rem default: no action on forcestop
if "%1" == "force" goto end
rem Fill with your service(s) stop call
rem net stop "myservice" /Y
rem If necessary, uncomment to wait for the stop of the services
rem "%SAFEBIN%\sleep" 10
if %res% == 0 goto end
"%SAFE%\safekit" printe "stop_prim failed"
:end
Ci-dessous le fichier de configuration et les scripts utilisateurs pour le module ferme générique, farm.safe, pour Windows. Pour Linux, se référer au module farm.safe livré avec le package Linux.
conf/userconfig.xml - voir 13 page 237
<!-- Farm Architecture with Load-Balancing and Failover -->
<!DOCTYPE safe>
<safe>
<service mode="farm" maxloop="3" loop_interval="24">
<farm>
<lan name=”default” />
</farm>
<vip>
<interface_list>
<interface check="on" arpreroute="on">
<virtual_interface type="vmac_directed">
<virtual_addr addr="192.168.4.20" where="alias"/>
</virtual_interface>
</interface>
</interface_list>
<loadbalancing_list>
<group name="FarmProto">
<rule port="9010" proto="tcp" filter="on_port"/>
</group>
</loadbalancing_list>
</vip>
<user nicestoptimeout="300" forcestoptimeout="300" logging="userlog"/>
</service>
</safe>
bin/start_both.cmd - voir 14 page 293
@echo off
rem Script called on all servers for starting applications
rem For logging into SafeKit log use:
rem "%SAFE%\safekit" printi | printe "message"
rem stdout goes into Application log
echo "Running start_both %*"
set res=0
rem Fill with your services start call
rem net start "myservice" /Y
set res=%errorlevel%
if %res% == 0 goto end
:stop
set res=%errorlevel%
"%SAFE%\safekit" printe "start_both failed"
rem uncomment to stop SafeKit when critical
rem "%SAFE%\safekit" stop -i "start_both"
:end
bin/stop_both.cmd - voir 14 page 293
@echo off
rem Script called on all servers for stopping application
rem For logging into SafeKit log use:
rem "%SAFE%\safekit" printi | printe "message"
rem ----------------------------------------------------------
rem
rem 2 stop modes:
rem
rem - graceful stop
rem call standard application stop with net stop
rem
rem - force stop (%1=force)
rem kill application's processes
rem
rem ----------------------------------------------------------
rem stdout goes into Application log
echo "Running stop_both %*"
set res=0
rem default: no action on forcestop
if "%1" == "force" goto end
rem Fill with your services stop call
rem net stop "myservice" /Y
rem If necessary, uncomment to wait for the stop of the services
rem "%SAFEBIN%\sleep" 10
if %res% == 0 goto end
"%SAFE%\safekit" printe "stop_both failed"
:end
Dans l'exemple ci-dessous, le module ferme ne peut démarrer qu'à condition que le module miroir soit opérationnel. Cette architecture peut être utilisée pour lier un module ferme IIS à un module miroir Microsoft SQL server. Elle est basée sur la configuration d’un module checker dans le module ferme. Pour plus détails, voir 13.16 page 286.
farm/conf/userconfig.xml - voir 13 page 237
…
<!-- Checker Configuration: module dependency to mirror + local TCP checker -->
<check>
<module name="mirror">
<to addr="192.168.1.31"/>
</module>
</check>
…
|
|
La dépendance des modules peut être utilisée lorsque vous déployez des modules ferme et miroir sur le même cluster SafeKit ou lorsque vous déployez des modules ferme et miroir sur deux clusters différents. |
L’attribut ident="flow" sur le heartbeat, permet d’identifier le flux de réplication. Pour plus d'information, voir 13.6 page 252.
conf/userconfig.xml – voir 13 page 237
…
<heart>
<heartbeat name=”default” />
<!— 2nd heartbeat special for dedicated replicated network -->
<heartbeat name=”repli” ident="flow" />
</heart>
…
Avec le fichier de configuration userconfig.xml suivant, vous définissez une ferme de 3 serveurs avec partage de charge et reprise sur les ports TCP 9010 (service web SafeKit), 23 (Telnet), 80 (HTTP), 443 (HTTPS), 8080 (HTTP proxy) and 389 (LDAP).
|
|
Avec HTTP et HTTPS, le partage de charge est défini sur l'adresse IP client ("on_addr") et non sur le port TCP client ("on_port"), pour assurer que le même client est toujours connecté sur le même serveur sur plusieurs connexions TCP (service à état versus service sans état ; voir la description en 1.4 page 19) |
conf/userconfig.xml - voir 13 page 237
<!DOCTYPE safe>
<safe>
<service mode="farm">
<farm>
<lan name=”net3” />
</farm>
<vip>
<interface_list>
<interface check="on" arpreroute=”on”>
<virtual_interface type="vmac_directed">
<virtual_addr addr="192.168.1.50" where="alias" />
</virtual_interface>
</interface>
</interface_list>
<loadbalancing_list>
<group name="tcpservices" >
<cluster>
<host name="node1" power="1" />
<host name="node2" power="1" />
<host name="node3" power="1" />
</cluster>
<rule port="9010" proto="tcp" filter="on_port" />
<rule port="23" proto="tcp" filter="on_port" />
<rule port="80" proto="tcp" filter="on_addr" />
<rule port="443" proto="tcp" filter="on_addr" />
<rule port="8080" proto="tcp" filter="on_addr" />
<rule port="389" proto="tcp" filter="on_port" />
</group>
</loadbalancing_list>
</vip>
</service>
</safe>
Avec le fichier userconfig.xml suivant, vous définissez une ferme de 3 serveurs avec partage de charge et reprise sur les services UDP 53 (DNS) et 1645 (RADIUS).
conf/userconfig.xml - voir 13 page 237
<!DOCTYPE safe>
<safe>
<service mode="farm">
<farm>
<lan name=”net3” />
</farm>
<vip>
<interface_list>
<interface check="on">
<virtual_interface type="vmac_invisible">
<virtual_addr addr="192.168.1.50" where="alias" />
</virtual_interface>
</interface>
</interface_list>
<loadbalancing_list>
<group name="udpservices" >
<cluster>
<host name="node1" power="1" />
<host name="node2" power="1" />
<host name="node3" power="1" />
</cluster>
<rule port="53" proto="udp" filter="on_ipid" />
<rule port="1645" proto="udp" filter="on_ipid" />
</group>
</loadbalancing_list>
</vip>
</service>
</safe>
|
|
Avec on_ipid, le load balacing est réalisé sur le champ "IP identifier" dans l'entête IP du paquet. Le load balancing fonctionne même si le client présente la même adresse IP client et le même port en entrée. |
Avec le fichier userconfig.xml suivant, vous définissez une ferme de 3 serveurs avec une priorité pour le trafic HTTP pour le serveur 1, HTTPS pour le serveur 2 et proxy HTTP pour le serveur 3.
conf/userconfig.xml - voir 13 page 237
<!DOCTYPE safe>
<safe>
<service mode="farm">
<farm>
<lan name=”net3” />
</farm>
<vip>
<interface_list>
<interface check="on">
<virtual_interface type="vmac_invisible">
<virtual_addr addr="192.168.1.50" where="alias" />
</virtual_interface>
</interface>
</interface_list>
<loadbalancing_list>
<group name="http_service" >
<cluster>
<host name="node1" power="3" />
<host name="node2" power="1" />
<host name="node3" power="1" />
</cluster>
<rule port="80" proto="tcp" filter="on_addr" />
</group>
<group name="https_service" >
<cluster>
<host name="node1" power="1" />
<host name="node2" power="3" />
<host name="node3" power="1" />
</cluster>
<rule port="443" proto="tcp" filter="on_addr" />
</group>
<group name="httpproxy_service" >
<cluster>
<host name="node1" power="1" />
<host name="node2" power="1" />
<host name="node3" power="3" />
</cluster>
<rule port="8080" proto="tcp" filter="on_addr" />
</group>
</loadbalancing_list>
</vip>
</service>
</safe>
Le module de démonstration vhost.safe montre comment positionner un hostname virtuel (voir 13.8 page 271).
conf/userconfig.xml – voir 13 page 237
…
<vhost>
<virtualhostname name="virtualname" envfile="vhostenv.cmd" />
</vhost>
…
En plus de cette configuration, il faut exécuter des commandes spéciales dans les scripts utilisateur. Ci-dessous l’exemple des scripts Windows. Pour Linux, se référer au vhost.safe livré avec la package Linux.
bin/start_prim.cmd - voir 14 page 293
@echo off
rem Script called on the primary server for starting application services
rem For logging into SafeKit log use:
rem "%SAFE%\safekit" printi | printe "message"
rem stdout goes into Application log
echo "Running start_prim %*"
rem Set virtual hostname
CALL "%SAFEUSERBIN%\vhostenv.cmd"
rem Next commands use the virtual hostname
FOR /F %%x IN ('hostname') DO SET servername=%%x
echo "hostname is "%servername%
rem WARNING: previous virtual hostname setting is insufficient to change the hostname for services
rem If one service needs the virtual hostname, you need also to uncomment the rem following
rem "%SAFE%\private\bin\vhostservice" SERVICE_TO_BE_DEFINED
set res=0
rem Fill with your services start call
set res=%errorlevel%
if %res% == 0 goto end
:stop
"%SAFE%\safekit" printe "start_prim failed"
rem uncomment to stop SafeKit when critical
rem "%SAFE%\safekit" stop -i "start_prim"
:end
bin/stop_prim.cmd - voir 14 page 293
@echo off
rem Script called on the primary server for stopping application services
rem For logging into SafeKit log use:
rem "%SAFE%\safekit" printi | printe "message"
rem ----------------------------------------------------------
rem
rem 2 stop modes:
rem
rem - graceful stop
rem call standard application stop with net stop
rem
rem - force stop (%1=force)
rem kill application's processes
rem
rem ----------------------------------------------------------
rem stdout goes into Application log
echo "Running stop_prim %*"
set res=0
rem Reset virtual hostname
CALL "%SAFEUSERBIN%\vhostenv.cmd"
rem Next commands use the real hostname
FOR /F %%x IN ('hostname') DO SET servername=%%x
echo "hostname is "%servername%
rem default: no action on forcestop
if "%1" == "force" goto end
rem Fill with your services stop call
rem If necessary, uncomment to wait for the stop of the services
rem "%SAFEBIN%\sleep" 10
if %res% == 0 goto end
"%SAFE%\safekit" printi "stop_prim failed"
:end
rem WARNING: if the virtual hostname was set for services in start_prim.cmd,
rem uncomment the following to restore the real hostname in last stop phase :
rem "%SAFE%\private\bin\vhostservice" SERVICE_TO_BE_DEFINED
Le module softerrd.safe est un module de démonstration de la surveillance de la mort de processus (pour plus d'information, voir 13.9 page 273).
Le module surveille la présence des processus :
mybin et myappli démarrés/arrêtés sur le nœud
primaire avec start_prim/stop_prim
myotherbin démarré/arrêté
sur le nœud secondaire avec start_second/stop_second
La détection de l’arrêt de :
mybin provoque un restart du module
myappli provoque
l’exécution d’un handler spécial restart_myappli.cmd. Ce script incrémente le compteur maxloop et redémarre le processus myappli
myotherbin provoque
un stop du module
Les tests consistent à tuer les processus mybin, myotherbin ou myappli avec la commande safekit kill.
Ci-dessous un extrait de softerrd.safe pour Windows. Pour Linux, regardez celui livré avec le package Linux.
conf/userconfig.xml - voir 13 page 237
…
<errd>
<proc name="mybin.exe" atleast="1" action="restart" class="prim"/>
<proc name="myotherbin.exe" atleast="1" action="stop" class="second"/>
<proc name="myappli.exe" atleast="1" action="restart_myappli" class="myappli"/>
</errd>
…
bin/start_prim.cmd - voir 14 page 293
Noter l’appel à %SAFE%\safekit errd enable myappli pour commencer la surveillance des processus avec class="myappli"
@echo off
%SAFE%\safekit printi "start mybin"
start %SAFEUSERBIN%\mybin.exe 10000000
%SAFE%\safekit printi "start myappli"
start %SAFEUSERBIN%\myappli.exe 10000000
%SAFE%\safekit errd enable myappli
:end
bin/stop_prim.cmd - voir 14 page 293
Noter l’appel à %SAFE%\safekit errd disable myappli pour arrêter la surveillance des processus avec class="myappli"
@echo off
rem default: no action on forcestop
if "%1" == "force" goto end
%SAFE%\safekit printi "stop mybin"
%SAFE%\safekit kill -level="terminate" -name="mybin.exe"
%SAFE%\safekit printi "stop myappli"
%SAFE%\safekit errd disable myappli
%SAFE%\safekit kill -level="terminate" -name="restart_myappli.cmd"
%SAFE%\safekit kill -level="terminate" -name="myappli.exe"
:end
bin/restart_myappli.cmd
Noter l'incrémentation du compteur de rebouclage et l'arrêt du module quand maxloop est atteint
@echo off
rem Template for script called by errd on error detection instead of standard restart
%SAFE%\safekit printi "restart_myappli"
rem first disable monitoring of the application
%SAFE%\safekit errd disable myappli
rem increment loop counter
%SAFE%\safekit incloop -i "restart_myappli"
if %errorlevel% == 0 goto next
rem max loop reached
%SAFE%\safekit stop -i "restart_myappli"
%SAFEBIN%\exitcode 0
:next
rem max loop not reached : go on restarting the application
%SAFE%\safekit printi "Restart myappli"
%SAFE%\safekit kill -level="terminate" -name="myappli.exe"
start %SAFEUSERBIN%\myappli.exe 10000000
rem finally, enable monitoring of the application
%SAFE%\safekit errd enable myappli
Le checker tcp teste le service web Apache (pour plus d'information, voir 13.11 page 280). L'action par défaut quand le service TCP est down est de redémarrer le module (voir 13.18.5 page 291).
conf/userconfig.xml - voir 13 page 237
<check>
<tcp
ident="Apache_80"
when="both"
>
<to
addr="172.21.10.5"
port="80"
interval="120"
timeout="5"
/>
</tcp>
</check>
…
Le checker ping suivant teste un routeur d'adresse IP 192.168.1.1 (pour plus d'information, voir 13.12 page 281). L'action par défaut lorsque le routeur est down et de stopper localement le module et d'attendre que le ping redevienne up (voir 13.18.5 page 291).
conf/userconfig.xml - voir 13 page 237
…
<check >
<ping ident="router">
<to addr="192.168.1.1"/>
</ping>
</check>
…
Ci-dessous, l’exemple d’une configuration d’interface checker générée automatiquement lorsque l’option <interface check="on"> est définie (voir 13.5 page 245). Dans le fichier de configuration, l’adresse virtuelle est définie comme suit :
conf/userconfig.xml - voir 13 page 237
…
<vip>
<interface_list>
<interface check="on">
<real_interface>
<virtual_addr addr="192.168.1.32" where="one_side_alias"/>
</real_interface>
</interface>
</interface_list>
</vip>
…
L'action par défaut lorsque l'interface est down et de stopper localement le module et d'attendre que l'interface redevienne up (voir 13.18.5 page 291).
Configuration générée en Windows
<check>
<intf when="pre" ident="192.168.1.0"
intf="{8358A0EE-2F3F-4FEE-A33B-EDC406C0C858}">
<to local_addr="192.168.1.228"/>
</intf>
</check>
Où {8358A0EE-2F3F-4FEE-A33B-EDC406C0C858} est l'identité de l'interface réseau avec le réseau 192.168.1.0 et avec 192.168.228 comme première adresse IP (safekit –r vip_if_ctrl –L).
Configuration générée en Linux
<check>
<intf when="pre" ident="192.168.1.0" intf="eth2">
<to local_addr="192.168.1.20"/>
</intf>
</check>
Où eth2 est l'identité de l'interface réseau avec le réseau 192.168.1.0 et avec 192.168.228 comme première adresse IP (ifconfig –a ou ip addr show).
Pour plus de détails, voir 13.13 page 282.
Ci-dessous, l’exemple d’une configuration d’IP checker générée automatiquement lorsque l’option <virtual_addr check="on" …> est positionnée (voir 13.5 page 245). Dans le fichier userconfig.xml, l’adresse virtuelle est définie comme suit :
conf/userconfig.xml - voir 13 page 237
…
<vip>
<interface_list>
<interface check="on" arpreroute="on">
<real_interface>
<virtual_addr addr="192.168.1.99" where="one_side_alias" check="on"/>
</real_interface>
</interface>
</interface_list>
</vip>
…
L’action par défaut lorsque le checker détecte que l’adresse n’est plus configurée est d’exécuter un stopstart du module (voir 13.18.5 page 291).
Configuration générée
<check>
<ip ident="192.168.1.99" when="prim">
<to addr="192.168.1.99"/>
</ip>
</check>
Pour plus de détails, voir 13.14 page 283.
Le module customchecker.safe est un module de démonstration d’un checker customisé (pour plus d'information, voir section 13.15 page 285).
Le checker teste la présence d’un fichier sur le serveur primaire (when="prim").
La ressource associée s’appelle custom.checkfile
(ident="checkfile").
Elle est affectée à up quand le
fichier est présent à down sinon.
La règle de failover associée (configuré dans
<failover>), nommée custom_failure, provoque le restart du module si le fichier est
absent (voir 13.18.5 page 291).
Cet exemple peut servir de base pour l’écriture de votre propre checker.
conf/userconfig.xml - voir 13 page 237
…
<check>
<custom ident="checkfile" exec="checker.ps1" arg="c:\safekit\checkfile" when="prim"/>
</check>
<user>
</user>
<failover>
<![CDATA[
custom_failure:
if( custom.checkfile == down ) then restart();
]]>
</failover>
…
bin/checker.ps1
Noter l’appel à safekit set -r custom.checkfile -m AM pour affecter l’état de la ressource (up or down)
param([Parameter(Mandatory = $true, ValueFromPipeLine = $true, position=1)][String]$ModName,
[Parameter(Mandatory = $true, ValueFromPipeLine = $true, position=2)][String]$RName,
[Parameter(Mandatory = $true, ValueFromPipeLine = $true, position=3)][String]$Arg1Value,
[Parameter(Mandatory = $false, ValueFromPipeLine = $false, position=4)][String]$Grace="2",
[Parameter(Mandatory = $false, ValueFromPipeLine = $false, position=5)][String] $Period="5"
)
# return up on success | down on failure
Function test([String]$Arg1Value)
{
$res="down"
# Replace the following by your test
if (Test-Path "$Arg1Value")
{
$res="up"
}
return $res
}
$customchecker=$MyInvocation.MyCommand.Name
$safekit="$env:SAFE/safekit.exe"
$safebin="$env:SAFEBIN"
$gracecount=0
$prevrstate="unknown"
# wait a little
Start-Sleep $Period
while ($true){
Start-Sleep $Period
$rstate = test($Arg1Value)
if($rstate -eq "down"){
$gracecount+=1
}else{
$gracecount = 0
if($prevrstate -ne $rstate){
& $safekit set -r "$RName" -v $rstate -i $customchecker -m $ModName
$prevrstate = $rstate
}
}
if($gracecount -ge $Grace){
if($prevrstate -ne $rstate){
& $safekit set -r "$RName" -v $rstate -i $customchecker -m $ModName
$prevrstate = $rstate
}
$gracecount = 0
}
}
L’exécutable associé au checker est automatiquement appelé avec au moins 2 arguments :
Le 1er
argument est le nom module
Le 2ème
est le nom de la ressource à affecter
Si la configuration <custom> contient l’attribut arg, sa valeur est passée comme arguments suivants.
Le script checker est écrit en respectant les précautions suivantes :
La ressource
n’est affectée que si sa valeur a changé
Quand la
ressource est down, le checker
consolide cet état (grace fois) avant de
l’affecter. Cela peut permettre d’éviter de fausses détections d’erreur.
|
|
A chaque fois que vous modifiez le fichier de configuration ou le script, vous devez réappliquer la nouvelle configuration. |
Cet exemple présente 2 modules de démonstration : leader.safe et follower.safe.
Le module leader définit les ressources partagées par tous les followers
comme l'adresse IP virtuelle ou les répertoires répliqués.
Les modules followers contiennent le démarrage et l'arrêt de
plusieurs applications isolées dans différents modules. Chaque module follower
peut être arrêté et démarré indépendamment sans que les autres modules soient
arrêtés et sans déconfigurer les ressources du module leader.
Le module leader est un miroir : il inclut dans ses scripts le démarrage/arrêt des modules followers.
Chaque module follower est un module light avec les scripts de démarrage/arrêt d'une application et la détection d'erreur. Chaque module follower est dépendant des défaillances du module leader avec le checker de module suivant :
follower/conf/userconfig.xml - voir 13 page 237
…
<check>
<module name="leader"/>
</check>
…
Il s’agit d’une configuration synthétique à la place de :
…
<check>
<module name="leader">
<to addr="127.0.0.1" port="9010"/>
</module>
</check>
…
|
|
Si vous avez modifié le port d’écoute du service web de SafeKit (voir 10.6 page 170), remplacez la configuration synthétique par la configuration complète et changez la valeur du port. |
16.1 « Cluster SafeKit dans Amazon AWS » page 319
16.2 « Cluster SafeKit dans Microsoft Azure » page 325
16.3 « Cluster SafeKit dans Google GCP » page 330
Vous pouvez installer, configurer et administrer des modules SafeKit qui s’exécutent sur des serveurs virtuels dans les clouds Microsoft Azure, Amazon AWS et Google GCP plutôt que sur des serveurs physiques sur site. Cela nécessite un minimum de paramétrage du cloud et/ou des serveurs, en particulier pour mettre en œuvre une adresse IP virtuelle. Ces paramétrages sont automatiquement réalisés par les modèles AWS CloudFormation et Azure Resource. Ces modèles offrent une solution très rapide et simple pour installer et préconfigurer un cluster SafeKit dans les clouds AWS et Azure.
Pour une mise en œuvre rapide, se référer à :
cluster miroir dans AWS ou cluster ferme dans AWS
cluster miroir dans Azure ou cluster ferme dans Azure
cluster miroir dans GCP ou cluster ferme dans GCP
Dans ce qui suit, nous supposons que vous êtes familiers avec :
Amazon Elastic Compute Cloud (Amazon EC2) qui offre des capacités
de calcul dans le cloud Amazon Web Services (AWS). Pour plus d'informations sur
les fonctionnalités d'Amazon EC2, consultez la page du produit Amazon EC2.
AWS CloudFormation qui aide à déployer des instances et des
applications dans Amazon EC2. Cela permet de gagner beaucoup de temps et
d'efforts d’installation : le temps libéré pour la gestion des ressources
EC2 peut être exploité pour se consacrer aux applications qui s'exécutent dans
AWS.
SafeKit fournit un modèle AWS CloudFormation pour AWS QuickStart qui constitue un moyen simple et rapide pour implémenter un cluster SafeKit. SafeKit offre 2 modèles :
un modèle pour déployer un cluster miroir, avec des paramètres
spécifiques décrits en 16.1.3 page 322
un modèle pour déployer un cluster ferme, avec des paramètres
spécifiques décrits en 16.1.4 page 323

il déploie deux instances EC2 (jusqu'à quatre) dans la même
région mais réparties sur plusieurs zones de disponibilité. Vous pouvez choisir
le type d'instance et le système d'exploitation (Windows 2016 ou CentOS 7)
il configure un réseau virtuel (virtual private cloud, VPC)
ü il configure une adresse publique (Elastic IP, EIP) et une adresse privée pour chaque instance
ü il configure les groupes de sécurité AWS pour autoriser uniquement les connexions à distance de l'administrateur (bureau à distance pour Windows, ssh pour Linux) et de la console Web SafeKit (https://EIP:9453).
il configure un load-balancer AWS pour la mise en œuvre de l’IP
virtuelle d’un module miroir ou ferme selon le modèle choisi
il exécute toutes les opérations pour que SafeKit soit prêt à
l'emploi:
ü il installe le package SafeKit
ü il renseigne la configuration du cluster SafeKit et l'applique à tous les nœuds (voir 12 page 231).
ü il applique la configuration HTTPS pour sécuriser la console Web SafeKit (voir 11.6.1 page 223)
ü il installe, configure et démarre un module miroir ou ferme selon le modèle choisi
À la fin du déploiement du modèle AWS CloudFormation pour SafeKit, il vous suffit de connecter un navigateur web à l’URL indiquée dans le résultat de l’application du modèle. Cet URL permet d’accéder à l’assistant de configuration décrit en 11.4.3 page 202. Appliquer la procédure décrite pour ensuite utiliser la console web SafeKit sécurisée depuis votre navigateur (connecté à https://EIP:9453, où EIP correspond à l'adresse publique d'un nœud du cluster). Vous pouvez ensuite exploiter SafeKit comme sur une installation sur site en installant, configurant et administrant un module miroir ou ferme dans le cloud AWS.
Vous pouvez mettre en œuvre SafeKit dans des instances AWS créées en dehors du modèle AWS CloudFormation pour SafeKit. Dans ce cas, avant de pouvoir mettre en œuvre un module SafeKit, l’administrateur doit effectuer manuellement les paramétrages d’AWS, des instances et de SafeKit. Il faut en plus des configurations spécifiques en fonction du module que vous souhaitez mettre en œuvre :
pour un cluster miroir, voir 16.1.3 page
322
pour un cluster ferme, voir 16.1.4 page
323
Paramétrage d’AWS
Il faut paramétrer AWS pour :
associer des adresses publiques à chaque nœud si vous souhaitez
les administrer avec la console web SafeKit depuis internet
configurer les groupes de sécurité associés au(x) réseau(x) pour
ouvrir les communications du framework SafeKit et de la console web SafeKit.
Les ports à ouvrir sont décrits en 10.3.3.2 page
163
utiliser un réseau à large bande passante et à faible latence si
la réplication temps réel est utilisée dans un module miroir
Paramétrage des instances
Sur chaque instance, il faut en plus :
installer le package SafeKit
appliquer la configuration HTTPS pour sécuriser la console Web
SafeKit (voir 11.6.1 page 223)
Paramétrage de SafeKit
Enfin il faut saisir la configuration du cluster SafeKit et l'appliquer à tous les nœuds (voir 12 page 231). Pour chaque réseau, il peut être spécifié s’il peut être utilisé par la console et/ou le framework. Par défaut, un réseau peut être utilisé à la fois par la console et le framework (console="on" framework="on").
Dans le cas du réseau publique accessible depuis internet, il est préférable de ne pas l’utiliser pour les communications du framework SafeKit mais uniquement pour la console (console="on" framework="off").
Par exemple, le fichier de configuration du cluster SafeKit serait :
<lans>
<lan name="Public" console="on" framework="off">
<node name="Server1" addr="18.214.97.59"/>
<node name="Server2" addr="52.5.205.73"/>
</lan>
<lan name="Private" console="on" framework="on">
<node name="Server1" addr="10.0.11.10"/>
<node name="Server2" addr="10.0.12.10"/>
</lan>
</lans>
</cluster>
Le premier lan défini est utilisé uniquement pour la console web de SafeKit ; le deuxième est aussi utilisé pour les communications du framework SafeKit entre les nœuds du cluster.
Les fonctionnalités du module miroir sont opérationnelles dans le cloud AWS (réplication de fichiers temps réel, reprise sur panne, détection de mort de processus, checkers, ...), à l'exception du basculement d'adresse IP virtuelle. A la place, vous pouvez configurer un module miroir sur le cluster et utiliser le produit Elastic Load Balancing d’AWS (voir Produits Elastic Load Balancing dans AWS) en le configurant de façon à diriger tout le trafic vers le nœud primaire. L’adresse IP et/ou un nom DNS associés au load balancer, jouent le rôle d’IP virtuelle. Le modèle AWS CloudFormation pour SafeKit configure le load balancer et effectue tous les paramétrages nécessaires. Il vous suffit de modifier la règle de load-balancing et le groupe de sécurité réseau pour votre application.

Si vous mettez en place le module miroir en dehors du modèle AWS CloudFormation pour SafeKit, vous devez configurer vous-même le load balancer et le groupe de sécurité AWS.
Pour le load balancer, vous devez :
spécifier les règles pour votre application
définir dans le groupe cible du trafic les nœuds du cluster SafeKit
définir le test de
vérification de l’état. Ce test permet de vérifier si l'instance est
dans un état sain ou non
Le load balancer achemine le trafic uniquement vers les instances saines. Il reroute le trafic vers l'instance lorsque celle-ci a été restaurée dans un état sain.
SafeKit fournit un testeur de vérification de l’état pour chaque module. Vous devez configurer le test de vérification dans le load balancer avec :
le protocole HTTP
le port 9010, port du service web de SafeKit
l’URL /var/modules/AM/ready.txt
où AM est le nom du
module
Pour un module miroir, le test retourne :
OK, qui signifie
l'instance est saine, quand le module est dans l’état
PRIM (vert) ou
ALONE (vert)
NOT FOUND, qui
signifie que l'instance est hors service, dans tous les autres états
Le groupe de sécurité doit au minimum être configuré pour autoriser les communications pour les protocoles et ports :
UDP - 4800 pour le service safeadmin
(entre les nœuds du cluster SafeKit)
UDP - 8888 pour le heartbeat du module (entre les nœuds du
cluster SafeKit)
TCP – 5600 pour la réplication temps réelle du module (entre les
nœuds du cluster SafeKit)
TCP – 9010 pour la console web SafeKit en HTTP
TCP – 9453 pour la console web SafeKit en HTTPS
TCP – 9001 pour configurer la console web SafeKit en HTTPS
|
Les valeurs de ports du module dépendent de son id (voir 10.3.3.2 page 163). Les valeurs ci-dessus sont pour le premier module installé. |
La plupart des fonctionnalités du module ferme sont opérationnelles dans le cloud AWS (détection de mort de processus, checker, …), à l'exception du partage de charge sur l'adresse IP virtuelle. A la place, vous pouvez configurer un module ferme sur le cluster et utiliser le produit Elastic Load Balancing d’AWS (voir Produits Elastic Load Balancing dans AWS). L’adresse IP et/ou un nom DNS associés au load balancer, jouent le rôle d’IP virtuelle. Le modèle AWS CloudFormation pour SafeKit configure le load balancer et effectue tous les paramétrages nécessaires. Il vous suffit de modifier la règle de load-balancing et le groupe de sécurité réseau pour votre application.

Si vous mettez en place le module ferme en dehors du modèle AWS CloudFormation pour SafeKit, vous devez configurer vous-même le load balancer et le groupe de sécurité AWS.
Pour le load balancer, vous devez :
spécifier les règles pour votre application
définir comme cibles du trafic les nœuds du cluster SafeKit
définir le test de
vérification de l’état. Ce test permet de vérifier si l'instance est
dans un état sain ou non
Le load balancer achemine le trafic uniquement vers les instances saines. Il reroute le trafic vers l'instance lorsque celle-ci a été restaurée dans un état sain.
SafeKit fournit un testeur de vérification de l’état pour chaque module. Vous devez configurer le test de vérification dans le load balancer avec :
le protocole HTTP
le port 9010, port du service web de SafeKit
l’URL /var/modules/AM/ready.txt
où AM est le nom du
module
Pour un module ferme, le test retourne :
OK, qui signifie
l'instance est saine, quand le module est dans l’état
UP (vert)
NOT FOUND, qui
signifie que l'instance est hors service, dans tous les autres états
Le groupe de sécurité doit au minimum être configuré pour autoriser les communications pour les protocoles et ports :
UDP - 4800 pour le service safeadmin
(entre les nœuds du cluster SafeKit)
TCP – 9010 pour la console web SafeKit en HTTP
TCP – 9453 pour la console web SafeKit en HTTPS
TCP – 9001 pour configurer la console web SafeKit en HTTPS
Dans la suite, nous supposons que vous êtes familiers avec Microsoft Azure, qui est un service de cloud computing créé par Microsoft pour créer, tester, déployer et gérer des applications et des services à travers un réseau mondial de centres de données Microsoft. Pour plus d'informations sur les fonctionnalités et l'utilisation d'Azure, voir le portail Microsoft Azure.
SafeKit fournit un modèle Azure Resource qui constitue un moyen simple et rapide pour implémenter un cluster SafeKit. SafeKit offre 2 modèles :
un modèle pour déployer un cluster miroir, avec des paramètres
spécifiques décrits en 16.2.3 page 327
un modèle pour déployer un cluster ferme, avec des paramètres
spécifiques décrits en 16.2.4 page 329

il déploie un groupe de ressources qui contient toutes les
ressources nécessaires à l’implémentation du cluster SafeKit dans un emplacement
le groupe de ressources est composé de deux machines virtuelles
(jusqu'à quatre). Vous pouvez choisir le système d'exploitation (Windows 2016,
Linux CentOS 7). Chaque machine virtuelle s’exécute dans une zone de disponibilité
différente et peut être accédée depuis internet via une adresse IP publique ou
un nom DNS
il configure un réseau privé pour les communications du framework
SafeKit
il configure le groupe de sécurité réseau pour autoriser
uniquement les connexions à distance de l'administrateur (bureau à distance
pour Windows, ssh pour Linux) et de la console Web SafeKit (https://DNS:9453)
il configure un load-balancer Azure pour la mise en œuvre de l’IP
virtuelle du module miroir ou ferme selon le modèle choisi
il exécute toutes les opérations pour que le module SafeKit soit
prêt à l'emploi:
ü il installe le package SafeKit
ü il renseigne la configuration du cluster SafeKit et l'applique à tous les nœuds (voir 12 page 231).
ü il applique la configuration HTTPS pour sécuriser la console Web SafeKit (voir 11.6.1 page 223)
ü il installe, configure et démarre un module miroir ou ferme selon le modèle choisi
À la fin du déploiement du modèle Azure Resource pour SafeKit, il vous suffit de connecter un navigateur web à l’URL indiquée dans le résultat de l’application du modèle. Cet URL permet d’accéder à l’assistant de configuration décrit en 11.4.3 page 202. Appliquer la procédure décrite pour ensuite utiliser la console web SafeKit sécurisée depuis votre navigateur (connecté à https://DNS:9453, où DNS correspond au nom DNS d'un nœud du cluster). Vous pouvez ensuite exploiter SafeKit comme sur une installation sur site en installant, configurant et administrant un module miroir ou ferme dans le cloud Azure.
Vous pouvez mettre en œuvre SafeKit dans des machines virtuelles Azure créées en dehors du modèle Azure Resource pour SafeKit. Dans ce cas, avant de pouvoir mettre en œuvre un module SafeKit, l’administrateur doit effectuer manuellement les paramétrages d’Azure, des machines virtuelles et de SafeKit. Il faut en plus des configurations spécifiques en fonction du module que vous souhaitez mettre en œuvre :
pour un cluster miroir, voir 16.2.3 page 327
pour un cluster ferme, voir 16.2.4 page 329
Paramétrage d’Azure
Il faut paramétrer Azure pour :
associer des adresses IP publiques (éventuellement nom DNS) à
chaque machine virtuelle si vous souhaitez les administrer avec la console web
SafeKit depuis internet
configurer, si nécessaire, le groupe de sécurité réseau pour
ouvrir les communications du framework SafeKit et de la console web SafeKit.
Les ports à ouvrir sont décrits en 10.3.3.2 page
163
utiliser un réseau à large bande passante et à faible latence si
la réplication temps réel est utilisée dans un module miroir
Paramétrage des machines virtuelles
Sur chaque machine virtuelle, il faut en plus :
installer le package SafeKit
appliquer la configuration HTTPS pour sécuriser la console Web
SafeKit (voir 11.6.1 page 223)
Paramétrage de SafeKit
Enfin il faut saisir la configuration du cluster SafeKit et l'appliquer à tous les nœuds (voir 12 page 231). Pour chaque réseau, il peut être spécifié s’il peut être utilisé par la console et/ou le framework. Par défaut, un réseau peut être utilisé à la fois par la console et le framework (console="on" framework="on"). Dans le cas du réseau publique accessible depuis internet, il est préférable de ne pas l’utiliser pour les communications du framework SafeKit mais uniquement pour la console (console="on" framework="off").
Par exemple, le fichier de configuration du cluster SafeKit serait :
<cluster>
<lans>
<lan name="Public" console="on" framework="off">
<node name="Server1" addr="centosazurlinvm1.westeurope.cloudapp.azure.com"/>
<node name="Server2" addr="centosazurlinvm2.westeurope.cloudapp.azure.com"/>
</lan>
<lan name="Private" console="on" framework="on">
<node name="Server1" addr="10.0.0.10"/>
<node name="Server2" addr="10.0.0.11"/>
</lan>
</lans>
</cluster>
Le premier lan défini est utilisé uniquement pour la console web de SafeKit ; le deuxième est aussi utilisé pour les communications du framework SafeKit entre les nœuds du cluster.
Les fonctionnalités du module miroir sont opérationnelles dans le cloud Azure (réplication de fichiers temps réel, reprise sur panne, détection de mort de processus, checkers, ...), excepté le basculement d’adresse IP virtuelle. A la place, vous pouvez configurer un module miroir sur le cluster et utiliser load balancer proposé par Azure (voir Load Balancer dans Azure) en le configurant de façon à diriger tout le trafic vers le nœud primaire. L’adresse IP associée au load balancer, jouent le rôle d’IP virtuelle. Le modèle Azure Resource pour SafeKit configure le load balancer et effectue tous les paramétrages nécessaires. Il vous suffit de modifier la règle de load-balancing et le groupe de sécurité réseau pour votre application.

Si vous mettez en place le module miroir en dehors du modèle Azure Resource pour SafeKit, vous devez configurer vous-même le load balancer et le groupe de sécurité Azure.
Pour le load balancer, vous devez :
spécifier les règles pour votre application
définir dans le backend pool les nœuds du cluster SafeKit
définir une sonde
d’intégrité. Cette sonde permet de vérifier si l'instance est dans un
état sain ou non
Le load balancer achemine le trafic uniquement vers les instances saines. Il reroute le trafic vers l'instance lorsque celle-ci a été restaurée dans un état sain.
SafeKit fournit une sonde d’intégrité pour chaque module. Vous devez configurer la sonde d’intégrité dans le load balancer avec :
le protocole HTTP
le port 9010, port du service web de SafeKit
l’URL /var/modules/AM/ready.txt
où AM est le nom du
module
Pour un module miroir, le test retourne :
OK, qui signifie
l'instance est saine, quand le module est dans l’état
PRIM (vert) ou
ALONE (vert)
NOT FOUND, qui
signifie que l'instance est hors service, dans tous les autres états
Le groupe de sécurité réseau doit au minimum être configuré pour autoriser les communications pour les protocoles et ports :
UDP - 4800 pour le service safeadmin
(entre les nœuds du cluster SafeKit)
UDP - 8888 pour le heartbeat du module (entre les nœuds du
cluster SafeKit)
TCP – 5600 pour la réplication temps réelle du module (entre les
nœuds du cluster SafeKit)
TCP – 9010 pour la console web SafeKit en HTTP
TCP – 9453 pour la console web SafeKit en HTTPS
TCP – 9001 pour configurer la console web SafeKit en HTTPS
|
|
Les valeurs de ports du module dépendent de son id (voir 10.3.3.2 page 163). Les valeurs ci-dessus sont pour le premier module installé. |
La plupart des fonctionnalités du module ferme sont opérationnelles dans le cloud Azure (détection de mort de processus, checker, …), à l'exception du partage de charge sur l'adresse IP virtuelle. A la place, vous pouvez configurer un module ferme sur le cluster et utiliser load balancer proposé par Azure (voir Load Balancer dans Azure). L’adresse IP associée au load balancer, jouent le rôle d’IP virtuelle. Le modèle Azure Resource pour SafeKit configure le load balancer et effectue tous les paramétrages nécessaires. Il vous suffit de modifier la règle de load-balancing et le groupe de sécurité réseau pour votre application.

Si vous mettez en place le module ferme en dehors du modèle Azure Resource pour SafeKit, vous devez configurer vous-même le load balancer et le groupe de sécurité Azure.
Pour le load balancer, vous devez :
spécifier les règles pour votre application
définir dans le backend pool les nœuds du cluster SafeKit
définir une sonde
d’intégrité. Cette sonde permet de vérifier si l'instance est dans un
état sain ou non
Le load balancer achemine le trafic uniquement vers les instances saines. Il reroute le trafic vers l'instance lorsque celle-ci a été restaurée dans un état sain.
SafeKit fournit une sonde d’intégrité pour chaque module. Vous devez configurer la sonde d’intégrité dans le load balancer avec :
le protocole HTTP
le port 9010, port du service web de SafeKit
l’URL /var/modules/AM/ready.txt
où AM est le nom du
module
Pour un module ferme, le test retourne :
OK, qui signifie
l'instance est saine, quand le module est dans l’état
UP (vert)
NOT FOUND, qui
signifie que l'instance est hors service, dans tous les autres états
Le groupe de sécurité doit au minimum être configuré pour autoriser les communications pour les protocoles et ports :
UDP - 4800 pour le service safeadmin
(entre les nœuds du cluster SafeKit)
TCP – 9010 pour la console web SafeKit en HTTP
TCP – 9453 pour la console web SafeKit en HTTPS
TCP – 9001 pour configurer la console web SafeKit en HTTPS
Dans la suite, nous supposons que vous êtes familiers avec Google Cloud Platform (GCP), fournisseur des machines virtuelles (VM) qui s'exécutent dans les centres de données innovants et sur le réseau de fibre optique mondial de Google. Pour plus d'informations sur ses fonctionnalités et son utilisation, voir la documentation Google Cloud Computing.
SafeKit fournit des solutions dans le Marketplace de Google qui constituent un moyen simple et rapide pour implémenter un cluster SafeKit. SafeKit offre 4 solutions :
2 solutions pour déployer un cluster miroir (une solution pour
Windows, l’autre pour Linux), avec des paramètres spécifiques décrits en 16.3.3 page 333
2 solutions pour déployer un cluster ferme (une solution pour
Windows, l’autre pour Linux), avec des paramètres spécifiques décrits en 16.3.4 page 334
Voir le guide Startup Guide pour une description complète du déploiement de ces solutions.

il déploie deux instances de VM dans la même région mais
réparties sur deux zones de disponibilité. Vous pouvez choisir le type
d'instance et le système d'exploitation (Windows 2019 ou CentOS 7)
il utilise un réseau virtuel (virtual private cloud, VPC) attaché
au projet dans lequel la solution est déployée
ü il configure une adresse publique (External IP, EIP) et une adresse privée pour chaque instance
ü il configure le pare-feu pour autoriser uniquement les connexions à distance de l'administrateur (bureau à distance pour Windows, ssh pour Linux) et de la console Web SafeKit (https://EIP:9453).
il configure un load-balancer GCP pour la mise en œuvre de l’IP
virtuelle d’un module miroir ou ferme selon la solution choisie
il exécute toutes les opérations pour que SafeKit soit prêt à
l'emploi:
ü il inclut dans l’image de l’instance le package SafeKit
ü il renseigne la configuration du cluster SafeKit et l'applique à tous les nœuds (voir 12 page 231).
ü si HTTPS a été sélectionné au déploiement, il applique la configuration HTTPS pour sécuriser la console Web SafeKit (voir 11.6.1 page 223),
ü il installe, configure et démarre un module miroir ou ferme selon le modèle choisi
À la fin du déploiement de la solution SafeKit pour le Google Marketplace, il vous suffit de suivre les recommandations décrites dans « Suggested next steps ». Celles-ci doivent être appliquées dans le cas où vous avez choisi HTTPS pour le mode d’accès à la console web. Il s’agit de connecter un navigateur web à l’URL indiqué pour ouvrir l’assistant de configuration décrit en 11.4.3 page 202. Appliquer la procédure décrite pour ensuite utiliser la console web SafeKit sécurisée depuis votre navigateur (connecté à https://EIP:9453, où EIP correspond à l'adresse publique d'un nœud du cluster). Vous pouvez ensuite exploiter SafeKit comme pour une installation sur site en installant, configurant et administrant un module miroir ou ferme dans le cloud Google GCP.
Vous pouvez mettre en œuvre SafeKit dans des instances de machines virtuelles Google. Dans ce cas, l’administrateur doit effectuer manuellement les paramétrages de Google Compute Engine, des instances et de SafeKit. Il faut en plus des configurations spécifiques en fonction du module que vous souhaitez mettre en œuvre :
pour un cluster miroir, voir 16.3.3 page 333
pour un cluster ferme, voir 16.3.4 page
334
Paramétrage du GCP
Il faut paramétrer le GCP pour :
associer des adresses publiques (External IP), ou noms DNS, à
chaque nœud si vous souhaitez les administrer avec la console web SafeKit
depuis internet
configurer les règles de pare-feu pour le réseau Virtual Private
Cloud (VPC) pour ouvrir les communications du framework SafeKit et de la
console web SafeKit. Les ports à ouvrir sont décrits en 10.3.3.2
page 163
utiliser un réseau à large bande passante et à faible latence si
la réplication temps réel est utilisée dans un module miroir
Paramétrage des instances
Sur chaque instance, il faut en plus :
installer le package SafeKit
appliquer la configuration HTTPS pour sécuriser la console Web
SafeKit (voir 11.6.1 page 223)
Paramétrage de SafeKit
Enfin il faut saisir la configuration du cluster SafeKit et l'appliquer à tous les nœuds (voir 12 page 231). Pour chaque réseau, il peut être spécifié s’il peut être utilisé par la console et/ou le framework. Par défaut, un réseau peut être utilisé à la fois par la console et le framework (console="on" framework="on"). Dans le cas du réseau publique accessible depuis internet, il est préférable de ne pas l’utiliser pour les communications du framework SafeKit mais uniquement pour la console (console="on" framework="off").
Par exemple, le fichier de configuration du cluster SafeKit serait :
<cluster>
<lans>
<lan name="Public" console="on" framework="off">
<node name="Server1" addr="18.214.97.59"/>
<node name="Server2" addr="52.5.205.73"/>
</lan>
<lan name="Private" console="on" framework="on">
<node name="Server1" addr="10.0.11.10"/>
<node name="Server2" addr="10.0.12.10"/>
</lan>
</lans>
</cluster>
Le premier lan défini est utilisé uniquement pour la console web de SafeKit ; le deuxième est aussi utilisé pour les communications du framework SafeKit entre les nœuds du cluster.
Les fonctionnalités du module miroir sont opérationnelles dans GCP (réplication de fichiers temps réel, reprise sur panne, détection de mort de processus, checkers, ..) à l'exception du basculement d'adresse IP virtuelle. A la place, vous pouvez configurer un module miroir sur le cluster et utiliser le load balancing GCP (voir Load Balancer de GCP) en le configurant de façon à diriger tout le trafic vers le nœud primaire. L’adresse IP associée au load balancer, jouent le rôle d’IP virtuelle. La solution SafeKit pour le Google Marketplace configure le load balancer et effectue tous les paramétrages nécessaires. Il vous suffit de modifier la règle de load-balancing et le groupe de sécurité réseau pour votre application.

Si vous mettez en place le module miroir en dehors de la solution du Google Marketplace, vous devez configurer vous-même le load balancer et le pare-feu réseau de Google Cloud Platform.
Pour le load balancer, vous devez :
spécifier les règles pour votre application
définir comme cibles du trafic les nœuds du cluster SafeKit
définir le test de
vérification de l’état. Ce test permet de vérifier si l'instance est
dans un état sain ou non
Le load balancer achemine le trafic uniquement vers les instances saines. Il reroute le trafic vers l'instance lorsque celle-ci a été restaurée dans un état sain.
SafeKit fournit un testeur de vérification de l’état pour chaque module. Vous devez configurer le test de vérification dans le load balancer avec :
le protocole HTTP
le port 9010, port du service web de SafeKit
l’URL /var/modules/AM/ready.txt
où AM est le nom du
module
Pour un module miroir, le test retourne :
OK, qui signifie
l'instance est saine, quand le module est dans l’état
PRIM (vert) ou
ALONE (vert)
NOT FOUND, qui
signifie que l'instance est hors service, dans tous les autres états
Le pare-feu du réseau doit au minimum être configuré pour autoriser les communications pour les protocoles et ports :
UDP - 4800 pour le service safeadmin
(entre les nœuds du cluster SafeKit)
UDP - 8888 pour le heartbeat du module (entre les nœuds du
cluster SafeKit)
TCP – 5600 pour la réplication temps réelle du module (entre les
nœuds du cluster SafeKit)
TCP – 9010 pour la console web SafeKit en HTTP
TCP – 9453 pour la console web SafeKit en HTTPS
TCP – 9001 pour configurer la console web SafeKit en HTTPS
|
|
Les valeurs de ports du module dépendent de son id (voir 10.3.3.2 page 163). Les valeurs ci-dessus sont pour le premier module installé. |
La plupart des fonctionnalités du module ferme sont opérationnelles dans GCP (détection de mort de processus, checker, …), à l'exception du partage de charge sur l'adresse IP virtuelle. A la place, vous pouvez configurer un module ferme sur le cluster et utiliser le load balancing GCP (voir Load Balancer de GCP). L’adresse IP associée au load balancer, jouent le rôle d’IP virtuelle. La solution SafeKit pour le Google Marketplace configure le load balancer et effectue tous les paramétrages nécessaires. Il vous suffit de modifier la règle de load-balancing et le groupe de sécurité réseau pour votre application.

Si vous mettez en place le module ferme en dehors de la solution du Google Marketplace, vous devez configurer vous-même le load balancer et le pare-feu réseau de Google Cloud Platform.
Pour le load balancer, vous devez :
spécifier les règles pour votre application
définir comme cibles du trafic les nœuds du cluster SafeKit
définir le test de
vérification de l’état. Ce test permet de vérifier si l'instance est
dans un état sain ou non
Le load balancer achemine le trafic uniquement vers les instances saines. Il reroute le trafic vers l'instance lorsque celle-ci a été restaurée dans un état sain.
SafeKit fournit un testeur de vérification de l’état pour chaque module. Vous devez configurer le test de vérification dans le load balancer avec :
le protocole HTTP
le port 9010, port du service web de SafeKit
l’URL /var/modules/AM/ready.txt
où AM est le nom du
module
Pour un module ferme, le test retourne :
OK, qui signifie
l'instance est saine, quand le module est dans l’état
UP (vert)
NOT FOUND, qui
signifie que l'instance est hors service, dans tous les autres états
Le pare-feu du réseau doit au minimum être configuré pour autoriser les communications pour les protocoles et ports :
UDP - 4800 pour le service safeadmin
(entre les nœuds du cluster SafeKit)
TCP – 9010 pour la console web SafeKit en HTTP
TCP – 9453 pour la console web SafeKit en HTTPS
TCP – 9001 pour configurer la console web SafeKit en HTTPS
SafeKit utilise les logiciels tiers listés ci-dessous. Pour les détails des licences, se référer aux liens indiqués ou aux fichiers de licence répertoriés sous SAFE/licenses (SAFE=/opt/safekit en Linux et SAFE=C:\safekit en Windows si %SYSTEMDRIVE%=C:).
|
libxml |
MIT license - http://www.xmlsoft.org/FAQ.html#License Utilisé par le framework SafeKit |
|
libxslt |
MIT license - https://gitlab.gnome.org/GNOME/libxslt/blob/master/Copyright Utilisé par le framework SafeKit |
|
Net-SNMP |
http://net-snmp.sourceforge.net BSD like and BSD license - http://www.net-snmp.org/about/license.html Utilisé par l’agent SNMP de SafeKit |
|
HTTP server |
Apache license - https://www.apache.org/licenses/LICENSE-2.0 Utilisé par la console web SafeKit, l’ancienne console java, les commandes distribuées et le module checker |
|
APR |
Apache license - https://www.apache.org/licenses/LICENSE-2.0 Utilisé par le serveur Apache HTTP |
|
PCRE |
BSD license - https://www.pcre.org/licence.txt Utilisé par le serveur Apache HTTP |
|
libexpat |
https://github.com/libexpat/libexpat BSD license - https://github.com/libexpat/libexpat/blob/master/expat/COPYING Utilisé par le serveur Apache HTTP |
|
cURL |
Curl license - https://github.com/curl/curl/blob/master/docs/LICENSE-MIXING.md Utlisé par les commandes distribuées et le module checker |
|
ANSI C library for CGI Programming Cgic license - Credits and License Terms Utilisé par le serveur Apache HTTP de SafeKit |
|
|
dual OpenSSL and SSLeay license - https://www.openssl.org/source/license.html Utilisé pour sécuriser la console web SafeKit, les commandes distribuées et le module checker |
|
|
MIT license - https://www.lua.org/license.html Utlisé par la commande safekit config et la console web |
|
|
BSD like license - http://infozip.sourceforge.net/license.html Utilisé pour le pack/unpack d’un template .safe |
|
|
Packet Construction and Injection Libnet license - license Utilisé par arpreroute et ping |
SafeKit utilise les logiciels tiers suivants uniquement pour la console Web :
|
jquery |
MIT license - https://jquery.org/license/ jQuery est une librairie javascript compacte, performante et riche en fonctionnalités |
|
||
|
jquery-ui |
MIT license - https://github.com/jquery/jquery-ui/blob/master/LICENSE.txt jQuery UI étend jQuery avec des fonctionnalités de gestion de l’interface utilisateur, la définition de widgets et de thèmes |
|
||
|
jquery-lang |
https://github.com/Irrelon/jquery-lang-js MIT license - https://github.com/Irrelon/jquery-lang-js/blob/master/js/jquery-lang.js Utilisé pour la traduction des messages affichés dans la console web |
|
||
|
jquery-ui-tabs.paging |
jquery-ui-tabs-paging - MIT license Utilisé pour ajsuter les tabulations en fonction de la taille de la fenêtre |
|
||
|
codemirror |
MIT-style license - https://github.com/codemirror/CodeMirror/blob/master/LICENSE Editeur texte développé par Marijn Haverbeke |
|
||
|
codemirror-ui |
https://github.com/jagthedrummer/codemirror-ui MIT License - https://github.com/jagthedrummer/codemirror-ui/blob/master/LICENSE Simple interface graphique, basée sur le widget codemirror et développée par Jeremy Green |
|
||
|
bootstrap icons |
https://icons.getbootstrap.com/ - MIT license – https://github.com/twbs/bootstrap/blob/v4.0.0/LICENSE |
||
Remerciements à iTweek (http://itweek.deviantart.com/) pour les icônes « Knob buttons toolbar icons ».
"Action forcestop called by web@<IP>/SYSTEM/root", 118, 150
"Action prim called by web@<IP>/SYSTEM/root",101, 150
"Action primforce called by SYSTEM/root", 108
"Action restart called by web@<IP>/SYSTEM/root",77, 83, 118, 150
"Action restart|stopstart called by customscript", 97, 122, 150
"Action restart|stopstart called by errd", 90, 122, 150
"Action restart|stopstart from failover rule tcp_failure", 91, 122, 150
"Action second called by web@<IP>/SYSTEM/root", 101, 150
"Action shutdown called by SYSTEM", 80, 89, 147
"Action start called at boot time", 80, 81, 89, 147
"Action start called automatically", 90, 91, 97
"Action start called by web@<IP>/SYSTEM/root", 76, 83, 118, 150
"Action stop called by web@<IP>/SYSTEM/root", 76, 83, 118, 150
"Action stopstart called by failover-off", 106, 150
"Action stopstart called by modulecheck", 95, 150
"Action stopstart called by web@<IP>/SYSTEM/root", 118, 150
"Action stopstart from failover rule customid_failure", 97, 122, 150
"Action swap called by web@<IP>/SYSTEM/root", 77, 118, 150
"Action wait from failover rule customid_failure", 96, 121
"Action wait from failover rule tcpid_failure", 92, 121
"Action wait from failover rule degraded_server", 105
"Action wait from failover rule interface_failure", 93, 121
"Action wait from failover rule module_failure", 95, 121
"Action wait from failover rule notuptodate_server", 103, 121
"Action wait from failover rule ping_failure", 94, 121
"Action wait from failover rule splitbrain_failure", 121
Réplication et réintegration
"Copied <reintegration statistics>", 79
"Data may be inconsistent for replicated directories (stopped during reintegration)", 108
"Data may not be uptodate for replicated directories (wait for the start of the remote server)", 101, 103, 121
"If you are sure that this server has valid data, run safekit prim to force start as primary", 101, 103, 121
"If you are sure that this server has valid data, run safekit primforce to force start as primary", 108
"Reintegration ended (synchronize)", 79
"Updating directory tree from /replicated", 79
Load-balancing
"farm load: 128/256 (group FarmProto)" , 111, 86, 87
"farm membership: node1 (group FarmProto)", 86, 87
"farm membership: node1 node2 (group FarmProto)" , 111, 86, 87
"farm membership: node2 (group FarmProto)", 87
"Local state ALONE green", 100, 76, 82
"Local state PRIM green", 100,76
"Local state SECOND green",100, 76
"Local state UP green",110 ,111
"Local state WAIT red", 121, 106
"Remote state ALONE green", 100,82
"Remote state PRIM green", 100, 76
"Remote state SECOND green",100, 76
"Remote state UNKNOWN grey", 81, 82
"Resource custom.id set to down by customscript", 96, 97, 121, 122
"Resource custom.id set to up by customscript", 96
"Resource heartbeat.0 set to down by heart", 81, 82
"Resource heartbeat.flow set to down by heart", 81, 82
"Resource intf.ip.0 set to down by intfcheck", 93, 121
"Resource intf.ip.0 set to up by intfcheck", 93
"Resource module.othermodule_ip set to down by modulecheck", 95, 121
"Resource module.othermodule_ip set to up by modulecheck", 95
"Resource ping.id set to down by pingcheck", 94, 121
"Resource ping.id set to up by pingcheck", 94
"Resource rfs.degraded set to up by nfsadmin", 105
"Resource tcp.id set to down by tcpcheck", 91, 92, 121, 122
"Resource tcp.id set to up by tcpcheck", 92
"Script start_prim", 293, 76, 77, 80, 81
"Script stop_prim", 293, 76, 80, 82
"Script start_both", 293, 83, 89
"Transition RESTART|STOPSTART from failover rule customid_failure", 97
"Transition STOPSTART from failover-off", 106
"Transition SWAP from defaultprim", 107
"Transition SWAP from SYSTEM", 77
"Transition WAIT_TR from failover rule customid_failure", 96
"Transition WAIT_TR from failover rule interface_failure", 93
"Transition WAKEUP from failover rule Implicit_WAKEUP", 92, 93, 94, 95, 96
Autres messages
"event atleast on proc appli.exe", 90, 122
"Failover-off configured", 106
"Previous halt unexpected", 81, 89
"Reason of failover: no heartbeat", 81
"Reason of failover: remote stop", 76, 80
"Requested prim start aborted ", 108
"Split brain recovery: exiting alone", 82
"Split brain recovery: staying alone", 82
"Stopping loop", 123, 90, 91, 92, 93, 94, 95, 96, 97, 122
"Virtual IP <ip 1.10 of mirror> set", 78
"Virtual IP <ip1.20 of farm> set", 84
|
miroir, ferme… - 15 cloud - 319
Installation installation, upgrade… - 25
Console configuration, contrôle… - 35 sécurisation (https,…) - 181
Configuration avancée cluster.xml - 231 userconfig.xml - 237 scripts de redémarrage - 293 exemples - 301
Administration mirror - 99 farm - 109 avancée - 157 ligne de commande –145
Support tests - 73 problèmes - 113 site support - 137 messages du journal - 341
Autres table des matières - 5 logiciels tiers – 337 |