eviden-logo

Evidian > Produits > Logiciel de haute disponibilité - Zéro surcoût matériel > Guide de l'utilisateur de SafeKit 8.2

Guide de l'utilisateur de SafeKit

SafeKit 8.2

Guide Evidian de l'utilisateur de SafeKit 8.2

 

 

 

 

 

Guide de l'utilisateur de SafeKit

Logiciel de haute disponibilité pour applications critiques


 

 

 


Vue générale

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
visé

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
Site support Evidian :    
https://support.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
un courriel à institute@evidian.com

 

 

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.


 


Table des matières

Guide de l'utilisateur de SafeKit  Logiciel de haute disponibilité pour applications critiques  1

Vue générale. 3

Table des matières. 5

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.5.3          Mixte ferme/miroir : partage de charge réseau, réplication de fichiers et reprise sur panne. 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.... Installation. 25

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.1          Prérequis matériel 30

2.2.2          Prérequis réseau. 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.1          Prérequis matériel 31

2.3.2          Prérequis réseau. 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.2          Préparer l'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.3          Détails du module. 59

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.... Tests. 69

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.2..... Automate d'état d'un module miroir (STOP, WAIT, ALONE, PRIM, SECOND - NotReady, Transient, Ready) 97

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... Problème pour récupérer le certificat de l'autorité de certification depuis une PKI externe  129

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.3..... Créer un compte. 135

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.2          Création d’un Call 137

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..... Exemples 155

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.1.1       Global 157

10.1.2       Module. 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.3.3       Autres pare-feux. 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.6.4       API SafeKit 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.8.3       La MIB SafeKit 173

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... Vue générale. 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.1.1       <macro> Exemple. 212

13.1.2       <macro> Syntaxe. 212

13.1.3       <macro> Attributs. 212

13.2... Module ferme ou miroir (<service> tag) 212

13.2.1       <service> Exemple. 212

13.2.2       <service> Syntaxe. 213

13.2.3       <service> Attributs. 213

13.3... Heartbeats (<heart>, <heartbeat > tags) 215

13.3.1       <heart> Exemple. 215

13.3.2       <heart> Syntaxe. 216

13.3.3       <heart>, <heartbeat attributs. 216

13.4... Topologie d'une ferme (<farm>, <lan> tags) 217

13.4.1       <farm> Exemple. 217

13.4.2       <farm> Syntaxe. 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.4       <vip> Syntaxe. 220

13.5.5       <interface_list>, <interface>, <virtual_interface>, <real_interface>, <virtual_addr> Attributs. 221

13.5.6       <loadbalancing_list>, <group>, <cluster>, <host> Attributs 224

13.5.7       <vip> Description. 225

13.6... Réplication de fichiers (<rfs>, <replicated> tags) 226

13.6.1       <rfs> Exemple. 227

13.6.2       <rfs> Syntaxe. 227

13.6.3       <rfs>, <replicated> Attributs. 228

13.6.4       <rfs>Description. 236

13.7... Activer les scripts du module (<user>, <var> tags) 245

13.7.1       <user> Exemple. 245

13.7.2       <user> Syntaxe. 245

13.7.3       <user>, <var> Attributs. 246

13.8... Hostname virtuel (<vhost>, <virtualhostname> tags) 246

13.8.1       <vhost> Exemple. 246

13.8.2       <vhost> Syntaxe. 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.1       <errd> Exemple. 248

13.9.2       <errd> Syntaxe. 248

13.9.3       <errd>, <proc> Attributs 249

13.9.4       <errd> Commandes 252

13.10. Checkers (<check> tags) 255

13.10.1     <check> Exemple. 255

13.10.2     <check> Syntaxe. 255

13.11. TCP checker (<tcp> tags) 256

13.11.1     <tcp> Exemple. 256

13.11.2     <tcp> Syntaxe. 256

13.11.3     <tcp> Attributs. 256

