Vous êtes sur la page 1sur 44

Virtualisation et

Haute disponibilité

Fabien Muller – Hubert Hollender

OpenVz, Pacemaker
Plan de l’exposé
 Contexte
 Technologie de virtualisation
 Technologie de clustering
 OpenVZ
 Pacemaker
 Solution mise en oeuvre
 Bilan
OpenVz, Pacemaker
Problématique de départ
 Sécuriser les services de la DMZ
- Emission des messages électroniques (SMTP)
- Serveurs web institutionnels
- Machines d’accès et de transfert de fichiers
- Serveur d’agendas (OBM, Phpgroupware)
 Renouvellement de la solution existante
- Mécanismes de haute disponibilité
- Virtualisation
OpenVz, Pacemaker
Plan de l’exposé
 Contexte
 Technologie de virtualisation
 Technologie de clustering
 OpenVZ
 Pacemaker
 Solution mise en œuvre
 Bilan
OpenVz, Pacemaker
Technologie de virtualisation

 Ensemble de techniques et d’outils permettant de faire


tourner plusieurs systèmes d’exploitation sur un serveur
 Partage de ressources
 En respectant deux principes fondamentaux :
 Le cloisonnement : chaque système d’exploitation à un
fonctionnement indépendant sans aucune interférence mutuelle
 La transparence : le fonctionnement en mode vitualisé ne
modifie pas le fonctionnement du système ni des applications

OpenVz, Pacemaker
Technologie de virtualisation
 Intérêts :
 Economique : mutualisation du matériel, bénéfice en terme de
coût d’acquisition, de possession (rack, électricité, climatisation,
réseau) et d’exploitation
 Facilité d’administration : installation, déploiement et migration
aisées des machines virtuelles entre serveurs physiques,
simulation d’environnements de qualification ou de pré-
production, création de plateforme de tests ou de
développements réutilisables à volonté
 Sécurisation : séparation des systèmes virtuels et hôtes
(invisibles), répartition des utilisateurs, allocation dynamique des
ressources, dimensionnement des serveurs facilités

OpenVz, Pacemaker
Technologie de virtualisation

 Différentes techniques :
 Machine virtuelle : Utilisation d’un logiciel. Emulation partielle ou
totale d’une machine
 Hyperviseur complet : Utilisation d’un noyau hôte léger
permettant de faire tourner des systèmes d’exploitations natifs
 Paravirtualiseur : Utilisation d’un noyau hôte allégé permettant
de faire tourner des systèmes d’exploitations invités, adaptés et
optimisés
 Isolation : Séparation forte entre différents contextes logiciels sur
un même noyau de systèmes d’exploitation

OpenVz, Pacemaker
Technologie de virtualisation

 Machine virtuelle :

 Emulation logicielle
 Bonne isolation
 Coût en performance
 Exemples :
- Qemu
- VMWare
- VirtualPC, VirtualServer
- VirtualBox

OpenVz, Pacemaker
Technologie de virtualisation

 Hyperviseur complet :
 Utilisation d’un micro-noyau
 Outils de supervision
 Emulation des I/O
 Instructions spécifiques
 Exemples :
- QEMU
- KVM
- VMWare Server
- VirtualPC, VirtualServer
- VirtualBox

OpenVz, Pacemaker
Technologie de virtualisation

 Paravirtualiseur :
 Micro-noyau hôte optimisé
 OS invités adaptés et optimisés
 Sans instructions spécifiques
 Exemples :
- XEN
- KVM (avec Virtio)
- VMWare ESX et ESXi
- Microsoft Hyper-V Server
- Oracle VM

OpenVz, Pacemaker
Technologie de virtualisation

 Isolateur :
 Séparation en contextes
 Régi par l’OS hôte
 Mais cloisonnés
 Un seul noyau
 N espaces utilisateurs
 Solution très légère
 Exemples
- Linux-VServer
- BSD Jail
- OpenVZ

OpenVz, Pacemaker
Plan de l’exposé
 Contexte
 Technologie de virtualisation
 Technologie de clustering
 OpenVZ
 Pacemaker
 Solution mise en œuvre
 Bilan
