Contextualisation
Un client souhaite installer une application on premise (hébergée à domicile, dans une DMZ) pour ses clients et collaborateurs en déplacement.
Pour assurer la sûreté du service web, nous devons mettre en place une sauvegarde en temps réel sans interrompre le service.
Les contraintes du service sont :
- sauvegarde en temps réel : toute modification doit être sauvegardée immédiatement,
- sauvegarde sans interruption du service aux clients
- historique sur une semaine : on doit pouvoir avoir une sauvegarde de la fin de semaine précédente et des SAV régulières entre les deux.
- facilité et rapidité de reprise du service client
- volume de données maîtrisé dans la VM et sur l'hyperviseur. (maxi = équivalent à la VM d'origine)
Avant de répondre au choix techniques, nous allons planifier le travail de mise en place du serveur primaire, du serveur secondaire et de la copie automatisée des données.
Comment faire ? Les choix techniques
Définition des besoins
- le service doit être continu, ininterrompu
- les données doivent être résistantes contre la perte de données
La solution vers laquelle nous nous orientons est une copie des données en temps réel vers un serveur secondaire.
Cependant, une question se pose : Quelle solution adopter ?
- Sauvegarde complète, différentielle ou incrémentale ?
- copie en temps réel et permanente ?
Comparatif
Les solutions les plus basiques sont la sauvegarde (plusieurs types différents) ou la réplication.
solution | Temps réel | Volume de données | Complexité de restauration | nécessite une interruption |
---|---|---|---|---|
sauvegarde : dump ou copie des fichiers | non | moyennement important quel que soit le type de SAV | facile (sav complète ou différenteille) à complexe (sav incrémentale) | Interruption le temps de l'arrêt du service et de l'extraction des données |
copie complète ou snapshot de la VM originale | non | lourd, surtout si on conserve un historique régulier | très facile, on remplace le serveur à moyen restauration de snapshot | Interruption le temps de l'arrêt et la copie de la VM |
réplication du SGBD | oui | lourd : on a un clone de la VM | Aucune : simple bascule de serveur | non, les données sont synchronisées en temps réel en permanence |
Analyse
Les sauvegardes ne nous permettent pas d'avoir une réelle synchonicité entre la dernière sauvegarde et l'original.
On utilisera donc plustôt une technique de réplication en temps réel afin d'éviter les interruptions du service principal.
La réplication qui sera, elle, sauvegardée en fin de semaine afin de ne pas perturber le service en production. Cependant, durant la sauvegarde, le service n'est plus répliqué.
Il aurait été possible de :
- faire des scripts de sauvegarde (dump sql ou copies brutes de fichiers) directement sur les données originales mais on a vu que ...
- les dump prennent un peu de temps et le service serait indisponible à ce moment-là
- les données risquent d'être incohérentes en raison de dump d'un table entre deux opérations de saisies.
- effectuer des snapshot du serveur ww1 avec le même problème d'interruption.
(Bloc 3) : On notera que si le serveur principal ww1 est attaqué, le service s'effondre -> DoS
- la réplication risque de répliquer les erreurs (corruption des données, chiffrement des données aussi répliqué …)
- des données à saisir ne pourront plus l'être et on aura une perte d'activité durant l'interruption du service.
Second point, le serveur réplica pourrait aussi être attaqué. Donc il devra être également protégé.
Quels besoins pour le projet ?
La base applicative :
- Serveur de données mariaDB : c'est le cœur de la réplication de données entre deux serveurs de données. Donc c'est obligatoire
- Serveur apache+php +phpmyadmin : plutôt nécessaire pour pouvoir contrôler la réplication
- Application de test : pour … tester ? Ce serait bien, non ?
Les utilitaires de base :
- Serveur ftp : pourquoi pas ? ça permettra de faire des modifs de l'appli
- sans devoir se connecter au net
- transférer des fichiers directement sur le serveur.
- ssh : O-BLI-GA-TOIRE … ben oui, on pourra ainsi copier/coller des commandes au lieu de tout taper à la main et c'est plus réaliste par rapport à des serveurs distants (proxmox, sur le net, etc. …). Associé à putty, on va faire un malheur.
Y configurer les accès root. Attention, en situation réelle, ne pas autoriser l'accès à ces services avec root, c'est une faille de sécurité importante. Mais pour nos tests, ça va nous simplifier la gestion.
Les utilitaires du serveur :
- apt : incontournable pour télécharger les paquets *
- wget : idem pour le téléchargement direct d'internet (wget \= web get) *
- unzip : pour dézipper les fichiers … zip
(*) configurer le proxy, si nécessaire