13.12. Ping checker (<ping> tags) 257

13.12.1     <ping> Exemple. 257

13.12.2     <ping> Syntaxe. 257

13.12.3     <ping> Attributs. 258

13.13. Interface checker (<intf> tags) 258

13.13.1     <intf> Exemple. 258

13.13.2     <intf> Syntaxe. 259

13.13.3     <intf> Attributs. 259

13.14. IP checker (<ip> tags) 259

13.14.1     <ip> Exemple. 260

13.14.2     <ip> Syntaxe. 260

13.14.3     <ip> Attributs. 260

13.15. Custom checker (<custom> tags) 261

13.15.1     <custom> Exemple. 261

13.15.2     <custom> Syntaxe. 261

13.15.3     <custom> Attributs 261

13.16. Module checker (<module> tags) 263

13.16.1     <module> Exemple. 263

13.16.2     <module> Syntaxe. 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... Liste des scripts 271

14.1.1       Scripts start/stop. 271

14.1.2       Autres scripts 272

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

17.. Logiciels tiers. 311

Index des messages du journal du module. 315

Index. 319

 

 


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 est une solution de haute disponibilité de type primaire - secours applicable à n'importe quelle application. L'application est exécutée sur un serveur primaire et redémarrée automatiquement sur un serveur de secours si le serveur primaire est défaillant.

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 permet d'assurer à fois le partage de charge réseau, à travers une distribution transparente du trafic réseau et une reprise sur panne matérielle et logicielle. Cette architecture fournit une solution simple au problème de la montée en charge. La même application s'exécute sur chacun des serveurs et la charge est distribuée par répartition de l’activité réseau sur les différents serveurs de la ferme.

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'adresse IP virtuelle est configurée localement sur chaque serveur de la ferme. Le trafic du réseau à destination de l'adresse IP virtuelle est distribué entre les serveurs grâce à un filtre chargé dans le système d'exploitation de chaque serveur.

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
si
%SYSTEMDRIVE%=C:

*       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)

  1. 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.

 

Description: important

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.

 

Description: note

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
  1. Se loguer en tant que root
  2. Localiser le fichier téléchargé safekitlinux_x86_64_8_2_x_y.bin
  3. Exécuter chmod +x safekitlinux_x86_64_8_2_x_y.bin
  4. Exécuter ./safekitlinux_x86_64_8_2_x_y.bin

Cela extrait le package SafeKit et le script safekitinstall

  1. 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.

Description: important

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

  1. 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 :

En Windows

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/
du nœud/Forcer le démarrage/En primaire

ü  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/
du nœud/Forcer le démarrage/En secondaire

ü  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/
du nœud/Démarrer/

ü  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/
du nœud/Démarrer/

ü  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

 

SafeKit Solution

La solution SafeKit y est entièrement détaillée.

Formation SafeKit

Reportez-vous à cette formation en ligne pour un démarrage rapide de l'utilisation de SafeKit.

SafeKit Release Notes

Il contient :

ü  Dernières instructions d'installation

ü  Changements majeurs

ü  Restrictions et problèmes connus

ü  Instructions de migration

Software Release Bulletin

Bulletin listant les packages SafeKit 8.2 avec la description des changements et des problèmes corrigés.

SafeKit Knowledge Base

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.

Guide de l’utilisateur SafeKit

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.

Description: note

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.

Description: note

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.

 

Description: note

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.

Quand un nœud/lan est supprimé du cluster, tous les modules l’utilisant dans sa configuration peuvent devenir inutilisables.

 

 

 

 

