Guide de l'utilisateur de SafeKit
SafeKit 8.2
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 299 |
Installation |
« Installation » page 25 |
|
Console |
« La console web de SafeKit » page 37 « Sécurisation du service web de SafeKit » page 177 |
|
Configuration avancée |
« Cluster.xml pour la configuration du cluster SafeKit » page 205 « Userconfig.xml pour la configuration du module » page 211 « Scripts du module pour la configuration du module » page 271 « Exemples de userconfig.xml et scripts du module » page 277 |
|
Administration |
« Administration d'un module miroir » page 95 « Administration d'un module ferme » page 107 « Interface ligne de commande » page 143 « Administration avancée » page 157 |
|
Support |
« Tests » page 69 « Résolution de problèmes » page 111 « Accès au support Evidian » page 133 « Index des messages du log page 315 |
|
Autres |
« Table des matières » page 5 « Logiciels tiers » page 311 |
|
Version |
SafeKit 8.2 |
|
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 38MC 03 |
|
Si vous avez des commentaires ou des
questions relatives à ce document, envoyez-nous s'il vous plaît |
Copyright © Evidian, 2024
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
1.... Architectures de haute disponibilité. 15
1.1..... Définition du cluster SafeKit 15
1.2..... Définition d'un module SafeKit -intégration d'application. 15
1.3..... Module miroir : réplication temps réel synchrone et reprise sur panne. 16
1.3.1 Réplication de fichiers et reprise sur panne. 16
1.3.2 Etape 1. Etat normal d'un miroir 16
1.3.3 Etape 2. Reprise sur panne. 17
1.3.4 Etape 3. Réintégration après panne. 17
1.3.5 Etape 4. Retour à la normale. 18
1.3.6 Solution de réplication synchrone qui ne perd pas de données en cas de panne. 18
1.4..... Module ferme : partage de charge réseau et reprise sur panne. 19
1.4.1 Partage de charge réseau et reprise sur panne. 19
1.4.2 Principe d'une adresse IP virtuelle avec partage de charge réseau. 19
1.4.3 Critères de partage de charge pour les services web à état et sans état 19
1.5..... Combiner les modules miroir et ferme. 20
1.5.1 Actif/Actif : 2 modules miroirs en backup l'un de l'autre. 20
1.5.2 N-1 : N modules miroirs avec un seul backup. 21
1.6..... La plus simple solution pour la haute disponibilité dans le cloud. 22
1.6.1 Cluster miroir dans Microsoft Azure, Amazon AWS et Google GCP. 22
1.6.2 Cluster ferme dans Microsoft Azure, Amazon AWS et Google GCP. 23
2.1..... Installation de SafeKit 25
2.1.1 Télécharger le package. 25
2.1.2 Répertoires d'installation et espace disque. 25
2.1.3 Procédure d’installation. 26
2.1.4 Utilisation de la console et de la ligne de commande SafeKit 28
2.1.5 Clés de licence SafeKit 29
2.1.6 Caractéristiques spécifiques à chaque OS. 29
2.2..... Recommandation pour une installation d'un module miroir 30
2.2.3 Prérequis application. 30
2.2.4 Prérequis réplication de fichiers 30
2.3..... Recommandation pour une installation d'un module ferme. 31
2.3.3 Prérequis application. 31
2.4..... Upgrade de SafeKit 31
2.4.1 Quand procéder à un upgrade ?. 31
2.4.3 Procédure de désinstallation. 32
2.4.4 Procédure de réinstallation et post-installation. 32
2.5..... Désinstallation complète de SafeKit 34
2.5.1 Sur Windows en tant qu’Administrateur 34
2.5.2 Sur Linux en tant que root 35
2.6..... Documentation produit 35
3.... La console web de SafeKit 37
3.1..... Démarrer la console web. 37
3.1.1 Lancer un navigateur web. 37
3.1.2 Connecter la console à un serveur SafeKit 38
3.2..... Configurer un cluster SafeKit 39
3.2.1 L’assistant de configuration du cluster 40
3.2.2 Page d’accueil de configuration du cluster 43
3.3..... Configurer un module. 45
3.3.1 Sélectionner le nouveau module à configurer 45
3.3.2 L’assistant de configuration du module. 46
3.3.3 Page d’accueil de configuration des modules 52
3.3.4 Ajouter un script au module. 53
3.4..... Superviser un module. 54
3.4.1 État et status d’un module. 56
3.4.2 Menus de contrôle d’un module. 57
3.4.4 Chronologie des états d’un module. 65
3.5..... Snapshots d’un module pour le support 66
3.6..... Sécuriser la console web. 67
4.1..... Installation et tests après boot 69
4.1.1 Test installation package. 69
4.1.2 Test licence et version. 70
4.1.3 Test des services et processus SafeKit après boot 71
4.1.4 Test démarrage de la console web. 72
4.2..... Tests d'un module miroir 72
4.2.1 Test start d'un module miroir sur 2 serveurs STOP (NotReady). 72
4.2.2 Test stop d'un module miroir sur le serveur PRIM (Ready). 72
4.2.3 Test start du module miroir dans l'état STOP (NotReady). 73
4.2.4 Test restart du module miroir dans l'état PRIM (Ready). 73
4.2.5 Test swap du module miroir d'un serveur vers l'autre. 73
4.2.6 Test adresse IP virtuelle d'un module miroir 74
4.2.7 Test réplication de fichiers d'un module miroir 75
4.2.8 Test shutdown d'un module miroir sur le serveur PRIM (Ready). 76
4.2.9 Test power-off d'un module miroir sur le serveur PRIM (Ready). 77
4.2.10 Test split brain avec un module miroir 78
4.2.11 Continuer les tests de votre module miroir avec les checkers. 79
4.3..... Tests d'un module ferme. 79
4.3.1 Test start d'un module ferme sur les serveurs STOP (NotReady). 79
4.3.2 Test stop d'un module ferme sur un serveur UP (Ready). 79
4.3.3 Test restart d'un module ferme sur un serveur UP (Ready). 79
4.3.4 Test adresse IP virtuelle d'un module ferme. 80
4.3.5 Test load balancing TCP sur une adresse virtuelle. 82
4.3.6 Test split brain avec un module ferme. 83
4.3.7 Test de la compatibilité du réseau avec l'adresse MAC invisible (vmac_invisible) 84
4.3.8 Test shutdown d'un module ferme sur un serveur UP (Ready). 85
4.3.9 Test power-off d'un module ferme sur un serveur UP (Ready). 85
4.3.10 Continuer les tests du module ferme avec les checkers 85
4.4..... Tests des checkers communs à un miroir et une ferme. 86
4.4.1 Test <errd>: checker de processus avec action restart ou stopstart 86
4.4.2 Test <tcp> checker de l'applicatif local avec action restart ou stopstart 87
4.4.3 Test <tcp> checker d'un service externe avec action wait 88
4.4.4 Test <interface check="on"> sur une interface réseau locale avec action wait 89
4.4.5 Test <ping> checker avec action wait 90
4.4.6 Test <module> checker avec action wait 91
4.4.7 Test <custom> checker avec action wait 92
4.4.8 Test <custom> checker avec action restart ou stopstart 93
5.... Administration d'un module miroir. 95
5.1..... Mode de fonctionnement d'un module miroir 96
5.3..... Premier démarrage d'un module miroir (commande prim) 98
5.4..... Différents cas de réintégration (utilisation des bitmaps) 99
5.5..... Démarrage d'un module miroir avec les données à jour STOP (NotReady) - WAIT (NotReady). 100
5.6..... Mode de réplication dégradé (ALONE (Ready) dégradé) 101
5.7..... Reprise automatique ou manuelle failover="off" - STOP (NotReady) - WAIT (NotReady) 102
5.8..... Serveur primaire par défaut (swap automatique après réintégration) 104
5.9..... La commande prim échoue : pourquoi ? (commande primforce) 105
6.... Administration d'un module ferme. 107
6.1..... Mode de fonctionnement d'un module ferme. 107
6.2..... Automate d'état d'un module ferme (STOP, WAIT, UP - NotReady, Transient, Ready) 108
6.3..... Démarrage d'un module ferme. 109
7.... Résolution de problèmes. 111
7.1..... Problème de connexion avec la console web. 111
7.1.1 Contrôler le navigateur 111
7.1.2 Supprimer l’état du navigateur 112
7.1.3 Contrôler les serveurs. 112
7.2..... Problème de connexion HTTPS avec la console web. 113
7.2.1 Contrôler les certificats serveurs 113
7.2.2 Contrôler les certificats installés dans SafeKit 114
7.2.3 Revenir à la configuration HTTP. 115
7.3..... Comment lire les journaux et les ressources du module ? 115
7.4..... Comment lire le journal de commandes du serveur ? 116
7.5..... Module stable (Ready) et (Ready). 116
7.6..... Module dégradé (Ready) et /(NotReady). 117
7.7..... Module hors service / (NotReady) et / (NotReady). 117
7.8..... Module STOP (NotReady) : redémarrer le module. 117
7.9..... Module WAIT (NotReady) : réparer la ressource="down". 118
7.10... Module oscillant de (Ready) à (Transient). 119
7.11... Message sur stop après maxloop. 120
7.12... Module (Ready) mais application non opérationnelle. 121
7.13... Module mirror ALONE (Ready) / WAIT ou STOP (NotReady). 122
7.14... Module ferme UP (Ready) mais problème de load balancing. 123
7.14.1 Non cohérence des parts de la charge réseau. 123
7.14.2 L'adresse IP virtuelle ne répond pas correctement 123
7.15... Problème après boot 124
7.16... Analyse à partir des snapshots du module. 124
7.16.1 Fichiers de configuration du module. 125
7.16.2 Fichiers de dump du module. 125
7.17... Problème avec la taille des bases de données de SafeKit 127
7.18.1 Exporter les certificats CA depuis des certificats publics. 129
7.19... Problème persistant 132
8.... Accès au support Evidian. 133
8.1..... Page d’accueil du site support 133
8.2..... Clés de licence permanentes 134
8.4..... Accéder à votre compte. 135
8.5..... Le Call Desk pour remonter des problèmes 136
8.5.1 Les opérations du Call Desk. 136
8.5.3 Attacher les snapshots 138
8.5.4 Consultation des réponses au Call et échange avec le support 139
8.6..... Zone de download et d’upload de fichiers 140
8.6.1 2 zones de download et d’upload. 140
8.6.2 La zone de download des packages produit 140
8.6.3 La zone privée d’upload. 141
8.7..... Base de connaissances 141
9.... Interface ligne de commande. 143
9.1..... Commandes distribuées 143
9.2..... Commandes de boot et shutdown. 145
9.3..... Commandes de configuration et surveillance du cluster 146
9.4..... Commandes de contrôle des modules 148
9.5..... Commandes de surveillance des modules 151
9.6..... Commandes de configuration des modules 152
9.7..... Commandes de support 154
9.8.1 Configuration du cluster 155
9.8.2 Configuration d’un nouveau module. 155
9.8.3 Snapshot d’un module. 156
10.. Administration avancée. 157
10.1... Variables d'environnement et répertoires SafeKit 157
10.2... Processus et services SafeKit 159
10.3... Paramétrage du pare-feu. 160
10.3.1 Paramétrage du pare-feu en Linux. 160
10.3.2 Paramétrage du pare-feu en Windows 161
10.4... Configuration au boot et au shutdown en Windows 165
10.4.1 Procédure automatique. 165
10.4.2 Procédure manuelle. 165
10.5... Sécurisation des communications internes au module. 166
10.5.1 Configuration avec la console web de SafeKit 166
10.5.2 Configuration en ligne de commandes 166
10.5.3 Configuration avancée. 167
10.6... Configuration du service web de SafeKit 168
10.6.1 Fichiers de configuration. 168
10.6.2 Configuration des ports de connexion. 170
10.6.3 Configuration de HTTP/HTTPS et de l’authentification utilisateur 171
10.7... Notification par mail 171
10.8... Surveillance SNMP. 172
10.8.1 Surveillance SNMP en Windows. 172
10.8.2 Surveillance SNMP en Linux. 172
10.9... Journal des commandes du serveur SafeKit 174
10.10. Messages SafeKit dans le journal système. 174
11.. Sécurisation du service web de SafeKit 177
11.1.1 Configuration par défaut 178
11.1.2 Configurations prédéfinies. 178
11.2... Configuration HTTP. 179
11.2.1 Configuration par défaut 179
11.2.2 Configuration non sécurisée basée sur un rôle identique pour tous. 181
11.3... Configuration HTTPS. 183
11.3.1 Configuration HTTPS avec la PKI SafeKit 183
11.3.2 Configuration HTTPS avec une PKI externe. 191
11.4... Configuration de l’authentification utilisateur 195
11.4.1 Configuration l’authentification à base de fichier 196
11.4.2 Configuration de l’authentification à base de serveur LDAP/AD. 198
11.4.3 Configuration de l’authentification à base de serveur OpenID Connect 201
12.. Cluster.xml pour la configuration du cluster SafeKit 205
12.1... Le fichier cluster.xml. 205
12.1.1 Cluster.xml exemple. 205
12.1.2 Cluster.xml syntaxe. 206
12.1.3 <lans>, <lan>, <node> attributs. 206
12.2... Configuration du cluster SafeKit 208
12.2.1 Configuration avec la console web de SafeKit 208
12.2.2 Configuration en ligne de commande. 208
12.2.3 Changements de configuration. 209
13.. Userconfig.xml pour la configuration du module. 211
13.1... Macro définition (<macro> tag) 212
13.2... Module ferme ou miroir (<service> tag) 212
13.2.3 <service> Attributs. 213
13.3... Heartbeats (<heart>, <heartbeat > tags) 215
13.3.3 <heart>, <heartbeat attributs. 216
13.4... Topologie d'une ferme (<farm>, <lan> tags) 217
13.4.3 <farm>, <lan> Attributs. 218
13.5... Adresse IP virtuelle (<vip> tag) 219
13.5.1 <vip> Exemple dans une architecture ferme. 219
13.5.2 <vip> Exemple dans une architecture miroir 219
13.5.3 Alternative à <vip> pour des serveurs dans des réseaux IP différents. 219
13.5.6 <loadbalancing_list>, <group>, <cluster>, <host> Attributs 224
13.6... Réplication de fichiers (<rfs>, <replicated> tags) 226
13.6.3 <rfs>, <replicated> Attributs. 228
13.7... Activer les scripts du module (<user>, <var> tags) 245
13.7.3 <user>, <var> Attributs. 246
13.8... Hostname virtuel (<vhost>, <virtualhostname> tags) 246
13.8.3 <vhost>, <virtualhostname> Attributs. 247
13.8.4 <vhost> Description. 247
13.9... Détection de la mort de processus ou de services (<errd>, <proc> tags) 248
13.9.3 <errd>, <proc> Attributs 249
13.10. Checkers (<check> tags) 255
13.11. TCP checker (<tcp> tags) 256
13.12. Ping checker (<ping> tags) 257
13.13. Interface checker (<intf> tags) 258
13.14. IP checker (<ip> tags) 259
13.15. Custom checker (<custom> tags) 261
13.15.3 <custom> Attributs 261
13.16. Module checker (<module> tags) 263
13.16.3 <module> Attributs. 263
13.17. Splitbrain checker (<splitbrain> tag) 264
13.17.1 <splitbrain> Exemple. 265
13.17.2 <splitbrain> Syntaxe. 265
13.17.3 <splitbrain> Attributs. 265
13.18. Failover machine (<failover> tag) 266
13.18.1 <failover> Exemple. 266
13.18.2 <failover> Syntaxe. 266
13.18.3 <failover> Attributs. 267
13.18.4 <failover> Commandes 267
13.18.5 Règles de failover 268
14.. Scripts du module pour la configuration du module. 271
14.1.1 Scripts start/stop. 271
14.2... Automate d’exécution des scripts 273
14.3... Variables d’environnement et arguments passés aux scripts 274
14.4... Commandes spéciales SafeKit pour les scripts 274
14.4.1 Commandes pour Windows. 274
14.4.2 Commandes pour Linux. 275
14.4.3 Commandes pour Windows et Linux. 276
15.. Exemples de userconfig.xml et scripts du module. 277
15.1... Exemple du module générique miroir avec mirror.safe. 278
15.2... Exemple du module générique ferme avec farm.safe. 279
15.3... Un module ferme dépendant d'un module miroir 281
15.4... Exemple d'un flux de réplication dédié. 282
15.5... Exemples de partage de charge dans un module ferme. 282
15.5.1 Exemple d'un load balancing TCP. 282
15.5.2 Exemple de load balancing UDP. 283
15.5.3 Exemple d'un load balancing multi-groupes 284
15.6... Exemple d'un hostname virtuel avec vhost.safe. 285
15.7... Détection de la mort de processus avec softerrd.safe. 287
15.8... Exemple d’un checker TCP. 289
15.9... Exemple d'un checker ping. 289
15.10. Exemple d'un checker d'interface réseau. 289
15.11. Exemple d’IP checker 290
15.12. Exemple d'un checker customisé avec customchecker.safe. 291
15.13. Exemple d'un checker de module avec leader.safe et follower.safe. 293
15.14. Exemple de notification par mail avec notification.safe. 294
15.14.1 Notification sur démarrage et arrêt du module. 294
15.14.2 Notification sur changement d’état du module. 295
16.. Cluster SafeKit dans le cloud. 299
16.1... Cluster SafeKit dans Amazon AWS. 299
16.1.1 Cluster miroir dans AWS. 300
16.1.2 Cluster ferme dans AWS. 301
16.2... Cluster SafeKit dans Microsoft Azure. 303
16.2.1 Cluster miroir dans Azure. 304
16.2.2 Cluster ferme dans Azure. 305
16.3... Cluster SafeKit dans Google GCP. 306
16.3.1 Cluster miroir dans GCP. 307
16.3.2 Cluster ferme dans GCP. 309
Index des messages du journal du module. 315
1. Architectures de haute disponibilité
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 22
1.1 Définition du cluster SafeKit
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. La définition du cluster se fait via la console web comme décrit en section 3.2 page 39. La console web de SafeKit offre la possibilité d’administrer un ou plusieurs clusters SafeKit.
1.2 Définition d'un module SafeKit -intégration d'application
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
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
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.
1.3.2 Etape 1. Etat normal d'un miroir
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.
1.3.3 Etape 2. Reprise sur 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.
1.3.4 Etape 3. Réintégration après panne
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.
1.3.5 Etape 4. Retour à la normale
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.
1.3.6 Solution de réplication synchrone qui ne perd pas de données en cas de panne
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.
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
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.
1.4.2 Principe d'une adresse IP virtuelle avec partage de charge réseau
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.
1.4.3 Critères de partage de charge pour les services web à état et sans état
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.
1.5 Combiner les modules miroir et ferme
1.5.1 Actif/Actif : 2 modules miroirs en backup l'un de l'autre
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.
1.5.2 N-1 : N modules miroirs avec un seul backup
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.
1.5.3 Mixte ferme/miroir : partage de charge réseau, réplication de fichiers et reprise sur panne
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é !
1.6 La plus simple solution pour la haute disponibilité dans le cloud
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 299.
1.6.1 Cluster miroir dans Microsoft Azure, Amazon AWS et Google GCP
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
1.6.2 Cluster ferme dans Microsoft Azure, Amazon AWS et Google GCP
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. Installation
2.1 « Installation de SafeKit » page 25
2.2 « Recommandation pour une installation d'un module miroir » page 30
2.3 « Recommandation pour une installation d'un module ferme » page 31
2.4 « Upgrade de SafeKit » page 31
2.5 « Désinstallation complète de SafeKit » page 34
2.6 « Documentation produit » page 35
2.1 Installation de SafeKit
2.1.1 Télécharger le package
1. Se connecter à https://support.evidian.com/safekit
2. Aller dans <Version 8.2>/Platforms/<Your platform>/Current versions
3. Télécharger le package
En Windows, deux packages sont disponibles :
ü un package Windows
Installer (safekit_windows_x86_64_8_2_x_y.msi)
Il dépend du runtime C VS2022 qui doit être préalablement installé
ü un bundle exécutable autonome (safekit_windows_x86_64_8_2_x_y.exe) qui contient l’installation SafeKit et le runtime C VS2022
Choisir l’un ou l’autre package suivant que le runtime C VS2022 est installé ou non.
2.1.2 Répertoires d'installation et espace disque
SafeKit est installé dans :
SAFE |
sur Windows SAFE=C:\safekit sur Linux SAFE=/opt/safekit |
Espace disque libre au minimum : 97MB
|
SAFEVAR |
sur Windows SAFEVAR= C:\safekit\var si %SYSTEMDRIVE%=C: sur Linux SAFEVAR=/var/safekit |
Espace disque libre minimum : 20MB + au moins 20MB (jusqu’à 3 GB) par module pour les dumps
|
2.1.3 Procédure d’installation
2.1.3.1 Sur Windows en tant qu'Administrateur
2.1.3.1.1 Installation du package SafeKit
1. Se loguer en tant qu’administrateur
2. Localiser le fichier téléchargé safekit_windows_x86_64_8_2_x_y.msi (ou safekit_windows_x86_64_8_2_x_y.exe)
- Installer en mode interactif en double-cliquant dessus puis dérouler l’assistant d’installation.
Il est aussi possible d’installer le .msi en mode non interactif en exécutant
dans un terminal PowerShell : msiexec
/qn /i safekitwindows_8_2_x_y.msi
2.1.3.1.2 Setup du pare-feu
Cette étape est obligatoire pour permettre les communications entre les nœuds du cluster SafeKit et avec la console web.
1. Ouvrir une console PowerShell en tant qu’administrateur
2. Aller à la racine du répertoire d’installation de SafeKit SAFE (par défaut SAFE=C:\safekit si %SYSTEMDRIVE%=C:)
cd c:\safekit
3. Exécuter .\private\bin\firewallcfg.cmd 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
2.1.3.1.3 Initialisation du service web SafeKit
Cette étape est obligatoire pour initialiser la configuration par défaut du service web, qui est utilisé par la console web et la commande safekit globale. Par défaut, il est en effet nécessaire de s’authentifier pour accéder au service. Le script suivant facilite sa mise en œuvre en l’initialisant avec l’utilisateur admin et le mot de passe donné pwd, par exemple.
1. Ouvrir une console PowerShell en tant qu’administrateur
2. Aller à la racine du répertoire d’installation de SafeKit SAFE (par défaut SAFE=C:\safekit si %SYSTEMDRIVE%=C:)
cd c:\safekit
3. Exécuter .\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 179.
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 lors de l’installation précédente de SafeKit 8.2. Si elle est réappliquée, cela aura pour effet de réinitialiser le mot de passe avec la nouvelle valeur. |
2.1.3.2 Sur Linux en tant que root
2.1.3.2.1 Installation du package SafeKit
- Se loguer en tant que root
- Localiser le fichier téléchargé safekitlinux_x86_64_8_2_x_y.bin
- Exécuter chmod +x safekitlinux_x86_64_8_2_x_y.bin
- Exécuter ./safekitlinux_x86_64_8_2_x_y.bin
Cela extrait le package SafeKit et le script safekitinstall
- Installer en mode interactif en exécutant ./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 yes, 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. 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 179.
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
- Installer en mode non interactif en exécutant :
./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)
2.1.3.2.2 Setup du pare-feu
Cette étape est obligatoire pour permettre les communications entre les nœuds du cluster SafeKit et avec la console web.
Aucune action supplémentaire n’est requise lorsque la configuration automatique du pare-feu a été appliquée pendant l'installation. Sinon, voir la section 10.3 page 160.
2.1.3.2.3 Initialisation du service web SafeKit
Cette initialisation est nécessaire pour la console web 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 179.
2.1.4 Utilisation de la console et de la ligne de commande SafeKit
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.
2.1.4.1 La console SafeKit
1. Démarrer un navigateur web (Microsoft Edge, Firefox ou Chrome)
2. Le connecter à l’URL http://host:9010 (où host est l’adresse IP ou le nom d’un nœud SafeKit)
3. Dans la page de login, s’identifier avec admin comme nom d’utilisateur et le mot de passe que vous avez donné pendant l’initialisation juste au-dessus (par exemple, pwd)
4. Une fois la console chargée, l’utilisateur admin a accès à la Supervision et à la Configuration dans la barre latérale de navigation, car il a le rôle Admin par défaut
Pour une description complète, voir la section 3 page 37.
2.1.4.2 La ligne de commande SafeKit
Elle repose sur la commande unique safekit située à la racine du répertoire d’installation de 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 globale ou distribuée.
Pour utiliser la commande safekit :
1. Ouvrir une console PowerShell en tant qu’administrateur 2. Aller à la racine du répertoire d’installation de SafeKit SAFE (par défaut SAFE=C:\safekit si %SYSTEMDRIVE%=C:) cd c:\safekit 3. Exécuter .\safekit.exe <arguments> |
|
En Linux |
1. Ouvrir une console Shell en tant que root 2. Aller à la racine du répertoire d’installation de SafeKit SAFE (par défaut SAFE=/opt/safekit) cd /opt/safekit 3. Exécuter ./safekit <arguments> |
Pour une description complète de la commande, voir 9 page 143.
2.1.5 Clés de licence SafeKit
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 134)
Sauvegarder la clé de préférence dans le fichier SAFE/conf/license.txt (ou n’importe quel fichier dans SAFE/conf) sur chaque serveur
Si des fichiers dans SAFE/conf contiennent plusieurs clés, la clé la plus favorable sera choisie.
Vérifier la conformité de la clé avec la commande SAFE/safekit level
2.1.6 Caractéristiques spécifiques à chaque OS
2.1.6.1 Windows
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 165)
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
2.1.6.2 Linux
En Linux, le package SafeKit dépend d’autres packages système. La plupart sont installés automatiquement, excepté ceux spécifiques à la mise en œuvre du load-balancing dans une ferme et de la réplication de fichiers dans un miroir.
Pour la liste à jour des packages nécessaires, voir le SafeKit Release Notes.
L'utilisateur safekit et un groupe safekit sont créés : tous les utilisateurs appartenant au groupe safekit et l'utilisateur root peuvent exécuter des commandes SafeKit.
Dans une ferme avec load balancing, le module kernel vip est compilé au moment de la configuration du module. Pour réussir la compilation, des packages Linux doivent être installés ainsi que le package devel correspondant à la version du kernel installé (kernel-devel).
En ferme avec load balancing 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 80)
En mode miroir, si utilisation de la réplication de fichiers, installer le package nfs-util et retirer le package logwatch (rpm -e logwatch) ; sinon le service NFS et SafeKit seront arrêtés toutes les nuits
2.2 Recommandation pour une installation d'un module miroir
ip 1.1 ip 1.2
|
virtual ip = ip 1.10
miroir(app1)= app1
dir1 dir1 |
2.2.1 Prérequis matériel
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
2.2.2 Prérequis réseau
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 219
2.2.3 Prérequis application
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, définir 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
2.2.4 Prérequis réplication de fichiers
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 29
2.3 Recommandation pour une installation d'un module ferme
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 |
2.3.1 Prérequis matériel
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
2.3.2 Prérequis réseau
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 13.5.3 page 219
voir aussi la section 2.1.6 page 29
2.3.3 Prérequis application
Les mêmes prérequis que pour un module miroir décrits en 2.2.3 page 30.
2.4 Upgrade de SafeKit
2.4.1 Quand procéder à un upgrade ?
Si vous rencontrez un problème avec SafeKit, consulter le Software Release Bulletin pour consulter la liste des fixs produits.
Si vous souhaitez profiter de nouvelles fonctionnalités, consulter le SafeKit Release Notes. Ce document vous indiquera également si vous êtes dans le cas d'un upgrade majeur (ex. 7.5 vers 8.2) 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 nœuds du même cluster doivent être upgradé.
2.4.2 Préparer l'upgrade
1. Noter l'état "on" ou "off" des services et modules SafeKit démarrés automatiquement au boot
safekit boot webstatus ; safekit boot status -m AM (où AM est le nom du module) et en Windows : safekit boot snmpstatus ;
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)
2.4.3 Procédure de désinstallation
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
In Windows |
Désinstaller via Control Panel-Add/Remove Programs applet |
In Linux |
Utiliser 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.
2.4.4 Procédure de réinstallation et post-installation
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 29)
3. Si la console web est utilisée, vider le cache du navigateur web et forcer l’actualisation des pages HTML
4. Depuis SafeKit 8.2.1, les modules précédemment configurés sont automatiquement reconfigurés sur upgrade.
Cependant, vous pouvez avoir à reconfigurer quand même le module pour appliquer d’éventuelles évolutions de configuration apportées par la nouvelle version (consulter le SafeKit Release Notes). Reconfigurer le module soit avec :
ü la console web en naviguant sur Configuration/Configuration des modules/Configurer le module/
ü la console web en entrant directement l’URL http://host:9010/console/fr/configuration/modules/AM/config/
ü 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
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 la commande safekit boot –m AM on (où AM est le nom du module)
6. Redémarrer les modules
Module miroir |
Le module doit être démarré en primaire sur le nœud ayant les fichiers répliqués à jour (ancien PRIM ou ALONE) : ü Avec la console web
en naviguant sur Supervision/ ü Avec la commande safekit prim –m AM (remplacer AM par le nom du module) Vérifier que l'application fonctionne correctement une fois le module dans l'état ALONE avant de démarrer l'autre nœud. Sur l’autre nœud (ancien SECOND), le module doit être démarré en secondaire : ü Avec la console web
en naviguant sur Supervision/ ü Avec la commande safekit second –m AM (remplacer AM par le nom du module) Une fois ce premier démarrage réalisé en sélectionnant les nœuds primaire et secondaire, les démarrages suivants peuvent être effectués avec : ü Avec la console web
en naviguant sur Supervision/ ü Avec la commande safekit start –m AM (remplacer AM par le nom du module) |
Module ferme |
Démarrer le module soit avec : ü Avec la console web
en naviguant sur Supervision/ ü Avec la commande safekit start –m AM (remplacer AM par le nom du module) |
De plus, dans les cas exceptionnels où vous aviez modifié la configuration par défaut du service web SafeKit ou de la surveillance SNMP :
Le service web de SafeKit safewebserver
ü Si son démarrage automatique avait été désactivé, désactivez-le à nouveau avec la commande safekit boot weboff
ü Si vous aviez modifié des fichiers de configuration et que ceux-ci ont évolué dans la nouvelle version, vos modifications ont été sauvegardées dans SAFE/web/conf avant d'être écrasées par la nouvelle version. Le report de votre ancienne configuration dans la nouvelle version peut nécessiter quelques adaptations. Pour plus de détails sur la configuration par défaut et toutes les configurations prédéfinies, voir la section 11 page 177.
Pour les configurations HTTPS et login/mot de passe, les certificats et les fichiers user.conf/group.conf générés pour la version précédente devraient être compatibles.
La surveillance SNMP de SafeKit
ü En Windows, si son démarrage automatique avait été activé, réactivez-le à nouveau avec la commande safekit boot snmpon
ü Si vous aviez modifié des fichiers de configuration et que ceux-ci ont évolué dans la nouvelle version, vos modifications ont été sauvegardées dans SAFE/snmp/conf avant d'être écrasées par la nouvelle version. Le report de votre ancienne configuration dans la nouvelle version peut nécessiter quelques adaptations. Pour plus de détails, voir la section 10.8 page 172.
2.5 Désinstallation complète de SafeKit
Suivre la procédure décrite ci-dessous pour désinstaller complètement SafeKit.
2.5.1 Sur Windows en tant qu’Administrateur
1. Arrêter tous les modules à l’aide de la commande safekit shutdown
2. Fermer tous les éditeurs, explorateur de fichiers, ou terminaux sous SAFE et SAFEVAR (SAFE=C:\safekit si %SYSTEMDRIVE%=C: ; SAFEVAR=C:\safekit\var si %SYSTEMDRIVE%=C:)
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 165
7. Défaire les modifications manuelles effectuées sur le pare-feu
Voir section 10.3 page 160
2.5.2 Sur Linux en tant que root
1. Arrêter tous les modules à l’aide de la commande safekit shutdown
2. Fermer tous les éditeurs, explorateur de fichiers, ou terminaux sous SAFE et SAFEVAR (SAFE=/opt/safekit ; SAFEVAR=/var/safekit)
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
6. Supprimer, l'utilisateur/groupe créés par l'installation précédente (par défaut safekit/safekit) avec les commandes :
userdel safekit
groupdel safekit
2.6 Documentation produit
La solution SafeKit y est entièrement détaillée. |
|
Reportez-vous à cette formation en ligne pour un démarrage rapide de l'utilisation de SafeKit. |
|
Il contient : ü Dernières instructions d'installation ü Changements majeurs ü Restrictions et problèmes connus ü Instructions de migration |
|
Bulletin listant les packages SafeKit 8.2 avec la description des changements et des problèmes corrigés. |
|
Liste des problèmes et restrictions connus de SafeKit. D'autres KB sont accessibles sur le site support Evidian, mais sont accessibles uniquement aux utilisateurs enregistrés. Pour plus de détails sur le site support, voir section 8 page 133. |
|
Il s'agit de ce guide. Veillez à consulter le guide correspondant à votre numéro de version SafeKit. Celui-ci est installé avec le package SafeKit et accessible via la console web sous /Guide de l’utilisateur. Le lien ci-contre renvoie à la dernière version de ce guide. |
3. La console web de SafeKit
3.1 « Démarrer la console web » page 37
3.2 « Configurer un cluster SafeKit » page 39
3.3 « Configurer un module » page 45
3.4 « Superviser un module » page 54
3.5 « Snapshots d’un module pour le support » page 66
3.6 « Sécuriser la console web » page 67
La console web et l’API SafeKit ont évolué en SafeKit 8 par rapport aux versions précédentes. Par conséquent, la console livrée avec SafeKit 8 n’est capable d’administrer que des serveurs avec SafeKit 8 ; de plus, ceux-ci ne peuvent être administrés avec une ancienne console.
Consulter le Release Notes, sur https://support.evidian.com/safekit, pour la liste des restrictions et problèmes connus avec la console web. |
3.1 Démarrer la console web
La console web de SafeKit offre la possibilité d’administrer un cluster 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.
3.1.1 Lancer un navigateur web
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 à 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
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 en fonction de la langue sélectionnée depuis la console
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 :
1. Ouvrir le navigateur sur n’importe quelle page web, et presser en même temps les touches Ctrl, Shift et Suppr
2. Cela ouvre une fenêtre de dialogue : cocher tous les items puis cliquer le bouton Nettoyer maintenant ou Supprimer.
3. Fermer le navigateur, arrêter tous les processus du navigateur qui continueraient à tourner en tâche de fond et le relancer pour la charger la console web
3.1.2 Connecter la console à un serveur SafeKit
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 179.
1. Lancer un navigateur web (Microsoft Edge, Firefox, or Chrome)
2. Le connecter à l’URL http://host:9010 (host est le nom ou l’adresse IP d’un des serveur SafeKit). Si HTTPS est configuré, il y a une redirection automatique sur https://host:9453.
Le serveur SafeKit sur laquelle la console est connectée (host dans l’URL) est nommé nœud de connexion. Ce nœud agit en tant que proxy pour communiquer au compte de la console avec tous les autres serveurs SafeKit.
Vous pouvez vous connecter à n'importe quel nœud du cluster puisque la console offre une vue et des actions globales. En cas d'erreur de connexion avec un nœud, connectez-vous à un autre nœud. |
3. Dans la page de login, s’identifier avec admin comme nom d’utilisateur et le mot de passe que vous avez donné pendant l’initialisation (par exemple, pwd).
4. La console web de SafeKit est chargée
· Quand la console est connectée à un serveur SafeKit sur lequel le cluster est configuré, le nom du nœud correspond au serveur (tel que défini dans la configuration du cluster) est affiché dans l’entête. Il s’agit du nœud de connexion (node1 dans l’exemple). Si le cluster n’est pas encore configuré, aucun nom n’est affiché. · (1) Cliquer sur pour ouvrir le menu afin d’accéder au Guide de l’utilisateur SafeKit, sélectionner la langue, activer/désactiver le mode sombre et se déconnecter. · (2) Cliquer sur pour réduire ou développer la barre latérale de navigation. · (3) Cliquer sur Configuration pour configurer le cluster et les modules. La configuration n'est autorisée qu'aux utilisateurs ayant le rôle Admin. Par défaut, l’utilisateur admin a le rôle Admin. · (4) Cliquer sur Supervision pour superviser et contrôler les modules configurés. La supervision est autorisée aux utilisateurs qui ont les rôles Admin, Control et Monitor. Avec le rôle Monitor, les actions sur les modules (démarrage, arrêt...) sont interdites. |
La console web offre des aides contextuelles en cliquant sur l’icône. |
3.2 Configurer un cluster SafeKit
Le cluster SafeKit doit être défini avant d'installer, de configurer ou de démarrer un module SafeKit.
Le cluster est défini par un ensemble de réseaux et les adresses, sur ces réseaux, d’un groupe de serveurs SafeKit, appelés nœuds. Ces nœuds mettent en œuvre un ou plusieurs modules. Un serveur n’est pas obligatoirement connecté à tous les réseaux du cluster, mais tous les serveurs sont connectés à au moins un.
La configuration du cluster est sauvegardée du côté des serveurs dans le fichier cluster.xml (voir section 12 page 205). Pour que le fonctionnement soit correct, il est impératif que la configuration du cluster soit identique sur tous les nœuds.
Il est préférable de définir complètement tous les nœuds du cluster avant de configurer les modules. En effet, la modification de la configuration du cluster peut impacter la configuration et l’exécution des modules déjà installés. |
La page d’accueil de la configuration du cluster est accessible :
ü Directement via l’URL http://host:9010/console/fr/configuration/cluster
Ou
ü En naviguant dans la console via Configuration/Configuration du cluster
Si le cluster n'est pas encore configuré, l'assistant de configuration du cluster s'ouvre automatiquement au chargement de la console web.
3.2.1 L’assistant de configuration du cluster
Ouvrir l’assistant de configuration :
ü directement via l’URL http://host:9010/console/fr/configuration/cluster/config
Ou
ü en naviguant dans la
console via Configuration/Configuration
du cluster/
Configurer
le cluster
L’assistant de configuration du cluster est un formulaire à étapes :
1. Éditer la configuration du cluster décrit page 41
2. Vérifier le résultat décrit page 43
3. pour Quitter l’assistant de configuration du cluster
3.2.1.1 Éditer la configuration du cluster
· (1) Remplir le formulaire pour affecter d’abord le nom convivial pour le lan. Ce nom est utilisé plus tard pour configurer les réseaux de surveillance utilisées par un module. Cliquer sur pour ajouter un nouveau nœud /lan ou sur pour supprimer un nœud/lan du 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. L'icône à côté de l'adresse reflète l’accessibilité du nœud.
· 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. · (3) Si besoin, cliquer sur Configuration avancée pour basculer sur l’édition du cluster au format XML. Cliquer sur pour ouvrir le Guide de l’utilisateur SafeKit sur la description de la configuration dans le fichier cluster.xml. · Cliquer sur Recharger pour abandonner vos modifications en cours et recharger la configuration d’origine. · (4) Une fois l'édition terminée, cliquez sur Sauvegarder et appliquer pour enregistrer et appliquer la configuration à tous les nœuds du cluster. |
Si besoin, vous pouvez réappliquer la configuration du cluster sur tous les nœuds sans la modifier. |
3.2.1.2 Vérifier le résultat
· (1) Lire le résultat de la configuration sur chaque nœud : ü Succès signifie que la configuration a réussi. ü Échec, signifie que la configuration a échoué. Cliquer sur 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, Sauvegarder et appliquer à nouveau. · (2) Cliquer sur Configurer les modules pour quitter l’assistant de configuration du cluster et naviguer vers la configuration des modules. Ou · Cliquer sur pour quitter l’assistant de configuration du cluster et aller sur la page d’accueil de configuration du cluster. |
3.2.2 Page d’accueil de configuration du cluster
Lorsque le cluster est configuré, la page d’accueil de la configuration du cluster est accessible.
L’ouvrir :
ü Directement avec http://host:9010/console/fr/configuration/cluster
Ou
ü En naviguant dans la console sur Configuration/Configuration du cluster
Dans cet exemple, la console est chargée depuis 10.0.0.107 qui correspond au nœud node1 dans le cluster existant. Il s’agit du nœud de connexion.
· (1) Cliquer sur Configuration dans la barre de navigation latérale · (2) Cliquer sur l’onglet Configuration du cluster · Les nœuds configurés dans le cluster sont listés avec leur date de configuration · (3) Cliquer sur pour afficher des détails sur le nœud (nom des lans et adresses définies dans la configuration du cluster…) · (4) Cliquer sur l’un des boutons : ü pour modifier la configuration du cluster ou réappliquer la configuration courante. Cela ouvre l’assistant de configuration du cluster et charge la configuration courante depuis le nœud de connexion. ü pour télécharger la configuration du cluster au format XML depuis le nœud de connexion. ü pour déconfigurer le cluster sur un ou plusieurs nœuds. |
3.3 Configurer un module
Une fois le cluster configuré, il est possible de configurer un nouveau module sur le cluster. La page d’accueil de la configuration des modules est accessible :
ü directement via l’URL http://host:9010/console/fr/configuration/modules
Ou
ü en naviguant dans la console via Configuration/Configuration des modules
S’il n’y a aucun module configuré, la console présente automatiquement la page pour configurer un Nouveau Module.
3.3.1 Sélectionner le nouveau module à configurer
Dans cet exemple, la console est chargée depuis 10.0.0.107 qui correspond au nœud node1 dans le cluster existant. Il s’agit du nœud de connexion.
· Cliquer sur Configuration dans la barre de navigation latérale · (2) Cliquer sur l’onglet Configuration des modules · (3) Cliquer sur Nouveau module · La page propose de sélectionner un nouveau module parmi plusieurs propositions visibles en cliquant sur : ü Les Principaux modules, notamment les modules génériques mirror.safe et farm.safe à utiliser pour l'intégration d'une nouvelle application dans une architecture miroir ou ferme. Sont présentés les modules stockés sur le nœud de connexion, node1, sous SAFE/Application_Modules/generic, SAFE/Application_Modules/demo et SAFE/Application_Modules/published. ü Les Modules archivés sur le nœud de connexion qui sont sauvegardés lorsqu’un module est désinstallé sur ce nœud. Ils sont récupérés depuis node1 sous SAFE/Application_Modules/backup. ü D’Autres modules qui sont des exemples d’utilisation de fonctionnalités de SafeKit dans des modules fournis en vue de tests uniquement. Ils sont récupérés depuis node1 sous SAFE/Application_Modules/other. ü Un module stocké localement accessible depuis Charger un module. · (4) Sélectionner un module à configurer parmi les propositions listées ci-dessus. Dans l’exemple, mirror.safe. · (5) Cliquer sur le bouton Configurer le nouveau module. · Un dialogue s’ouvre pour saisir le nom du nouveau module · (6) Entrer le nom du nouveau module · (7) Cliquer sur Confirmer · L’assistant de configuration du module est ouvert. Celui-ci est décrit ci-dessous. |
3.3.2 L’assistant de configuration du module
L’assistant de configuration du module est un formulaire à étapes :
1. Éditer la configuration du module décrit page 47
2. Éditer les scripts du module (Optionnel) décrit page 48
3. Activer le cryptage des communications (Optionnel) décrit page 49
4. Sauvegarder et appliquer décrit page 50
5. Vérifier le résultat décrit page 51
6. pour Quitter l’assistant de configuration du module
Notez que la reconfiguration d’un module ne peut être appliquée qu'aux nœuds sur lesquels le module en question n'est pas démarré. Il convient donc d'arrêter le module avant de lancer l'assistant de configuration.
Si besoin, vous pouvez réappliquer la configuration du module sur tous les nœuds sans la modifier. |
3.3.2.1 Éditer la configuration du module
Ci-dessous l'exemple de l'édition de la configuration du module miroir mirror.safe. · (1) Remplir le formulaire pour affecter les valeurs aux différents composants, en ajouter ou en supprimer. Cliquer sur pour ouvrir le panneau détaillé pour chaque composant. Ce formulaire permet de saisir uniquement les principaux paramètres de configuration du module.
· (2) Pour une configuration avancée du module, exhaustive par rapport au formulaire, cliquer sur Configuration avancée. Cela bascule sur l’édition du fichier de configuration du module au format XML, userconfig.xml. Cliquer sur pour ouvrir le Guide de l’utilisateur SafeKit sur la description de la configuration des différents composants dans le fichier userconfig.xml. · Si besoin, cliquer sur Recharger pour abandonner vos modifications et recharger la configuration complète d’origine (y compris les scripts si ceux-ci avaient été modifiés dans l’étape suivante). · (3) Une fois l’édition de la configuration du module achevée, cliquer sur Étape suivante. |
3.3.2.2 Éditer les scripts du module
Ci-dessous l'exemple de l'édition des scripts du module miroir mirror.safe.
· (1) Cliquer sur start_prim ou stop_prim pour l’éditer et y insérer le démarrage/arrêt de votre application. Cliquer sur pour copier le contenu du script et l’éditer avec votre éditeur syntaxique favori. Une fois fait, copier le contenu mis à jour dans le champ d’input avec . · (2) Si besoin, cliquer sur Configuration Avancée pour lister les autres scripts du module et les éditer (prestart, poststop, scripts pour les checkers…). Cliquer sur pour ouvrir le Guide de l’utilisateur SafeKit sur la description des scripts du module. · Si besoin, cliquer sur Recharger pour abandonner vos modifications et recharger la configuration complète d’origine (y compris la configuration du module si celle-ci avait été modifiée dans l’étape précédente). · (3) Une fois l’édition des scripts du module achevée, cliquer sur Étape suivante. |
3.3.2.3 Activer le cryptage des communications
Le cryptage des communications internes du module entre les nœuds du cluster, est activé par défaut. Pour plus de détails, voir section 10.5 page 166. · (1) Cliquer Activer pour activer ou désactiver le cryptage des communications du module.
Pour générer de nouvelles clés de cryptage, il faut : 1. Désactiver le cryptage, puis Sauvegarder et appliquer la configuration sur tous les nœuds 2. Activer le cryptage, puis Sauvegarder et appliquer la configuration sur tous les nœuds · Si besoin, cliquer sur Recharger pour abandonner vos modifications et recharger la configuration complète d’origine (y compris la configuration du module et les scripts si ceux-ci avaient été modifiées dans les étapes précédentes). · (2) Une fois cette étape achevée, cliquer sur Étape suivante. |
3.3.2.4 Sauvegarder et appliquer
Étape de sélection des nœuds concernés par la configuration.
· (1) Cochez/décochez pour sélectionner/désélectionner les nœuds. Veuillez noter que le nœud de connexion (node1 dans l'exemple) est obligatoire. Il y a 2 cas où Sauvegarder et appliquer est désactivé :
Dans les deux cas, décochez le nœud ou cliquer sur Sauvegarder et vérifier pour l'appliquer plus tard, après avoir arrêté le module ou résolu le problème de communication. · (2) Cliquer sur Sauvegarder et vérifier pour sauvegarder la configuration modifiée sur le nœud de connexion et vérifier sa cohérence. Il passe ensuite à l'étape suivante pour afficher le résultat de cette opération. Une fois cette opération terminée, toutes les modifications sont enregistrées sur le nœud de connexion. L'assistant de configuration peut être quitté et relancé ultérieurement pour appliquer la configuration sauvegardée. Tant que la configuration sauvegardée n'est pas appliquée, la dernière configuration appliquée reste active. · (3) Cliquer sur Sauvegarder et appliquer pour sauvegarder et appliquer la configuration modifiée aux nœuds sélectionnés. Il passe ensuite à l'étape suivante pour afficher le résultat de cette opération. Si l'opération est réussie, la configuration appliquée devient la configuration active du module. |
La configuration du module est sauvegardée du côté serveur sous SAFE/modules/AM (où AM est le nom du module). Lors de la reconfiguration du module, ce répertoire est détruit et écrasé à 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). |
3.3.2.5 Vérifier le résultat
L’exemple ci-dessous montre le résultat de l’opération Sauvegarder et appliquer. La présentation pour Sauvegarder et vérifier est similaire.
· (1) Lire le résultat de l’opération sur chaque nœud : ü Succès signifie que l’opération a réussi ü Échec, signifie que l’opération a échoué. Cliquer sur 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, répéter l’opération depuis l’étape précédente. · (2) Ou cliquer sur Superviser les modules pour quitter l’assistant de configuration du module et naviguer vers la supervision des modules. Ou · (3) Cliquer sur pour quitter l’assistant de configuration du module et aller sur la page d’accueil de configuration des modules. |
3.3.3 Page d’accueil de configuration des modules
Lorsqu’un premier module est configuré, la page d’accueil de la configuration des modules est accessible. Elle permet de visualiser les modules installés sur le cluster et d’accéder à la configuration d’un nouveau module.
L’ouvrir :
ü Directement avec http://host:9010/console/fr/configuration/modules
Ou
ü En naviguant dans la console sur Configuration/Configuration des modules
Dans cet exemple, la console est chargée depuis 10.0.0.107 qui correspond au nœud node1 dans le cluster existant. Il s’agit du nœud de connexion.
· (1) Cliquer sur Configuration dans la barre de navigation latérale. · (2) Cliquer sur l’onglet Configuration des modules. · Les modules installés dans le cluster sont listés avec la date d’application de la configuration et éventuellement la date de sauvegarde d’une configuration qui n’a pas été encore appliquée. · (3) Cliquer sur l’un des boutons associés au module : ü pour modifier sa configuration ou réappliquer sa configuration courante. Cela ouvre l’assistant de configuration du module et charge sa configuration courante depuis le nœud de connexion. ü pour télécharger le .safe, composé de tous les fichiers du module (userconfig.xml, scripts) depuis le nœud de connexion. ü pour reconfigurer le module depuis le contenu d’un .safe stocké localement. ü pour restaurer une ancienne configuration du 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 déconfigurer le module sur un ou plusieurs nœuds, sans le désinstaller. Ses fichiers de configuration sont conservés pour être éventuellement réappliquer plus tard. ü pour désinstaller complètement le module sur un ou plusieurs nœuds. L’ensemble des fichiers de configuration du module sont empaquetés dans un fichier .safe qui est archivé du côté serveur sous SAFE/Application_Modules/backup.
· Pour configurer un nouveau module, cliquer sur Nouveau module. |
3.3.4 Ajouter un script au module
Il se peut que vous deviez ajouter des scripts au module, tels que des custom checkers, à votre configuration actuelle du module.
Dans cet exemple, le script checker.ps1 est ajouté au module mirror.
· (1) Cliquer sur Configuration dans la barre de navigation latérale. · (2) Cliquer sur l’onglet Configuration des modules. · (3) Cliquer sur pour télécharger le mirror.safe sur votre station de travail · (4) Éditer le mirror.safe (qui est un fichier zip) pour ajouter vos scripts sous le répertoire bin (checker.ps1 dans l’exemple). · (5) Charger le mirror.safe modifié (l’extension zip est aussi acceptée). · (6) Cliquer sur pour sélectionner le fichier à charger, puis Confirmer. · L'assistant de configuration du module est lancé avec le contenu de ce fichier. Les nouveaux scripts sont visibles avec la Configuration avancée à l'étape 2. Passez à l'étape 4 pour Sauvegarder et appliquer cette nouvelle configuration. |
3.4 Superviser un module
Une fois un module configuré, vous pouvez superviser son état et exécuter des actions dessus (start, stop…).
La page d’accueil de supervision des modules est accessible :
ü Directement avec http://host:9010/console/fr/monitoring
Ou
ü En naviguant dans la console sur Supervision
Dans cet exemple, la console est chargée à partir de 10.0.0.107, qui correspond à node1 dans le cluster. Il s'agit du nœud de connexion. Deux modules sont configurés : farm et mirror.
· (1) Cliquer sur Supervision dans la barre de navigation latérale · Pour chaque module installé, sont affichés : ü le nom du module et des nœuds sur lesquels il est installé ü l’état du module et son status sur chaque nœud ü une notification pour chaque changement d’état, si l’utilisateur a accordé la permission et l’URL est https or http://localhost Pour sa description, voir 3.4.1 page 56. · (2) Cliquer sur pour ouvrir le menu d’actions (start, stop…) globales sur le module, qui s’appliquent à tous les nœuds (node1, node2 dans l’exemple). (3) Cliquer sur pour ouvrir le menu d’actions (start, stop…) locales sur le module, qui s’appliquent uniquement au nœud (node1 dans l’exemple). Pour leur description, voir 3.4.2 page 57. · (4) Cliquer sur le panneau du nœud (mirror>node1 dans l’exemple) pour ouvrir les détails du module sur ce nœud (journaux, ressources…). Depuis SafeKit 8.2.2, cliquer plutôt sur pour ouvrir/fermer les détails. Pour sa description, voir 3.4.3 page 59. |
· (5) Cliquer sur pour ouvrir/fermer la chronologie des états du module sur tous les nœuds où il est installé.
Pour sa description, voir 3.4.4 page 65.
3.4.1 État et status d’un module
L’état d’un module sur un nœud est l’un des états suivants.
Le module est installé mais non configuré : |
Le nœud ne répond pas 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 section 7.1 page 111. Cela peut également être dû à l'indisponibilité temporaire du nœud de connexion. Dans ce cas, rechargez la console à partir d'un autre nœud SafeKit. |
Le module est configuré et le nœud répond : STOP arrêté (prêt à démarrer) WAIT en attente d’une ressource ALONE primaire sans secondaire (module miroir) PRIM primaire avec secondaire (module miroir) SECOND secondaire avec primaire (module miroir) UP actif (module ferme) Avec les icônes/couleurs associés qui signifient : ou NotReady état bloqué Transient état transitoire Ready état stable Pour la description des changements d’états d’un module miroir, voir section 5.2 page 97. Pour la description des changements d’états d’un module miroir, voir section 6.2 page 108. |
Le status du module est l’un des suivants.
Pour un module miroir, il affiche le status des
répertoires répliqués : Dans le cas particulier du mode dégradé (voir 7.6 page 117), il affiche : |
Pour un module ferme, il affiche la part de partage de charge réseau sur l’IP virtuelle : 0%, 50% or 100% (pour 2 nœuds). |
Lorsque le module (ferme ou miroir) est dans l'état WAIT (NotReady), la raison est affichée, généralement le nom de la règle de failover qui bloque le module jusqu'à ce que la ressource associée repasse de l'état down à l'état up. Pour plus de détails, voir 7.9 page 118. Dans l'exemple ci-dessus, le module est bloqué par la règle de failover nommée c_checkfile. Pour analyser le problème, lisez les journaux et les états des ressources comme décrit plus loin. |
Quand le nœud ne répond pas, le status est erreur de connexion. |
3.4.2 Menus de contrôle d’un module
Contrôler un module miroir
Dans cet exemple, le module mirror est configuré sur node1 et node2.
· (1) Cliquer sur pour ouvrir le menu d’actions sur node1. · (2) Utiliser Forcer le démarrage lorsque vous devez décider quel nœud doit démarrer en primaire ou secondaire. Par exemple, au 1er démarrage d’un module miroir, vous devez Forcer le démarrage /En primaire le nœud qui a les répertoires répliqués à jour. · (3) pour les démarrages suivants, cliquer sur Démarrer, car SafeKit mémorise le dernier nœud à jour. · Cliquer sur Debug pour télécharger les journaux ou snapshots du module depuis un seul nœud, ou depuis tous les nœuds.
Se référer aux sections listées ci-dessous : ü Pour le premier démarrage d’un module miroir, voir section 5.3 page 98 ü Pour le démarrage d’un module miroir avec les données à jour, voir section 5.5 page 100 ü Pour continuer les tests, voir section 4 page 69. ü Pour comprendre et vérifier le bon fonctionnement d'un module miroir, voir section 5 page 95 |
Contrôler un module ferme
Dans cet exemple, le module farm est configuré sur node1 et node2. · (1) Cliquer sur pour ouvrir le menu d’actions globales. · (2) Cliquer sur Start pour démarrer le module sur node1 et node2. · (3) Cliquer sur pour ouvrir le menu et exécuter des actions uniquement sur node2. · Cliquer sur Debug pour télécharger les journaux ou snapshots du module depuis un seul nœud, ou depuis tous les nœuds. Se référer aux sections listées ci-dessous : ü Pour continuer les tests, voir section 4 page 69. ü Pour comprendre et vérifier le bon fonctionnement d'un module ferme, voir section 6 page 107 |
3.4.3 Détails du module
Vous pouvez afficher les détails d'un module sur un nœud :
ü Directement via l’URL http://host:9010/console/fr/monitoring /modules/AM/nodes/node (remplacer node par le nom du nœud et AM par le nom du module)
Ou
ü En naviguant dans la console sur Supervision/Cliquer sur module>nœud
Le module>nœud sélectionné est mis en évidence par une couleur bleue.
Dans l'exemple, les détails du module mirror sur le node1 sont affichés.
· (1) Cliquer sur (mirror>node1 dans l'exemple) pour ouvrir/fermer les détails du module sur ce nœud (logs, ressources...). · (2) Cliquer sur l’onglet Journaux pour visualiser les journaux du module. · (3) Cliquer sur l’onglet Ressources pour visualiser les ressources du module. · (4) Cliquer sur l’onglet Information pour visualiser les informations sur le nœud (SafeKit version and licence…). |
3.4.3.1 Le journal du module et le journal des scripts
Vous pouvez afficher les journaux d'un module sur un nœud :
ü Directement via l’URL http://host:9010/console/fr/monitoring /modules/AM/nodes/node/logs (remplacer node par le nom du nœud et AM par le nom du module)
Ou
ü En naviguant dans la console sur Supervision/Cliquer sur module>nœud/Onglet Journaux
Le panneau de gauche affiche le journal non verbeux du module>nœud sélectionné. · (1) Cliquer sur pour reprendre/suspendre la visualisation en temps réel du journal du module. · (2) Cliquer sur pour télécharger le journal du module (non verbeux ou verbeux). · (3) Sélectionner le type de messages à afficher :
· Cliquer sur un message pour afficher le journal verbeux du module ou le journal des scripts (sortie des scripts) dans le détail du journal dans le panneau de droite. |
Pour afficher le journal du script du module, cliquer sur le message S(cript) dont vous souhaitez visualiser l’output. · (1) Cliquer sur le message S(cript) qui consiste en : ü la date et l’heure d’exécution du script ü le nom du script exécuté ü le nom du fichier userlog correspond · Le contenu du fichier userlog est affiché dans le panneau de droite. Dans l’exemple, il s’agit du contenu du fichier SAFEVAR/modules/AM/userlog_2024-02-12T091410_start_prim.ulog (où AM est le nom du module) |
Pour afficher le journal verbeux du module, cliquer sur un message autre que S(cript). · (1) Cliquer sur le message qui consiste en : ü la date et l’heure de l’évènement ü le message du module · Tous les messages verbeux entre le message sélectionné et le précédent dans la table, sont affichés dans le panneau de droite.
Voir la section 7 page 111, pour une liste de messages démontrant un problème. |
3.4.3.2 Les ressources du module
Vous pouvez afficher les ressources d'un module sur un nœud :
ü Directement via l’URL http://host:9010/console/fr/monitoring /modules/AM/nodes/node/resources (remplacer node par le nom du nœud et AM par le nom du module)
Ou
ü En naviguant dans la console sur Supervision/Cliquer sur module>nœud/Onglet Ressources
Le panneau de gauche affiche l’état courant des ressources du module>nœud sélectionné. · (1) Sélectionner le groupe de ressources à afficher :
· Cliquer sur une ressource pour afficher la valeur de la ressource dans le temps dans le panneau de droite. Cet historique peut être vide pour certaines ressources (non affecté ou nettoyé). L’état courant des ressources du module est contrôlé par la failover machine pour provoquer des actions sur le module en cas de défaillance (voir section 13.18 page 266). |
Pour afficher l’historique des valeurs d’une ressource, cliquer sur la ressource qui vous intéresse. · (1) Cliquer sur la ligne qui consiste en : ü la dernière date à laquelle la ressource a été affectée ü le nom et la catégorie de la ressource. Le nom complet de la ressource est de la forme <catégorie>.<nom> (custom.checkfile dans l’exemple). · L’historique des valeurs de la ressource est affiché dans le panneau de droite. Dans l’exemple, il s’agit de la ressource custom.checkfile correspondant à une ressource affectée par un custom checker. |
3.4.4 Chronologie des états d’un module
Depuis SafeKit 8.2.2, vous pouvez afficher la chronologie des états d'un module :
ü En naviguant dans la console sur Supervision/Cliquer sur pour le module
Cela permet d'avoir une vue globale de l'état du module sur le cluster. Notez que les horloges des deux nœuds doivent être synchronisées pour que la mise en correspondance des changements d'état soit significative.
Il ouvre un panneau qui affiche une chronologie inversée : les états du module sur tous les nœuds au fil du temps, en commençant par la date la plus récente.
· (1) Cliquer sur pour ouvrir/fermer la chronologie. La chronologie affichée est celle disponible au moment du chargement. · (2) Cliquer sur pour rafraîchir la chronologie avec les derniers changements d’état. · (3) Cliquer sur un événement de changement d'état pour afficher le journal du module pour le nœud à partir de cette date. |
3.5 Snapshots d’un module pour le support
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 124. Si cette analyse échoue, envoyez les snapshots au support comme décrit dans la section 8 page 133.
Dans l’exemple suivant, le module mirror est configuré sur node1 et node2. Notez qu'un snapshot peut être téléchargé dans n'importe quel état du module. · (1) Cliquer sur pour ouvrir le menu d’actions globales. · (2) En cas de problèmes de réplication de fichiers, il peut être nécessaire de Générer les fichiers de dump au moment où le problème se produit. Le dump contient les journaux du module et des informations sur l'état du système et de SafeKit au moment du dump. Il est généré du côté serveur sous SAFEVAR/snapshot/modules/mirror/dump_AAAA_MM_DD_hh_mm_ss. · (3) Cliquer sur Télécharger les snapshots pour créer et télécharger le snapshot du module pour chaque nœud. La console web s'appuie sur les paramètres de téléchargement du navigateur web pour sauvegarder les snapshots sur la station de travail. Certains navigateurs peuvent demander une confirmation pour télécharger plusieurs fichiers et des .zip. La commande de génération du snapshot génère un nouveau dump et créé un fichier .zip qui contient les 3 derniers dumps et les 3 dernières configurations du module. |
Dans cet exemple, 2 snapshots sont téléchargés : snapshot_node1_mirror.zip et snapshot_node2_mirror.zip.
3.6 Sécuriser la console web
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 à la |
Rôle Control |
Ce rôle accorde tous les droits de supervision et contrôle en autorisant l’accès à la Supervision |
Rôle Monitor |
Ce rôle n'accorde que des droits de supervision, interdisant les actions sur les modules (démarrage, arrêt...) sous Supervision |
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.
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.
HTTP/HTTPS avec authentification à base de serveur d’OpenId Connect. Gestion de rôles facultative
Elle repose sur le serveur OpenID Identity Provider 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 OpenID. Elle peut être appliqué en HTTP ou HTTPS.
Pour les mettre en œuvre, se référer à la section 11 page 177.
4. Tests
4.1 « Installation et tests après boot » page 69
4.2 « Tests d'un module miroir » page 72
4.3 « Tests d'un module ferme » page 79
4.4 « Tests des checkers communs à un miroir et une ferme » page 86
Dans la suite, l’analyse des résultats des tests peut nécessiter de consulter le journal du module, le journal des scripts (qui contient l’output des scripts du modules) ou l’état des ressources du module. Pour cela, voir la section 7.3 page 115.
4.1 Installation et tests après boot
4.1.1 Test installation package
Installation du package : Dans la suite, remplacer node1 par le nom du nœud et AM par le nom du module. safekit –p executé sur un nœud retourne, entre autres valeurs, la valeur de SAFE, le chemin d'installation racine de SafeKit, et SAFEVAR, le répertoire de travail de SafeKit : ü in Windows SAFE=C:\safekit si SystemDrive=C: ü in
Linux SAFEVAR=/var/safekit Pour plus d'informations, voir la section 10.1 page 157. L'édition de userconfig.xml d'un module miroir (/ferme) et de ses scripts start_prim/start_both, stop_prim/stop_both est réalisée avec : ü la console web avec l’URI /console/fr/configuration/modules/AM/config ü sous le répertoire SAFE/modules/AM sur node1 Le journal du module et le journal des scripts (qui contient output des scripts du module) peuvent être consultés avec : ü la console web avec
l’URI ü la commande safekit logview –m AM exécutée sur node1, pour le journal du module ü sur node1, dans les fichiers SAFEVAR/modules/AM/userlog_<year>_<month>_<day>T<time>_<script name>.ulog, pour le journal des scripts |
4.1.2 Test licence et version
Host : <hostname>
"No license" signifie qu'il n'y a pas de fichier SAFE/conf/license.txt : le produit s'arrête tous les 3 jours "Invalid Product" signifie que la licence a expiré dans SAFE/conf/license.txt "Invalid Host" signifie que le hostname est invalide dans SAFE/conf/license.txt " …Expiration…" indique une clé temporaire "<license id> for <hostname>" indique une clé permanente http://www.evidian.com/safekit/requestevalkey.php pour obtenir une clé temporaire d'un mois pour n'importe quel hostname/OS https://support.evidian.com pour obtenir une clé permanente basée sur le hostname et l'OS |
4.1.3 Test des services et processus SafeKit après boot
Voir aussi la section 10.4 page 165
Test du service safeadmin : Le processus safeadmin doit apparaître dans la liste des processus Sans ce processus, aucune commande safekit n'est réalisable et rend : "Waiting for safeadmin .........." En Windows, safeadmin est un service et il se démarre dans l'interface Services de Windows
Test du service safewebserver : safekit boot webstatus retourne le démarrage ou non du service safewebserver au boot ("on" ou "off", "on" par défaut) Les processus httpd doivent apparaître dans la liste des processus Sans ces processus, la console web n'arrive pas à se connecter aux serveurs ; les checkers de <module> (userconfig.xml) et les commandes distribuées au cluster ne peuvent pas fonctionner Pour démarrer/arrêter le service safewebserver, safekit webserver start |stop |restart
Test du service safeagent (uniquement en Windows): safekit boot snmpstatus retourne le démarrage ou non du service safeagent au boot ("on" ou "off", "off" par défaut) Le processus safeagent doit apparaître dans la liste des processus Pour démarrer/arrêter le service safeagent taper, safekit safeagent start |stop |restart
Test des modules : safekit boot status retourne le démarrage ("on") ou non ("off") des modules au boot safekit state retourne l'état de tous les modules configurés : STOP (miroir ou ferme), WAIT (miroir ou ferme), ALONE (miroir), PRIM (miroir), SECOND (miroir), UP (ferme) vérifier les processus d'un module (voir section 10.2 page 159) safekit module listid retourne le nom des modules installés et leurs ids : l'id d'un module doit être le même sur tous les serveurs aller dans SAFE/modules/AM/conf (où AM est le nom du module); le fichier userconfig.xml donne le type de module, mirror ou farm: <service mode="mirror"> ou <service mode="farm"> |
4.1.4 Test démarrage de la console web
connecter un navigateur web à http://<server IP>:9010 la page d'accueil de la console web apparaît |
4.2 Tests d'un module miroir
4.2.1 Test start d'un module miroir sur 2 serveurs STOP (NotReady)
message dans les journaux du module sur les 2 serveurs (pour lire les journaux, voir 7.3 page 115) "Action start called by web@<IP>/SYSTEM/root" le module va dans l'état stable PRIM (Ready) et SECOND (Ready) sur les 2 nœuds avec dans le 1er log "Remote state SECOND Ready" et dans le 2nd log "Local state SECOND Ready" l'application est démarrée dans le script start_prim du module PRIM avec le message dans son log "Script start_prim" |
4.2.2 Test stop d'un module miroir sur le serveur PRIM (Ready)
message dans le journal du module (pour lire les journaux voir 7.3 page 115) "Action stop called by web@<IP>/SYSTEM/root" le module arrêté exécute le script stop_prim qui arrête l'application sur le serveur avec le message dans son journal : "Script stop_prim" le module arrêté devient STOP (NotReady) avec les messages dans son journal : "End of stop" "Local state STOP NotReady" le module sur le serveur de reprise devient ALONE (Ready) avec le message dans son journal : "Reason of failover: remote stop" l'application est redémarrée avec le script start_prim script du module qui passe dans l'état ALONE sur le serveur de reprise avec le message dans son journal : "Script start_prim" |
4.2.3 Test start du module miroir dans l'état STOP (NotReady)
message dans le journal du module redémarré (pour lire les journaux voir 7.3 page 115) "Action start called by web@<IP>/SYSTEM/root" le module STOP (NotReady) devient SECOND (Ready) le module sur l'autre serveur passe de ALONE (Ready) à PRIM (Ready) et continue à exécuter l'application |
4.2.4 Test restart du module miroir dans l'état PRIM (Ready)
message dans le journal du module redémarré (pour lire les journaux voir 7.3 page 115) "Action restart called by web@<IP>/SYSTEM/root" le module PRIM devient PRIM (magenta) puis PRIM (Ready) les scripts du module stop_prim/start_prim sont exécutés sur le module PRIM et redémarre localement l'application avec les messages dans son journal : "Script stop_prim" l'autre serveur reste SECOND (Ready) |
4.2.5 Test swap du module miroir d'un serveur vers l'autre
message dans le journal du module où la commande swap est passée (pour lire les journaux voir 7.3 page 115) "Action swap called by web@<IP>/SYSTEM/root" "Transition SWAP from SYSTEM" "Begin of Swap" Et dans le journal du module sur l'autre serveur, seulement : "Begin of Swap" inverse les rôles de PRIM et SECOND entre les 2 serveurs le script stop_prim est d'abord exécuté sur l'ancien module PRIM avec dans son journal : "Script stop_prim" puis le script start_prim est exécuté sur le nouveau module PRIM avec dans son journal : "Script start_prim" à la fin du swap, le module PRIM (Ready) et le module SECOND (Ready) sont inversés sur les 2 serveurs et l'application s'exécute sur le module PRIM |
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 (Ready)
sur Windows, vérifier que la procédure spéciale d'arrêt des modules au shutdown a été réalisé (voir section 10.4 page 165) effectuer un shutdown du serveur PRIM (Ready) vérifier dans le journal du serveur SECOND (Ready) le message "Reason of failover: remote stop" le serveur SECOND (Ready) devient ALONE (Ready); l'application dans le script start_prim du module est redémarrée sur le serveur ALONE avec le message dans le log "Script start_prim" sur timeout dans la console web, l'ancien serveur PRIM (Ready) devient gris après reboot du serveur arrêté, vérifier que le shutdown de l'OS a réellement appelé avec un shutdown du module avec le message "Action shutdown called by SYSTEM" vérifier que le script stop_prim de l'application a été exécuté avec le message "Script stop_prim" et vérifier que le module a été complètement arrêté avant le shutdown du serveur avec le dernier message "End of stop" après reboot du serveur arrêté, si le module est automatiquement démarré au boot (safekit boot status), message dans le log "Action start called at boot time" après démarrage du module sur le serveur arrêté, le module devient SECOND (Ready) sur ce serveur et PRIM (Ready) sur l'autre serveur |
4.2.9 Test power-off d'un module miroir sur le serveur PRIM (Ready)
<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 |
dans le journal du nœud SECOND (Ready), message pour tous les heartbeats définis dans userconfig.xml "Resource heartbeat.default set
to down by heart" les messages apparaissent après 30 secondes suite au power-off (si aucun timeout configuré dans la section <heart> de userconfig.xml) le serveur SECOND (Ready) devient ALONE (Ready) ; l'application dans le script start_prim du module est redémarrée sur le serveur ALONE avec le message dans son log "Script start_prim" sur timeout dans la console web, l'ancien serveur PRIM (Ready) devient gris après reboot du serveur arrêté, si le module est démarré automatiquement au boot (safekit boot status), message dans le log "Action start called at boot time" après reboot, message dans le journal: "Previous halt unexpected" après
redémarrage du module sur le serveur arrêté, le module devient |
4.2.10 Test split brain avec un module miroir
4.2.11 Continuer les tests de votre module miroir avec les checkers
Voir les tests décrits en section 4.4 page 86.
4.3 Tests d'un module ferme
4.3.1 Test start d'un module ferme sur les serveurs STOP (NotReady)
message dans les logs de tous les nœuds (pour lire les journaux, voir 7.3 page 115) "Action start called by web@<IP>/SYSTEM/root" le module va dans l'état UP (Ready) sur tous les serveurs l'application est démarrée dans le script start_both du module sur tous les serveurs avec le message dans les logs "Script start_both" |
4.3.2 Test stop d'un module ferme sur un serveur UP (Ready)
message dans le journal du nœud arrêté (pour lire les journaux, voir 7.3 page 115) "Action stop called by web@<IP>/SYSTEM/root" le nœud arrêté exécute le script stop_both qui arrête l'application sur le serveur avec le message dans le log "Script stop_both" le module sur le serveur arrêté devient STOP (NotReady) avec les messages dans son journal : "End of stop" "Local state STOP NotReady" l'autre serveur reste UP(Ready) et continue à exécuter l'application redémarrer le serveur STOP (NotReady) avec la commande start |
4.3.3 Test restart d'un module ferme sur un serveur UP (Ready)
message dans le journal du module où la commande restart est serveurs (pour lire les journaux, voir 7.3 page 115) "Action restart called by web@<IP>/SYSTEM/root" le module redémarré devient UP (Transient) puis devient UP (Ready) les scripts du module stop_both/start_both sont exécutés sur le serveur et redémarre localement l'application avec les messages dans le log "Script stop_both" |
4.3.4 Test adresse IP virtuelle d'un module ferme
4.3.4.1 Configuration avec vmac_invisible
4.3.4.2 Configuration avec vmac_directed
Module ferme dans l’état UP (Ready) sur les 3 serveurs ip1.1, ip1.2 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 |
Dans le journal de tous les serveurs : "Vitual IP <virtip of farm> set" Sur les 2 serveurs, ipconfig ou ifconfig (ou ip addr show) retourne virtip en alias de l'interface réseau Sur une station de travail (ou un serveur) du même LAN, les pings répondent et virtip est mappée sur l'adresse MAC de l’un des deux serveurs: ping ip1.1; ping ip1.2; ping ip1.20; arp
–a
|
4.3.5 Test load balancing TCP sur une adresse virtuelle
Le module ferme est dans l'état UP (Ready) sur les 2 serveurs node1, node2. Même configuration de load balancing dans userconfig.xml que le test précédent. Sur une station distante : 1. Se connecter à
l'URL http://virtip:9010/safekit/mosaic.html,
puis cliquer sur Mosaic Test. node1, node2
répondent 2. stop du module
sur node2. Rechargement de l'URL. Seul node1 répond Commande spéciale pour vérifier la bitmap de load
balancing sur le port 9010 et sur chaque nœud safekit –r vip_if_ctrl –l Une entrée de la bitmap de 256 bits doit être à 1 sur un seul serveur De plus, les 256 bits sont distribués de manière équitable dans les bitmaps de tous les serveurs UP (Ready) (si pas de définition de la variable power dans userconfig.xml) |
UP (Ready) sur les 2 serveurs : load balancing des sessions TCP entre node1, node2 en chargeant l'URL Dans les ressources du module, pour node1 et node2 : FarmProto 50%. Exemple de logs avec node1 et node2 "farm membership: node1 node2 (group FarmProto)" 128/256: 128 bits sur 256 sont gérés par chacun des serveurs safekit –r vip_if_ctrl –l sur node1 et node2 : Bitmap 1:00000000:00000000:00000000:00000000: Les bits sont équitablement répartis entre les 2 serveurs STOP (NotReady) sur node2 : les sessions TCP sont servies par node1 lorsqu'on charge l'URL Dans le journal de node1 : "farm membership: node1 (group FarmProto)" 256/256: tous les bits sont gérés par node1 safekit –r vip_if_ctrl –l sur node1: Bitmap 1:ffffffff:ffffffff:ffffffff:ffffffff:
|
4.3.6 Test split brain avec un module ferme
Le split brain se produit en situation d'isolation réseau entre les serveurs SafeKit. Le module ferme est UP (Ready) UP (Ready) sur les serveurs ip1.1, ip1.2. Même configuration de load balancing dans userconfig.xml que le test précédent. Pour obtenir le split brain, vérifier qu'il n'y a pas de checker pouvant détecter l'isolation : pas de <interface check="on"> ou de checker <ping>. Sur la station externe: 1. Se connecter à
http://virtip:9010/safekit/mosaic.html,
puis cliquer sur Mosaic Test. node1 and
node2 répondent 2. Déconnecter le
réseau entre ip1.1 et ip1.2. Suivant l'endroit où se
trouve la station externe, node 1 ou node 2 répond 3. reconnecter le
réseau et se connecter à l'URL Même commande spéciale que le test précédent pour vérifier
la bitmap de load balancing sur le port 9010 sur chaque nœud |
avant split brain, état UP (Ready) UP (Ready). Dans les ressources pour node1 et node2 : FarmProto 50% Dans les logs de node1 et node2: "farm membership: node1 node2 (group FarmProto)" 128/256: 128 bits sur 256 sont gérés par chacun des serveurs safekit –r vip_if_ctrl –l sur node1 et node2 : Bitmap 1:00000000:00000000:00000000:00000000: Les bits sont équitablement répartis entre les 2 serveurs après isolation réseau, split brain : Dans les ressources, pour node1 et node2 : FarmProto 100% dans le journal de node1 : "farm membership: node1 (group FarmProto)" 256/256 : tous les bits sont gérés par node 1 safekit –r vip_if_ctrl –l on node1: Bitmap 1:ffffffff:ffffffff:ffffffff:ffffffff: dans le journal de node 2: "farm membership: node2 (group FarmProto)" 256/256: tous les bits sont gérés par node 2 Bitmap 2:ffffffff:ffffffff:ffffffff:ffffffff: après split brain lorsque le réseau est reconnecté entre ip1.1 et ip1.2, les mêmes messages peuvent être trouvés dans le journal et les mêmes bitmaps que ceux avant split brain Le comportement par défaut d'une ferme en situation de split brain est correct. La recommandation est de mettre dans userconfig.xml un réseau de surveillance <lan> </lan>, là où se trouve l'adresse IP virtuelle. En vmac_directed, les messages dans le journal et le résultat de vip_if_ctrl sont différents. |
4.3.7 Test de la compatibilité du réseau avec l'adresse MAC invisible (vmac_invisible)
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 74 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 : tcpdump host ip1.20 : capture tous les paquets réseau |
tous les serveurs sont UP (Ready) le monitoring réseau est lancé dans chaque serveur en filtrant sur ip1.20 une console externe envoie un seul ping vers l'adresse IP virtuelle avec ping –n (ou –c) 1 ip1.20 résultat : 1 paquet "ICMP: Echo: From ipconsole To ip1.20" envoyé et reçu par l'ensemble des serveurs résultat : il doit y avoir autant de paquets "ICMP: Echo Reply: To ipconsole From ip1.20" qu'il y a de serveurs UP (Ready) si ce n'est pas le cas, vérifier si des options restreignent le "port flooding" dans les switchs et empêche le broadcast de "ICMP: Echo" vers tous les serveurs attention : la restriction "port flooding" dans les switchs peut avoir lieu après un certain nombre de flooding (temps, nombre de KB floodés) : le test ping est à répéter sur plusieurs heures en créant du flooding sur l'adresse IP virtuelle 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 |
4.3.8 Test shutdown d'un module ferme sur un serveur UP (Ready)
sur Windows, vérifier que la procédure spéciale d'arrêt des modules au shutdown a été réalisée : voir section 10.4 page 165 effectuer un shutdown d'un serveur UP (Ready) les autres serveurs restent UP (Ready) et continuent à exécuter l'application sur timeout de la console web, l'ancien serveur UP (Ready) devient gris après reboot du serveur arrêté, vérifier que le shutdown de l'OS a réellement appelé un shutdown du module avec le message "Action shutdown called by SYSTEM" vérifier que le script stop_both de l'application a été exécuté avec le message "Script stop_both" et vérifier que le module a été complètement arrêté avant le shutdown du serveur avec le dernier message "End of stop" après reboot du serveur arrêté, si le module est automatiquement démarré au boot (safekit boot status), message dans le log "Action start called at boot time" après démarrage du module sur le serveur arrêté, le module devient UP (Ready) sur ce serveur et il exécute le script start_both qui redémarre l'application sur le serveur avec le message dans le log "Script start_both" |
4.3.9 Test power-off d'un module ferme sur un serveur UP (Ready)
4.3.10 Continuer les tests du module ferme avec les checkers
Voir les tests décrits en section 4.4 page 86.
4.4 Tests des checkers communs à un miroir et une ferme
4.4.1 Test <errd>: checker de processus avec action restart ou stopstart
<errd> <proc name="appli.exe"
atleast="1"
name="appli.exe" atleast="1": au moins un processus "appli.exe" doit s'exécuter
class="prim" (cas d’un module miroir) checker exécuté sur le serveur dans l’état (Ready) (i.e. PRIM ou ALONE) ; démarré après start_prim (arrêté avant stop_prim) class="both" (cas d’un module ferme) checker exécuté sur tous les serveurs dans l’état UP (Ready), démarré après start_both (arrêté avant stop_both)
action="restart" : si "appli.exe" n'est pas présent, action restart qui exécute seulement les scripts stop_xx ; start_xx action="stopstart" : si "appli.exe" n'est pas présent, action stopstart qui arrête totalement le module puis le redémarre |
Kill du processus "appli.exe" sur le serveur (Ready) ; c’est-à-dire dans l’état PRIM ou ALONE pour un module miroir et l’état UP pour un module ferme :
messages dans le journal : "Process appli.exe not running" le
module passe dans un état
dans le cas restart, le module redevient (Ready), respectivement dans l’état PRIM, ALONE ou UP dans le cas stopstart, le module redevient (Ready), respectivement dans l’état SECOND, ALONE ou UP message dans le log "Action start called automatically" Note : un stopstart sur PRIM (Ready) provoque un basculement Reproduire le test sur le même serveur s'il tourne toujours l'application (i.e. (Ready) ALONE ou UP) : avec les valeurs par défaut de maxloop="3" et loop_interval="24" (userconfig.xml <service>) au bout de 4 kills sur un même serveur, le module devient STOP (NotReady) message dans le journal avant l'arrêt : "Stopping loop" |
4.4.2 Test <tcp> checker de l'applicatif local avec action restart ou stopstart
<tcp ident="id"
when="prim "> <failover>
le checker vérifie que l'application tcp lancée sur le port idport répond à des demandes de connexion addr="ip.virtual", port="idport" : connexions TCP testées sur l'adresse IP virtip et sur le port TCP idport interval="10", timeout="5" par défaut : test fait toutes les 10 secondes et avec un timeout de 5 secondes
class="prim" (cas d’un module miroir) checker exécuté sur le serveur dans l’état (Ready) (i.e. PRIM ou ALONE) ; démarré après start_prim (arrêté avant stop_prim) class="both" (cas d’un module ferme) checker exécuté sur tous les serveurs dans l’état UP (Ready), démarré après start_both (arrêté avant stop_both)
action restart() : règle de failover par défaut ; si la connexion TCP locale échoue, action restart qui exécute seulement les scripts stop_xx ; start_xx action stopstart() : si la connexion TCP locale échoue, action stopstart qui arrête totalement le module puis le redémarre |
Arrêter l'application qui écoute sur le port idport sur le serveur dans un état (Ready) ; c’est-à-dire dans l’état PRIM ou ALONE pour un module miroir et l’état UP pour un module ferme :
messages dans le journal : "Resource tcp.id set to down by
tcpcheck" le
module passe dans un état dans le cas restart, le module redevient (Ready), respectivement dans l’état PRIM, ALONE ou UP dans le cas stopstart, le module redevient (Ready), respectivement dans l’état SECOND, ALONE ou UP message dans le journal : "Action start called automatically" Note : un stopstart sur PRIM (Ready) provoque un basculement Reproduire le test sur le même serveur s'il tourne toujours l'application (i.e. (Ready) ALONE ou UP) : avec les valeurs par défaut de maxloop="3" et loop_interval="24" (userconfig.xml <service>) au bout de 4 arrêts de l'application sur un même serveur, le module devient STOP (NotReady) message dans le journal avant l'arrêt : "Stopping loop" |
4.4.3 Test <tcp> checker d'un service externe avec action wait
<tcp ident="id"
when="pre"> <failover>
le checker vérifie que le service TCP externe (ip.externe, idport) répond à des demandes de connexion interval="10", timeout="5" par défaut : test fait toutes les 10 secondes et avec un timeout de 5 secondes
when="pre" checker lancé sur tous les serveurs après le script prestart (et arrêté avant poststop) si la connexion TCP échoue, le checker met la ressource tcp.id à down. La règle de failover sur le TCP checker exécute l'action wait qui arrête l'applicatif et met le module dans l'état WAIT en attente de tcp.id repositionné à up par le checker |
Arrêter le service TCP (ip.externe, idport) sur le serveur dans un état (Ready) ; c’est-à-dire dans l’état PRIM, ALONE ou SECOND pour un module miroir et l’état UP pour un module ferme :
messages dans le journal : "Resource tcp.id set to down by tcpcheck" dans
tous les cas, le module devient Redémarrer le service TCP externe : messages dans le log "Resource tcp.id set to up by
tcpcheck" le module redevient (Ready), respectivement dans l’état SECOND, ALONE, SECOND ou UP Note : un wait sur PRIM (Ready) provoque un basculement
Reproduire le test sur le même serveur avec les valeurs par défaut de maxloop="3" et loop_interval="24" (userconfig.xml <service>) au
bout de 4 redémarrages sur un même serveur, le module devient message dans le journal avant l'arrêt : "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 |
4.4.4 Test <interface check="on"> sur une interface réseau locale avec action wait
<vip>
Règle de failover par défaut = wait
Un checker vérifie que le câble Ethernet est connecté dans l'interface du réseau ip.0 où est définie l'adresse IP virtuelle Si le câble est déconnecté, le checker met la ressource intf.ip.0 à down. La règle de failover sur les interfaces checkers exécute l'action stopwait qui arrête l'applicatif et met le module dans l'état WAIT en attente de intf.ip.0 repositionne à up par le checker
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
messages dans le journal : "Resource intf.ip.default set to down by intfcheck" "Action wait from failover rule interface_failure" "Transition WAIT_TR from failover rule interface_failure" dans
tous les cas, le module devient Remettre le câble : &nbs |