OpenVz, Pacemaker
Technologie de clustering
 Cluster = agrégat de machines dans un but de travail
coopératif.
 Cluster : pour 2 fonctionnalités
 Augmentation de la puissance de traitement (scalability) : on
veut que la puissance de traitement suive de manière linéaire le
nombre de machines du cluster.
 Augmentation de la disponibilité (availability): on veut minimiser
les inconvénients liées aux pannes par la redondance des
machines entre elles.

OpenVz, Pacemaker
Cluster Haute-Disponibilité

 Le cluster est composé de 3 sous-systèmes logiques :


 l’accès réseau : c’est le point de passage entre les machines du
cluster et les machines clientes
 le support du système de fichier :
 baie disque partagées (SCSI / Fiber Channel,ISCSI)
 Le coeur de calcul : n couples mémoire-CPU.

 Obligatoirement :
 le service doit pouvoir supporter :
 un arrêt brutal.
 un redémarrage brutal.

OpenVz, Pacemaker
Cluster Actif-Passif

 Déploiement simplifiée, niveaux de performances garanti


 Serveur dédié à la reprise de services

OpenVz, Pacemaker
Cluster Actif-Actif

 tous les nœuds du cluster tournent des services


 une seule instance active du service
 risque de corruption des données (R/W simultanées)

OpenVz, Pacemaker
Cluster à répartition de charges

 Ferme de serveurs
 Répartition d’un même service sur plusieurs machines
 Pour le monde extérieur : un serveur unique

OpenVz, Pacemaker
Plan de l’exposé
 Contexte
 Technologie de virtualisation
 Technologie de clustering
 OpenVZ
 Pacemaker
 Solution mise en œuvre
 Bilan
OpenVz, Pacemaker
OpenVZ : principes
 C'est une virtualisation au niveau noyau en réalisant un
partitionnement des ressources systèmes
 C'est le noyau du système d'exploitation qui fait une isolation
entre des machines virtuelles et permet d'exécuter des
applications dans des contextes différents
 Chaque contexte d'exécution est une machine virtuelle (VPS)
se partageant le même noyau.
 Un processus d'une machine virtuelle ne peut pas faire de déni
de service en dehors de sa machine virtuelle
 Il n'y a pas d'« émulation » à proprement parler comme dans
d'autres système de virtualisation.
OpenVz, Pacemaker
OpenVZ : fonctionnalités
 Chaque « Virtual Private Servers » VPS est un système
indépendant
 Les VPS sont des systèmes Linux normaux (file system,
scripts, programmes) : aucune spécificité openVZ
 Les VPS sont totalement isolés les uns des autres (mémoire,
file system, communication inter-processus (IPC))
 Chaque VPS a sa propre adresse réseau, les adresses multiples
par VPS sont permises. Le trafic réseau de chaque VPS est
isolé (pas de snooping possible).

OpenVz, Pacemaker
OpenVZ : fonctionnalités
 Migration à chaud : Sauvegarde sur disque de l’état du serveur
virtuel via un mécanisme de snaphot. Ce fichier peut alors être
transféré sur une autre machine et restauré en état de marche
en quelques secondes.
 Les « beancounters » : Ensemble de paramètres (une
vingtaine) pouvant être attribué à chaque serveur virtuel pour
imposer des limites et préserver les ressources de la machine
hôte.
 Gestion des ressources : Outils permettant de contrôler
l’utilisation des ressources de l’hôte par machine virtuelle
(mémoire résidente et virtuelle, quotas d’utilisation CPU et
disque, priorités d’accès CPU et disque)
 OS template : « file system » d'une distribution Linux
permettant de « peupler » les VPS, disponibles sous forme de
paquetages ou pouvant être créés.

OpenVz, Pacemaker
OpenVZ : avantages
 Pas besoin d’image disque de machine. Il suffit de copier un