·         (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.

 signifie que le server SafeKit est disponible. L’infobulle donne des informations sur le serveur.

 signifie que le serveur n’a pas répondu 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.

 

·         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.

Description: note

Le nom des Réseaux de heartbeat proposés sont les noms des lans saisis lors de la configuration du cluster.

·         (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.

Lorsque la clé de cryptage du module n’est pas identique sur tous les nœuds, la communication interne est impossible. Il faut réappliquer la configuration sur tous les nœuds pour propager la même clé.

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é :

 

Le module sur le nœud sélectionné est démarré et dans un état différent de STOP (NotReady).

 

Le nœud sélectionné n’a pas répondu dans le délai imparti. 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.

 

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.

 

Avant chaque reconfiguration, déconfiguration et désinstallation, sur chaque nœud, fermer tous les éditeurs, explorateur de fichiers, shells ou cmd sous SAFE/modules/AM (au risque sinon que l’opération échoue).

·         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 Une image contenant noir, obscurité

Description générée automatiquement pour ouvrir/fermer les détails.

Pour sa description, voir 3.4.3 page 59.

·         (5) Cliquer sur Une image contenant noir, obscurité

Description générée automatiquement 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 :
à jour ou non à jour.

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 Une image contenant noir, obscurité

Description générée automatiquement (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 :

*       C(ritique) messages tels que des détections d'erreurs

*       E(vènement) messages tels que l’état local et distant

*       U(ser) messages lorsque l'utilisateur exécute une action sur le module

*       S(cript) messages quand les scripts du module sont exécutés

·         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 :

 

ü  Status du module

Ressources principales, notamment de la réplication de fichiers pour un module miroir

ü  Checkers

Ressources affectées par des checkers

ü  Réplication de fichiers

Ressources spécifiques à la réplication de fichiers qui démontrent la progression de la synchronisation

ü  Toutes les ressources

 

·         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 Une image contenant noir, obscurité

Description générée automatiquement 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 Une image contenant noir, obscurité

Description générée automatiquement pour ouvrir/fermer la chronologie. La chronologie affichée est celle disponible au moment du chargement.

·         (2) Cliquer sur Une image contenant noir, obscurité

Description générée automatiquement 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
 Configuration et  Supervision dans la barre de navigation latérale

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:
SAFEVAR=C:\safekit\var

ü  in Linux
SAFE=/opt/safekit"

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
/console/fr/monitoring/modules/AM/nodes/node1/logs

ü  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

*       safekit level retourne

Host : <hostname>
OS : <OS version>
SafeKit : <SafeKit version>
License : No license | Invalid Product | Invalid Host | …
Expiration… | <license id> for <hostname>…
or License : Expired license

 

*       "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 .........."
"Error:
safeadmin administrator daemon not running"

*       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" 
"Local state
PRIM Ready" 

*       et dans le 2nd log

"Local state SECOND Ready"
"Remote state
PRIM 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"
"Script start_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

Module miroir dans l'état PRIM (Ready) sur le serveur node1 et SECOND (Ready) sur le serveur node2.

userconfig.xml :

<vip>
 <interface_list>
 <interface arpreroute="on">
 <real_interface>
   <virtual_addr addr="virtip"
             where="one_side_alias"/>
  </real_interface>
  </interface>
 </interface_list>
</vip>

1.    Sur une station de travail externe (ou un serveur) dans le même LAN, ping des 2 adresses IP physiques + adresse IP virtuelle :

ping adresse_ip_node2
ping adresse_ip_node1

ping virtip
arp –a

2.    safekit swap –m AM (où AM est le nom du module) sur le serveur primaire

3.    Sur la station de travail externe (ou le serveur) dans le même LAN,

ping adresse_ip_node2
ping adresse_ip_node1

ping virtip
arp –a

Note: refaire le ping vers virtip avant de regarder la table ARP car l'entrée peut être marquée obsolète et est rafraichie après le ping

1.    Sur le serveur node1, ipconfig ou ifconfig  (ou ip addr show) retourne virtip en alias sur l'interface réseau

Sur la station externe (ou le serveur), les 3 pings répondent

Sur la station externe (ou le serveur) dans le même LAN, virtip est mappé sur l'adresse MAC de node1

arp –a
adresse_ip_node1        00-0c-29-0a-5c-fc
adresse_ip_node2        00-0c-29-26-44-93
virtip      00-0c-29-0a-5c-fc


2.    Après le swap avec SECOND (Ready) sur serveur node1 et PRIM (Ready) sur serveur node2

Dans le journal du nouveau PRIM, message :

"Virtual IP <virtip of mirror> set"

3.    Sur le serveur node2, ipconfig ou ifconfig  (ou ip addr show)  retourne virtip en tant qu'alias sur l'interface réseau

Sur la station externe (ou le serveur), les 3 pings répondent

Sur la station externe (ou le serveur), virtip est mappé sur l'adresse MAC de ip1.2

arp –a
adresse_ip_node1        00-0c-29-0a-5c-fc
adresse_ip_node2        00-0c-29-26-44-93
virtip      00-0c-29-26-44-93

 

4.2.7         Test réplication de fichiers d'un module miroir

Module miroir dans l’état PRIM (Ready) sur serveur node1 et SECOND (Ready) sur serveur node2.

userconfig.xml :

<rfs>
  <replicated dir "/replicated" mode="read_only" />
                         (ou "C:\replicated")
</rfs>

1.    Sur le serveur PRIM (Ready), aller sous /replicated et créer 1 fichier file1.txt

2.    Sur le serveur SECOND (Ready), aller sous /replicated et essayer de détruire file1.txt

3.    Arrêter le serveur PRIM (Ready) et attendre qu'il soit STOP (NotReady). Puis aller sur l'autre serveur devenu
ALONE (Ready) et créer un nouveau fichier file2.txt

4.    Redémarrer le serveur STOP (NotReady) et attendre qu'il soit SECOND (Ready).

1.  Le fichier file1.txt a été répliqué sur le serveur  SECOND (Ready) sous /replicated

2.    Echec car le répertoire répliqué /replicated est en lecture seule sur le serveur SECOND (Ready)

3.    Le fichier file2.txt n'est pas répliqué dans /replicated sur le serveur
STOP (NotReady)

4.    Le fichier file2.txt est réintégré sur le serveur redémarré. Pendant la phase de réintégration, le serveur est SECOND (Transient)

Dans le journal du serveur réintégré, message
"Updating directory tree from /replicated" 

Et à la fin de la réintégration de /replicated, lorsqu'au moins 1 fichier avec des données modifiées a été réintégré de la machine primaire vers la machine secondaire, message

"Copied <reintegration statistics>" 

"Reintegration ended (synchronize)"

Ce message donne les statistiques de réintégration du répertoire : taille réintégrée, nombre de fichiers, temps, débit sur le réseau de réplication en KB/sec

Note : réintégrer un fichier de plus de 100 MB pour avoir des statistiques fiables

A la fin de la réintégration, le serveur est SECOND (Ready)

 

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)

userconfig.xml :

<heart>
 <heartbeat name="default" />
 <heartbeat ident="flow" />
</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"
"Resource
heartbeat.flow set to down by heart"
"Remote state UNKNOWN grey"
 
"Reason of failover: no
heartbeat "

*       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
SECOND (Ready) sur ce serveur et PRIM (Ready) sur l'autre serveur

 

4.2.10      Test split brain avec un module miroir

Le split brain se produit en situation d'isolation réseau entre les deux serveurs SafeKit. Chaque serveur devient primaire ALONE et tourne l'application. Au retour du split brain, un sacrifice doit être réalisé en arrêtant l'application sur un seul des deux serveurs.

Module miroir dans l’état PRIM (Ready) et SECOND (Ready)

userconfig.xml :

<heart>
 <
heartbeat name=”default” />
 <
heartbeat name=”repli” ident="flow" />
</heart>


+
sur Windows pour gérer le conflit d'adresse IP sur l’IP virtuelle virtip

<vip>

 <interface_list>

  <interface check="on" arpreroute="on">

   <real_interface>

    <virtual_addr addr="virtip"   

       where="one_side_alias"/>

   </real_interface>

  </interface>

 </interface_list>

</vip>

Pour obtenir le split brain, vérifier qu'il n'y a pas de checkers dans userconfig.xml qui peuvent détecter l'isolation : pas de <interface check="on"> ou de <ping> checker

1.    déconnecter en même temps tous les réseaux avec heartbeat (réseau default et repli)

2.    reconnecter les réseaux

*       après isolation réseau des deux serveurs, tous les heartbeats sont perdus. Dans les logs des 2 serveurs,

"Resource heartbeat.default  set to down by heart"
"Resource
heartbeat.flow set to down by heart"
"Remote state UNKNOWN grey"
 
"Local state
ALONE Ready"

*       cas de split brain : les 2 serveurs sont ALONE (Ready) et exécute l'application démarrée dans start_prim

*       lorsque les réseaux de heartbeat sont reconnectés, sacrifice d'un des 2 serveurs ALONE : l'ancien serveur SECOND

*       journal de l'ancien PRIM non sacrifié :

"Remote state ALONE Ready"
"Split brain recovery: staying alone"

*       journal de l'ancien SECOND sacrifié :

"Remote state ALONE Ready"
"Split brain recovery: exiting alone"

"Script
stop_prim"

Le serveur réalise un stopstart : arrêt de l'application avec stop_prim puis réintégration des fichiers répliqués à partir de l'autre serveur

*       retour à l'état PRIM (Ready) et SECOND (Ready) sur les 2 serveurs tel qu'ils étaient avant split brain

Note : la situation de split brain dans un module miroir avec réplication est malsaine. En effet, le sacrifice de l'ex secondaire provoque la réintégration des données sur ce serveur à partir de la primaire et la perte des données enregistrées sur la secondaire pendant la situation de split brain.

Pour cette raison, 2 voies de heartbeat sur 2 réseaux physiquement distincts sont conseillées. Typiquement, un câble entre les deux serveurs va permettre (1) d'éviter le split brain avec un réseau supplémentaire de heartbeat et (2) de faire passer le flux de réplication.

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"
"Script start_both"

 

4.3.4         Test adresse IP virtuelle d'un module ferme

4.3.4.1      Configuration avec vmac_invisible

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>
<lan name=”default” />
</farm>

<vip>
 <interface_list>
  <interface>
  <virtual_interface type="vmac_invisible" >
    <virtual_addr addr="virtip" where="alias"/>
  </virtual_interface>
  </interface>
 </interface_list>

<loadbalancing_list>
<group name="FarmProto">
  <rule port="9010" proto="tcp" filter="on_port"/>
</group>
</loadbalancing_list>
</vip>

 

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 virtuelle :

ping adresse_ip_node1; ping adresse_ip_node2; ping virtip; arp –a
adresse_ip_node1   00-0c-29-0a-5c-fc
adresse_ip_node2   00-0c-29-26-44-93
virtip       5a-fe-c0-a8-38-14

*       Note: par défaut, l'adresse MAC virtuelle est une adresse Ethernet unicast construite avec 5A:FE (SAFE) et l'adresse IP virtuelle en hexadécimale

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>
<lan name=”default” />
</farm>

<vip>
 <interface_list>
  <interface arpreroute=”on”>
  <virtual_interface type="vmac_directed" >
    <virtual_addr addr="virtip" where="alias"/>
  </virtual_interface>
  </interface>
 </interface_list>

<loadbalancing_list>
<group name="FarmProto">
  <rule port="9010" proto="tcp" filter="on_port"/>
</group>
</loadbalancing_list>
</vip>

 

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
adresse_ip_node1   00-0c-29-0a-5c-fc
adresse_ip_node2   00-0c-29-26-44-93
virtip        00-0c-29-26-44-93

 

 

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
UP (Ready) :

*       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)"
"farm load: 128/256 (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:
ffffffff:ffffffff:ffffffff:ffffffff
Bitmap 2:ffffffff:ffffffff:ffffffff:ffffffff:
00000000:00000000:00000000:0000000

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)"
"farm load: 256/256 (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:
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

