exemple de documentation

Transcription

exemple de documentation
Infrastructure Exemple
Table des matières
1. Serveurs...........................................................................................2
1.1 Serveurs physiques .......................................................................... 2
1.2 Serveurs Virtuels.............................................................................. 2
2. Services............................................................................................3
2.1 Service mail.................................................................................... 3
2.2 Service MySQL................................................................................. 3
2.3 Service Web.................................................................................... 4
2.4 Cas particulier des limites d'utilisation :.................................................. 4
2.5 Service DNS.................................................................................... 5
2.6 Pré-production................................................................................. 5
3. Sauvegardes......................................................................................5
4. Monitoring.........................................................................................6
5. Sécurité............................................................................................6
Annexes................................................................................................7
A. Lexique :......................................................................................... 7
B. Accès aux serveurs............................................................................. 7
C. Attributions des IP............................................................................. 8
D. Informations utiles............................................................................. 9
Votre Contact Technique:
Nicolas Lafont
09 72 26 94 72
[email protected]
Votre Contact Commercial:
Margot Lafont
09 72 26 94 72
[email protected]
Version 1.1 du 17/04/12
Page 1/9
1. Serveurs
1.1 Serveurs physiques
L'infrastructure se répartit sur 2 machines physiques, louées chez OVH, de la
gamme EG 2011, disposant chacune de 24 Go de RAM, 2 To d'espace disque en sata
raid 1 soft.
➢
nsxxxxx.ovh.net
192.168.0.198
A
➢
nsyyyyy.ovh.net
192.168.0.199
B
Ces serveurs, utilisant une distribution Debian Squeeze (6.0) sont virtualisés avec
la technologie libre et éprouvée XEN, en version 4.0. Les machines virtuelles (VM)
sont montées sur des volumes logiques (Logical Volume – LVM).
Sur les deux serveurs hôtes sont installés les hyperviseurs, mais aussi Heartbeat
et Pacemaker, dont l'utilisation sera détaillée plus loin.
1.2 Serveurs Virtuels
Nous pouvons compter, à l'heure actuelle, 5 machines virtuelles, listées cidessous :
➢
mail BA , machine virtuelle chargée du service mail
2 Go de RAM, 2VCPU – 10.0.100.241
➢
web1 B , machine virtuelle web 1
4 Go de RAM, 2 VCPU – 10.0.100.244
➢
web2 A , machine virtuelle web 2
4 Go de RAM, 2 VCPU – 10.0.100.245
➢
mysql1B , machine virtuelle mysql 1
4 Go de RAM, 4 VCPU – 10.0.100.242
➢
mysql2 A , machine virtuelle mysql 2
4 Go de RAM, 4 VCPU – 10.0.100.243
Les ressources des serveurs physiques ne sont pas exploitées en totalité, ce qui
permet une souplesse pour augmenter le nombre de machines virtuelles, soit pour
augmenter la capacité de traitement des sites, soit pour avoir un environnement de
pré-production (test de php 6 par exemple) .
Ces machines virtuelles sont installées en Debian Squeeze (6.0)
Version 1.1 du 17/04/12
Page 2/9
2. Services
2.1 Service mail
La configuration pour la machine virtuelle mail (mail) est disponible sur les deux
serveurs hôtes.
Les volumes logique de données utilisés pour cette machine virtuelle sont des
supports pour une couche DRBD, entre les deux serveurs hôtes, ce qui nous permet
d'assurer, à tout instant, que les données sont à jours sur les deux serveurs.
L'un des deux serveurs est élu « maître » et peut donc lancer la machine virtuelle
mail. En cas de défaillance du serveur hôte maître à l'instant T, le second va prendre
la main, avec des données datant de quelques secondes au maximum. (perte de mail
possible et très limitée sur le papier, moindre que sur un serveur unique, jamais
rencontrée dans la pratique).
La machine virtuelle mail est donc en service sur l'un ou l'autre des serveurs
hôtes, mais pas sur les deux en même temps (sauf cas particulier exposé plus bas).
La machine virtuelle mail, 10.0.100.241, lance donc les services mails suivants :
➢
➢
➢
➢
➢
➢
Postfix
réception et envoi des mails serveur <=> internet
Postgrey
filtrage des mails par greylisting, pour limiter le spam
Amavis
filtre et gestion de filtrage
Spamassassin
antispam
Clamav
antivirus
Courier
pop et imap, réception des mails serveur => lecteur de mail
Tous ces logiciels sont dans leurs versions standard Debian.
2.2 Service MySQL
Les deux machines virtuelles MySQL (10.0.100.242 & 10.0.100.243) font tourner
un serveur MySQL, configuré en double réplication (donc chacun des serveurs copie
les transactions faites sur le second), avec un auto_increment décalé (par pas de 10
avec un offset différent).
Keepalived tourne sur les serveur maître, et gère l'IP flottante de service MySQL :
10.0.100.251 . Toutes les requêtes MySQL doivent donc se faire sur cette IP.
Les logs des requêtes lente est activé, pour toute requête d'une durée supérieure
à 2 secondes.
Version de MySQL utilisée : Perconna 5.5 .
Version 1.1 du 17/04/12
Page 3/9
2.3 Service Web
Les deux machines virtuelles web ont un comportement un peu différent, et se
caractérise comme l'élément « complexe » de l'infrastructure.
La partition de données des machines virtuelles web est basée sur une couche
DRBD, gérée par les deux serveurs.
Le serveur web élu « maître », via les logiciels Heartbeat et Pacemaker va donc
monter les données DRBD comme un système de fichier local, puis l'exporter par NFS.
Juste après, il va monter les IPs de services :
➢
➢
NFS : 172.16.0.150 (ip privée)
WEB : 10.0.100.250
Il va par ailleurs lancer Keepalived, utilisé ici uniquement comme un répartiteur de
charge (ipvs avec une surcouche de test pour savoir quel serveurs réel sont actifs).
Pour faire fonctionner Keepalived, il faut lancer une IP flottante de service, qui n'est
donc pas utilisée : 172.16.0.40 (ip privée). Apache sera aussi lancé sur le serveur
« maître ».
Sur le serveur esclave, les données seront montées par NFS (donc à jour en temps
quasi réel, les uploads de données peuvent se faire des deux serveurs), et Apache
sera lancé également.
En cas de défaillance du serveur « maître », le serveur esclave va démonter le
NFS, puis s’élire « maître » et suivre la procédure décrite ci dessus. Le temps de
reprise sur erreur est d'environ 1 minute, et 100% automatique.
En cas de modification de configuration de PHP ou Apache, les modifications
doivent être faites sur web1 , sur lequel doit ensuite être lancé la commande
/usr/local/bin/synchro-conf.sh pour que web2 prenne la nouvelle configuration.
2.4 Cas particulier des limites d'utilisation :
N'ayant que deux serveurs, et n'ayant pas la possibilité de faire de l'IPMI (reboot
hard à distance entre autre) sur ceux-ci, nous ne pouvons garantir que le cluster
(services web et mail) sera dans un état cohérent en tout instant, car le risque de
split-brain ne peut être écarté.
Cela pourrai être contourné par la mise en place de machine virtuelle externe
témoin, servant à vérifier que les serveurs ont accès au réseau. (il faut que le serveur
voit au moins 1 autre node du cluster pour être sur d'être légitime).Les coûts de ces
témoins seraient de 35 euros HT par mois, et ne sont pas justifiées, à notre sens pour
le moment.
Version 1.1 du 17/04/12
Page 4/9
En effet, en cas de split-brain (cas critique), en moins d'une heure de temps nous
pouvons repasser les clusters dans un état cohérent, avec un risque de perte de
données très faible (risque également limité par les sauvegardes), et sans coupure de
service notable (le plus gros risque étant un ralentissement de service). Nous
estimons l'occurrence des split-brain ne pourrait que difficilement atteindre 6 cas par
an, ce qui implique un coût de témoins plus important que le coût d'intervention en
cas de problème.
2.5 Service DNS
Le service DNS est assuré par l'infrastructure DNS de WDMedia, qui n'est pas liée
aux serveurs hôtes. Ceci permet une meilleure sécurisation de ce service.
Les demandes de changement de configuration DNS seront donc à faire auprès de
WDMedia, cette configuration ne pouvant se faire directement sur les serveurs hôtes
ou machines virtuelles.
2.6 Pré-production
Le serveur mail fait aussi office de serveur de pré-production, pour tester les
modifications à venir.
Pour utiliser le mode test, il faut modifier le fichier hosts de votre poste pour faire
pointer l'adresse du site désiré vers l'ip du serveur : 10.0.100.241 (il faut penser à
modifier le fichier dans l'autre sens après tests pour retourner sur la production).
Il existe deux scripts qui permettent de synchroniser les données de production
vers le serveur de pré-production, le premier synchronisant les fichiers différents (une
liste de fichier/répertoire à ne pas resynchroniser existe en début de fichier), le
second vidant et ré important les données mysql :
➢
➢
/usr/local/bin/synchro-apache.sh
/usr/local/bin/synchro-mysql.sh
3. Sauvegardes
Les sauvegardes MySQL sont effectuées sur le serveur primaire (détecté par la
présence de l'ip flottante) une fois par jour, dans la nuit (sauf pour la base data,
sauvegardée toutes les 2 heures), via un mysqldump de chaque table qui est
compressé et stocké dans une partition séparée (/backup/), puis envoyé sur le
serveur secondaire via rsync. La durée de conservation des sauvegardes MySQL est de
14 jours.
Les sauvegardes Web sont effectuées sur le serveur primaire (détecté par la
présence du montage de la partition drbd) une fois par jour, dans la nuit, en faisant
une archive tar.gz de chaque répertoire situé dans /home/web/ . Cette archive est
stockée dans une partition séparée (/backup/), puis envoyé sur le serveur secondaire
via rsync. La durée de conservation des sauvegardes Web est de 7 jours.
Version 1.1 du 17/04/12
Page 5/9
Les sauvegardes mail sont effectuées sur le serveur mail, une fois par jour, dans la
nuit, en faisant une archive tar.gz de chaque répertoire contenant un @ situé dans
/home/mail-data/ . Cette archive est stockée dans une partition séparée (/backup/).
La durée de conservation des sauvegardes mail est de 10 jours.
Chaque partition de sauvegarde fait 10 fois la taille de celle de production.
Les sauvegardes mysql et web ensuite synchronisées sur les serveurs de
sauvegarde OVH par FTP. L'accès a ces sauvegardes n'étant possible que depuis les
serveurs maîtres, le transfert se fait par création d'un snapshot des partitions de
backup sur le serveur maître, envoi ftp depuis le snapshot, puis destruction du
snapshot. La durée de conservation des sauvegardes vers le FTP OVH est de 5 jours.
4. Monitoring
Les serveurs sont monitorés par le logiciel shinken (réécriture de nagios), en
redondance sur deux réseaux différents.
➢
➢
➢
➢
➢
➢
➢
Les services supervisés sont :
mail: disk, imap, load, mailq, maj, ping, pop, procs, smtp, ssh
mysql1 : disk, load, maj, mysql, mysql-lock-cont, mysql-long, ping, procs, ssh
mysql2 : disk, load, maj, mysql, mysql-lock-cont, mysql-long, ping, procs, ssh
web1 : crm, disk, drbd0, http, http-speed, load, mailq, maj, ping, procs, ssh
web2 : crm, disk, drbd0, http, http-speed, load, mailq, maj, ping, procs, ssh
nsxxxxx.ovh.net : crm, disk, drbd0, drbd1, drbd2, load, mailq, maj, ping,
procs, raid, ssh
nsyyyyy.ovh.net : crm, disk, drbd0, drbd1, drbd2, load, mailq, maj, ping,
procs, raid, ssh
Il y a également un monitoring des services web et mysql sur les ip flottantes des
services correspondant.
.
5. Sécurité
Les serveurs (hors serveurs hôtes) sont protégés par un firewall (arno-iptablesfirewall), ainsi que par fail2ban (logiciel bloquant les attaques brute-force en
analysant les logs). Les ports ouverts sur les IP publiques sont :
web1 : 21, 80, 220, 443
web2 : 80, 220, 443
mysql1/mysql2 : 220
mail : 25, 80, 110, 143, 220, 443, 587, 993, 995
Des règles spécifiques sont définies pour autoriser les communications internes
nécessaires, ainsi que pour la supervision depuis nos serveurs.
Version 1.1 du 17/04/12
Page 6/9
Annexes
A. Lexique :



•
•






DRBD :
Raid 1 entre deux serveurs, utilisant le réseau pour propager les données.
Perconna :
Version de MySQL patchée par Google, afin d'avoir de meilleures performances InnoDB.
LVM :
Logical Volume Manager. Il s'agit de partition virtuelles, permettant entre autres :
les Snapshot
la ré-allocation de ressources disques (augmentation ou diminution de la taille)
NFS :
Network File System. Système de fichier pour le « partage » de données Unix via le réseau.
Heartbeat :
Logiciel de couche de communication cluster.
Pacemaker :
Logiciel gestionnaire de ressources pour un cluster.
Keepalived :
Logiciel de gestion de redondance et de répartition de charge.
IPMI :
Accès au bios du serveur à distance, et contrôle de certaines fonctions.
Split-brain :
Fait d'avoir son cluster coupé en deux, avec les services lancés sur chacune des machines en
parallèle, sans que les machines ne se voient l'une l'autre, se croyant donc chacun « maître ».
Ce cas se produit typiquement quand les machines ne se voient plus l'une l'autre mais voient
encore le reste d'internet. C'est un cas assez rare.
B. Accès aux serveurs
B.1 SSH
L'utilisateur exemple a été créé sur l'ensemble des serveurs. Il dispose d'un accès
root via sudoers. Le mot de passe attribué a cet utilisateur est : deo7ohn3Aqu8aey6
. L'accès a ssh se fait sur le port 220 (ceci limite les scans ssh).
B.2 SFTP/FTP
L'accès SFTP se fait sur les serveurs web1 ou web2 , avec les identifiants ci
dessous (l'accès FTP est également possible mais non recommandé). Le compte
exemple2 fonctionne également sur le serveur mail (preprod)
Nom d'utilisateur : exemple2
Mot de passe : AijaiLae5Coora2s
Répertoire de base : /home/ sur web1/web2 , /preprod_data/ sur mail
B.3 PhpMyAdmin
URL : https://www.lesiteexemple.fr/phpmyadmin/
URL preprod : https://mail.lesiteexemple.fr/phpmyadmin/
Nom d'utilisateur : exemplephpmyadmin
Mot de passe : OxeeyeeZ7woh2ui9
Version 1.1 du 17/04/12
Page 7/9
B.4 Mail
Adresse du serveur pop/imap/smtp : mail.lesiteexemple.fr
Port SMTP : 25 ou 587 (l'utilisation du SMTP nécessite une identification)
Administration des comptes mails :
URL :https://mail.lesiteexemple.fr/postfixadmin/login.php
Nom d'utilisateur : [email protected]
Mot de passe : eepoTohx6eex5azu
Webmail : https://mail.lesiteexemple.fr/roundcube/
B.5 Logs
Les principaux logs sont accessible via un utilisateur spécifique :
Nom d'utilisateur : exemplelog
Mot de passe : ahdeorahwaV5liil
Les logs apache sont accessible sur les serveurs web1 et web2, dans
/var/log/apache2/ . Ils ne sont pas centralisés, donc ils sont propres a chaque
machines.
Les logs des requêtes lentes mysql sont accessibles sur les serveurs mysql1 et
mysql2, dans /var/log/mysql/ . Ils ne sont pas centralisés, donc ils sont propres a
chaque machines, néanmoins seul le serveur maître mysql a un log rempli.
C. Attributions des IP
192.168.0.198 : nsxxxxx.ovh.net : serveur maître 1
192.168.0.199 : nsyyyyy.ovh.net : serveur maître 2
10.0.100.240
10.0.100.241
10.0.100.242
10.0.100.243
10.0.100.244
10.0.100.245
10.0.100.246
10.0.100.247
10.0.100.248
10.0.100.249
10.0.100.250
10.0.100.251
10.0.100.252
10.0.100.253
10.0.100.254
10.0.100.255
Version 1.1 du 17/04/12
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
réservée pour le réseau
mail
mysql1
mysql2
web1
web2
IP flottante (web1/web2) : service web
IP flottante (mysql1/mysql2): service mysql
réservée pour le réseau
réservée pour le réseau
réservée pour le réseau
réservée pour le réseau
Page 8/9
172.16.0.10 : ip privée web1
172.16.0.20 : ip privée web2
172.16.0.40 : ip privée flottante sans service (réservée keepalived)
172.16.0.150 : ip privée flottante (web1/web2) : service nfs
D. Informations utiles
•
•
•
•
Numéro
Numéro
Numéro
Adresse
d'astreinte : 09.72.26.94.72
standard : 09.72.26.94.72
support infogérance : 09.72.26.94.72
e-mail : [email protected]
Version 1.1 du 17/04/12
Page 9/9