file system pour installer une machine virtuelle
 Consommation mémoire légère (la mémoire est mutualisée
entre le serveur hôte et les VPS et la mémoire demandée à
l'hôte est celle réellement utilisée par les processus du VPS)
 Cela peut simplement être vu comme un chroot du file system
amélioré par une isolation des processus
 Tous les processus des machines virtuelles font les appels
système à un seul noyau. Les E/S sont donc plus efficaces que
sur un système qui tournerait à travers une émulation
 Intégré dans la distribution Debian en standard
 Gestion fines des ressources

OpenVz, Pacemaker
OpenVZ : Installation sous Debian
 Installation (noyau patché + utilitaires) :
 aptitude install linux-image-2.6.26-2-openvz-amd64
 aptitude install vzctl vzdump vzquota vzprocps
 shutdown -r now
 uname –r : 2.6.26-1-openvz-686

 Activation du forwarding (sysctl –p) :


 Modification du fichier /etc/sysctl.conf
# packet forwarding enabled and proxy arp disabled
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
# Enables source route verification
net.ipv4.conf.all.rp_filter = 1
# Enables the magic-sysrq key
kernel.sysrq = 1
# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

OpenVz, Pacemaker
OpenVZ : Installation sous Debian
 Récupération d'un template d'OS :
 cd /vz/template/cache
 wget
http://download.openvz.org/template/precreated/debian-5.0-amd
64-minimal.tar.gz/

 Création et configuration du VE :
 vzctl create 101 --ostemplate \
debian-5.0-amd64-minimal.tar.gz
 vzctl set 101 --onboot yes –save
 vzctl set 101 --hostname xstra –save
 vzctl set 101 --ipadd 172.16.0.101 –save
 vzctl set 101 --nameserver 130.79.200.200 –save
 vzctl set CTID –-diskspace 80G:80G –save
 vzctl set 100 –-privvmpages 250M:250M –save
 vzctl start 101
 vzctl enter 101 OpenVz, Pacemaker
OpenVZ : Installation sous Debian
 Autres commandes utiles :
 vzlist
 vzctl stop 101
 vzctl destroy 101
 vzctl exec 101 ps ax ou vztop
 vzmemcheck, vzcpucheck, vzcalc

 Sauvegarde et restauration :
 Par défaut dans /var/lib/vz/dump
 vzdump –compress –dumpdir /mnt/xstra/ --stop
101 –mailto sem-xstra@ipcms.u-strasbg.fr
 vzdump –restore /mnt/xstra/xstra.tgz 101

 Migration à chaud :
 Fonctionne avec rsync et ssh (automatisation via clé ssh)
 Vzmigrate –r no –online –v 172.16.0.102 101
OpenVz, Pacemaker
OpenVZ : Configuration

 Fichier de configuration générale :


 /etc/vz/vz.conf

 Fichiers de configuration des VPS :


 /etc/vz/conf/<ctid>.conf
 /etc/vz/conf/<ctid>.mount
 /etc/vz/conf/<ctid>.umount
 Configuration lue au démarrage
 Modifiable à chaud via l’utilitaire : vzctl set
 Files system des VPS :
 /var/lib/vz
- dump pour les sauvegarde
- private pour les files systems
- template pour les templates
OpenVz, Pacemaker
OpenVZ : Configuration
 Exemple : fichier vz.conf
## Global parameters
VIRTUOZZO=yes
LOCKDIR=/var/lib/vz/lock
DUMPDIR=/var/lib/vz/dump
VE0CPUUNITS=1000
## Logging parameters
LOGGING=yes
LOGFILE=/var/log/vzctl.log
LOG_LEVEL=0
VERBOSE=0
## Disk quota parameters
DISK_QUOTA=yes
VZFASTBOOT=yes
# The name of the device whose ip address will be used as source ip for VE.
# By default automatically assigned.
#VE_ROUTE_SRC_DEV="eth0"
# Controls which interfaces to send ARP requests and modify APR tables on.
NEIGHBOUR_DEVS=detect
## Template parameters
TEMPLATE=/var/lib/vz/template
## Defaults for VEs
VE_ROOT=/var/lib/vz/root/$VEID
VE_PRIVATE=/var/lib/vz/private/$VEID
CONFIGFILE="vps.basic"
#DEF_OSTEMPLATE="fedora-core-4"
DEF_OSTEMPLATE="debian"
## Load vzwdog module
VZWDOG="no"
## IPv4 iptables kernel modules
IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss
ipt_ttl ipt_length"
## Enable IPv6
IPV6="no"
## IPv6 ip6tables kernel modules
IP6TABLES="ip6_tables ip6table_filter ip6table_mangle ip6t_REJECT"
OpenVz, Pacemaker
OpenVZ : Configuration
 Exemple : fichier <ctid>.conf
ONBOOT="no"
# UBC parameters (in form of barrier:limit)
KMEMSIZE="14372700:14790164"
LOCKEDPAGES="356:356"
TCPSNDBUF="1720320:2703360"
TCPRCVBUF="1720320:2703360"
OTHERSOCKBUF="1126080:2097152"
DGRAMRCVBUF="262144:262144"
NUMOTHERSOCK="360:360"
DCACHESIZE="3409920:3624960"
NUMFILE="9312:9312"
AVNUMPROC="180:180"
NUMIPTENT="128:128"
# Disk quota parameters (in form of softlimit:hardlimit)
DISKSPACE="1048576:1153024"
DISKINODES="200000:220000"
QUOTATIME="0"
# CPU fair sheduler parameter
CPUUNITS="1000"
VE_ROOT="/dataipcmsdmz/lv-serveur-web-11/root/$VEID"
VE_PRIVATE="/dataipcmsdmz/lv-serveur-web-11/private/$VEID"
OSTEMPLATE="debian-5.0-amd64-minimal"
ORIGIN_SAMPLE="vps.basic"
HOSTNAME="serveur-web-11.u-strasbg.fr"
NAMESERVER="130.79.200.200"
IP_ADDRESS="130.79.210.3"
NETIF="ifname=eth0,mac=00:18:51:7C:A9:57,host_ifname=veth2010.0,host_mac=00:18:51:91:C1:E5"

OpenVz, Pacemaker
Plan de l’exposé
 Contexte
 Technologie de virtualisation
 Technologie de clustering
 OpenVZ
 Pacemaker
 Solution mise en œuvre
 Bilan
OpenVz, Pacemaker
Pacemaker
 Solution OpenSource de clustering
 Gestion de la haute disponibilité des services et données
 Evolution de hearbeat (différentes branches, version 3)
 Gestion de cluster jusqu’à 16 noeuds
 Gestion de différents modes : Actif/Passif, Actif/Actif
 Depuis la version 2 gestion intégrée des ressources
 Déplacement dynamique/manuel des ressources
 Co-location et ordre de lancement des ressources

OpenVz, Pacemaker
Pacemaker (évolutions)
 Linux-HAv1 :
 Limitation à 2 nœuds en actif/passif
 Configuration par scripts (haresources)
 Pas de gestion automatique des ressources

 Linux-HAv2 :
 Ajout d’un gestionnaire de ressources (CRM)
 16 nœuds en actif/actif ou actif/passif
 Les communications se font via la couche heartbeat
 Configuration par scripts XML ou interface graphique
 Gestion automatique des ressources
 Branche de développement arrêtée en 2007

OpenVz, Pacemaker
Pacemaker (évolutions)
 Pacemaker :
 Nouvelle branche de développement (OpenAIS)
 16 nœuds en actif/actif ou actif/passif
 Communications via heartbit ou OpenAIS
 Configuration par scripts XML ou interface graphique
 Possibilité de simuler des scénarios
 Outils de diagnostiques performants

 Pacemaker (version >= 1.0.5) :


 Remplacement de OpenAIS par Corosync
 Couche basique pour les communications
 Découpage de heartbeat en 3 couches (cluster-glue, resource-
agents, heartbeat)
OpenVz, Pacemaker
Pacemaker (évolutions)

OpenVz, Pacemaker
Pacemaker : Installation sous Debian
 Modification du fichier /etc/apt/source.list :
 deb http://www.backports.org/debian lenny-backports
main contrib non-free
 deb http://people.debian.org/~madkiss/ha lenny main

 Installation avec corosync :


 aptitude install pacemaker
 aptitude install pacemaker-mgmt pacemaker-mgmt-client

 Initialisation de la couche communication (corosync) :


 node 1 : sudo corosync-keygen
scp /etc/corosync/authkey node2:
 node 2 : sudo mv ~/authkey /etc/corosync/authkey
sudo chown root:root /etc/corosync/authkey
sudo chmod 400 /etc/corosync/authkey

OpenVz, Pacemaker
Pacemaker : Installation sous Debian
 Configuration corosync :
 via le fichier /etc/corosync/corosync.conf
 modifier au minimum :
interface {
# The following values need to be set based on your
# environment
ringnumber: 0
bindnetaddr: 172.16.152.130
mcastaddr: 226.94.1.1
mcastport: 5405
}

 activation START=yes dans /etc/default/corosync


 démarrage du service : /etc/init.d/coroync start
 vérification du status via l’utilitaire de gestion des ressources

crm_mon --one-shot -V
OpenVz, Pacemaker
Pacemaker : Configuration
 Via les commandes du gestionnaire de ressources :
 crm : Exemple
primitive fs-serveur-web-01 ocf:heartbeat:Filesystem \
operations $id="fs-serveur-web-01-operations" op \
monitor interval="20" timeout="40" \
params device="/dev/vg-dataipcmsdmz/lv-serveur-web-01" \
directory="/dataipcmsdmz/lv-serveur-web-01" \
fstype="ext3"

primitive ve-serveur-web-01 ocf:heartbeat:ManageVE \


operations $id="ve-serveur-web-01-operations" op \
monitor interval="10" timeout="10" \
params veid="2000"

group gr-serveur-web-01 fs-serveur-web-01 ve-serveur-web-01\


meta target-role="Started"

 Via l’interface graphique:


 hb_gui
OpenVz, Pacemaker
Pacemaker (GUI)

OpenVz, Pacemaker
Pacemaker (GUI)

OpenVz, Pacemaker
Plan de l’exposé
 Contexte
 Technologie de virtualisation
 Technologie de clustering
 OpenVZ
 Pacemaker
 Solution mise en œuvre
 Bilan
OpenVz, Pacemaker
Solution mise en œuvre
VE 100 VE 101 failover VE 105 VE 106

VE 102 VE 103 VE 107 VE 108

OS Virtualisation OS Virtualisation
OpenVZ OpenVZ

Pacemaker Pacemaker
Corosync Corosync

Système d'exploitation Système d'exploitation


Debian Debian

Node 1 Node 2
Stockage partagé
2,25 Tb en raid 6
Solution mise en œuvre
VE1000

eth0 Web-proxy

bridge
eth1
br0 VE1001

eth2 OBM

130.79.210.0/28
VE1002
FTP

VE1003
VE2003
Mysql VE2003
bridge VE2002
VE2001
br1 VE2000
VE1004
Web-05
Web-04
Postgresql Web-03
Web-02
172.16.153.0/24 Web-01

OpenVz, Pacemaker
Solution mise en œuvre
 Baie Provigo 610 SAS :
 8 disques de 500 Go SATA à 7200 tr/min
 1 disque Hot Spare
 1 Raid Group (7 disques) en Raid 6 (2,5 To utile)
 1 contrôleur, cache 1 Go, unité batterie
 alimentation redondante
 double connexions SAS vers les 2 serveurs
 2 Serveurs Calleo 121
 Quad Core
 8 Go de mémoire, 160 Go (en mirroir), 2 x 1 Gb Ethernet + IPMI
 Cluster
 Actif/Actif
 SMTP, OBM, SSH, HTTP, HTTPS, MYSQL, POSTGRESQL

OpenVz, Pacemaker
Plan de l’exposé
 Contexte
 Technologie de virtualisation
 Technologie de clustering
 OpenVZ
 Pacemaker
 Solution mise en œuvre
 Bilan
OpenVz, Pacemaker
Bilan
 Solution en place depuis 9 mois
 Performante, bon niveau de sécurité
 Peu consommatrice en ressources
 Faible coût d’acquisition (environ 6 K€)
 Investissement pour maitriser la technologie
 Bonne documentation
 A tester avec GFS2 et Proxmox

OpenVz, Pacemaker

Vous aimerez peut-être aussi