ou

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
UP (Ready)

*       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)"
"farm load: 128/256 (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:
ffffffff:ffffffff:ffffffff:ffffffff
Bitmap 2:ffffffff:ffffffff:ffffffff:ffffffff:
00000000:00000000:00000000:0000000

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)"
"farm load: 256/256 (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:
ffffffff:ffffffff:ffffffff:ffffffff

dans le journal de node 2:

"farm  membership: node2 (group FarmProto)"
"farm load: 256/256  (group FarmProto)"

256/256: tous les bits sont gérés par node 2

Bitmap 2:ffffffff:ffffffff:ffffffff:ffffffff:
         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éseau

Une 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 serveur

Les 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
UP (Ready) :
ping virtip
64 bytes from ip1.20 icmp_seq=1
64 bytes from ip1.20 icmp_seq=1 (DUP!)
64 bytes from ip1.20 icmp_seq=1 (DUP!)

64 bytes from ip1.20 icmp_seq=2
64 bytes from ip1.20 icmp_seq=2 (DUP!)
64 bytes from ip1.20 icmp_seq=2 (DUP!)
...

Ce test peut être réalisé pendant plusieurs heures en stockant l'output du ping dans un fichier et en vérifiant ensuite qu'il y a eu des (DUP!) tout le temps : date > /tmp/ping.txt ; ping ip1.20 >> /tmp/ping.txt

 

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)

