Clustering Linux Step 1

Le ven. 03 décembre 2010 par Kasey

Premier cour de clustering sous linux de l'année. Au programme : Définition d'un cluster, Vocabulaire, Types de cluster, Base du cluster : stockage physique et Clusters virtuels

Clustering OpenSource

Qu'est-ce qu'un clusteur

Agrégat de machines se comportant comme un seul système.

Ces dernières partagent une baie de disque commune pour assurer :

  • la continuité de service
  • répartition de stockage
  • répartition de la puissance de calcul
  • répartition de la charge

Vocabulaire

  • Failover : Capacité à faire perdurer un service malgré l’arrêt d'un nœud du clusteur.
  • Failback : Capacité a remettre en place un nœud du clusteur après une panne.
  • Scalabulité : capacité d'un système a suivre de manière linaire la capacité de calcul avec l'augmentation du nombre de machines. Plus le delta est faible meilleure est la scalabilité
  • Availability : Augmentation de la disponibilité des machines en minimisant voir supprimant les coupures de service
  • SPOF (Single point of failure) : l'arrêt d'une machine individuelle conduit à l'arrêt du service utilisateur
  • SLA (service level agreement) : définit la qualité de service requise entre un prestataire et un client. Dans le cas d'un cluster il est quantifié en "nombre de neuf" 99% (3,6jr/an), 99,9% (8,7h/an), 99,999% (5m/an), etc.

Pourquoi le clustering ?

Avantages :

  • éviter de paralyser la production d'une entreprise
  • permettre de faciliter l'évolutivité et la maintenance :
    • software
    • hardware

Défauts :

  • Complexité du développement
  • Défaillance du réseau non prise en charge. Si le réseau tombe, la grille devient obsolète.
  • Résolution des incidents plus complexifiée
  • Temps de réponse plus long

Histoire

Le clustering a été introduit en 1975 par "Digital Equipment Corp" pour les systèmes de VAX (Virtual Address eXtention). Le but initial était de rendre le système plus fiable en redondant chaque élément du système.

Mise en place d'un clusteur

  • étude de la limite actuelle du système :

    • vitesse de bus
    • mémoire
    • CPU
    • bande passante
    • ...
  • Un clusteur avec répartition de base de charge va permettre de contourner ces limites.

Note : il vaut mieux mettre en place un clusteur de petites machines plutôt que quelques grosses machines. Initialement Google a été créé sur une base de vieilles machines obsolètes montées en clusteur.

Clusteur de calcul

Un clusteur de calcul utilise des applications spécialisées dans la parallélisation de calcul à travers une couche de communication commune. L'ensemble des cœurs additionne leur puissance de calcul pour arriver à des performances égales à celles qu'atteignent les super calculateurs.

Stockage

Tous les noeuds d'un clusteur partagent généralement un disque dur de quorum. Celui-ci est un espace d'échange pour tous les noeuds afin de :

  • partager les logs
  • échanger les informations de disponibilités
  • assigner les services en cas de pannes

Sans quorum, un clusteur de plus de 2 nœuds ne peut fonctionner.

Note : une sauvegarde du quorum permet de restaurer le clusteur en l'état après une panne.

Le stockage doit être basé sur des technologies qui supportent le multiaccès type :

GlusterFS

  • Server : GlusterFS est un système de fichiers de clusteur basé sur un modèle client/serveur TCP/IP. GlusterFSd permet d'exporter un système de fichier local.
  • Client : mount ou glusterfs est utilisé pour monter le FS côté client

En cas de panne la couche glusterfs gère la panne et récupère les fichiers sur un serveur de failover.

Note :

  • la duplication est réalisation par le processus de transit
  • la réplication a réalisé par un outil tiers type rsync

GNBD

GNMD fournit un accès aux périphériques de type blocs à RedHat GFS à travers TCP/IP. GNBD est similaire dans son concept à NBD (Network Block Devices). GNBD est une application propriétaire RedHat.

DRDB

DRDB (Distributed Replicated Block Devices) est un réplication de bloc over IP. Gestion de 2 nœuds maximum avec une synchronisation en temps réel de manière transparente. Les applications qui enregistrent leurs données sur les périphériques de stockage répliqué le font sans même savoir qu'il s'agit d'une unité de stockage spéciale.

RedHat GFS et un système de fichiers en clusteur qui permet aux nœuds d'un clusteur d'accéder en même temps a un périphérique bloc partagé entre les nœuds.

Pour maintenant l'intégrité du système de fichiers GFS utilise un système de verrouillage nommé locktable qui interdit l’accès en écriture simultané.

On élimine les besoins de duplication, on autorise la lecture simultanée par plusieurs clients en simultanées.

Clusteur virtuel

Bare Metal Virtualisation

Virtualisation au dessus de la couche matérielle x86/x64 (hardware level virtualisation) : l'hyperviseur intègre son propre OS de taille réduite de préférence peu consommateur de ressources

Operating système Virtualisation

Virtualisation au-dessus de la couche système type vmware fusion, qemu, etc.

Application Virtualisation

On virtualise juste une application permettant par exemple de faire fonctionner une application PC sur MAC. Cette application tournant sur un serveur distant.

Xen

  • dom0 : OS hôte qui héberge les serveurs virtuels, C'est le système qui boote obligatoirement au démarrage du serveur. Bien que le noyau soit recompilés pour supporter Xen, la surcouche Xen se lance avant le noyau linux custom.
  • domU : OS invité

Types de clusteur

  • HA : haute disponibilité, le système surveille de hearthbite et remonte les VMs hostées sur un noeud tombé.
  • http://en.wikipedia.org/wiki/Distributed_Resource_Scheduler : migre les machines a la volée en fonction de la charge et des ressources sur les machines du clusteur.
  • vLockStep : Chez VMWare on peut mettre en place une copie d'une machine active sur un système distant. Bien sûr cette technologie est lourde en terme de charge.

Conga

Conga est une suite logicielle permettant à centralisation de la configuration et management d'un clusteur Red Hat et du stockage. il possède :

  • Une interface HTTP
  • Une intégration simplifiée avec un clusteur existant
  • Un affichage des statuts et des logs
  • Une gestion des serveurs et des rôles qui leur sont attribués
  • Luci et Ricci sont les noms des deux services et agents qui permettent de gérer la configuration des nœuds

Fencing

Dans le but de préserver l'intégrité des données, le fencing effectue une action en post crash sur un serveur défaillant afin d'éviter que le service défaillant continue à être utilisé. Cette fonctionnalité s’appuie en général sur un périphérique de fencing de type IPMI et consiste à couper l'alimentation électrique du serveur (Power Fencing). Il est aussi possible de retirer le support du stockage (FC Switch Fencing ou GNBD Fencing). Ainsi un serveur privé de quorum n'est plus éligible comme noeud actif.

Autre fencing, on peut réaliser des actions sur tous les éléments du serveur comme le réseau par exemple.

LVS

LVS est un système s’appuyant sur un équipement appelé répartiteur de charge (load balanceur) qui est chargé de distribuer la charge entre les nœuds. Il permet ainsi de lisser le tarffic et d'améliorer les performances.

LVS supporte trois architectures :

  • Serveurvirtuels avec translations d'addresse IP : NAT
  • Serveurvirtuels avec Tunneling IP
  • Serveurvirtuels avec routage direct