*       les autres serveurs restent UP (Ready) et continuent à exécuter l’applicatif

*       sur timeout dans la console web, l’ancien serveur UP (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 log

"Previous halt unexpected"

*       après redémarrage du module sur le serveur rebooté, le module devient UP (Ready) et il exécute le script start_both qui relance l’applicatif sur ce serveur avec le message dans le log

"Script start_both"

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

Dans userconfig.xml :

<errd>

<proc name="appli.exe" atleast="1"
                                     action="restart "
                                     class="prim "/>
</errd>

 

*       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" 
"Action restart|stopstart called by
errd" 

*       le module passe dans un état
 (Transient), respectivement PRIM, ALONE ou UP

 

*       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

Dans userconfig.xml :

<tcp ident="id" when="prim ">
  <to addr="virtip" port="idport" interval="10"
                                                timeout="5" />
</tcp>

<failover>
<![CDATA[
tcpid_failure: if (tcp.id == down) then stopstart();
]]>
</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" 
"Action restart|stopstart from failover rule tcpid_failure "

*       le module passe dans un état
 (Transient), respectivement PRIM, ALONE ou UP

*       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

Dans userconfig.xml :

<tcp ident="id" when="pre">
  <to addr="ip.externe" port="idport"
                   interval="10" timeout="5" />
</tcp>

<failover>
<![CDATA[
tcpid_failure: if (tcp.id== down) then wait();
]]>
</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"
"Action wait from failover rule tcpid_failure"

*       dans tous les cas, le module devient
WAIT (NotReady) sur le serveur

Redémarrer le service TCP externe :

*       messages dans le log

"Resource tcp.id set to up by tcpcheck"
"Transition
WAKEUP from failover rule Implicit_WAKEUP"

*       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
STOP (NotReady)

*       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
WAIT (NotReady) et l'application est indisponible

 

4.4.4         Test <interface check="on"> sur une interface réseau locale avec action wait

Dans userconfig.xml :

<vip>
 <interface_list>
  <interface check="on">
      <!--
         définition d'une adresse IP virtuelle
         sur le réseau default
       -->
  </interface>
 </interface_list>
</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
(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 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
WAIT (NotReady) sur le serveur

Remettre le câble :

*    &nbs