Cet article est particulier, car il n’est pas écrit par mes soins (Pierre-Yves Dubreucq) mais par Tony Oger de LibrA-LinuX.
Cet article a pour but de présenter une solution de clustering sous Linux, permettant de mettre en oeuvre simplement une architecture pour apporter la haute-disponibilité à vos applications critiques.
A l’instar des solutions existantes du monde libre (Linux HA) , cette solution utilise le logiciel libre OpenSVC (produit Français) qui, couplé à un mécanisme de bascule automatique (HeartBeat, Keepalived, OpenHA) permet une gestion centralisée de vos services sous Linux, indépendamment des couches applicatives (Services web apache, J2EE, base de données, stockage et serveurs de fichiers, messagerie, DNS ,LDAP …). L’atout majeur de cette solution consiste en cette couche d’abstraction (technologie de clustering autour d’OpenSVC) qui permet comme tout type de cluster actif/passif, le pilotage des ressources et services, la reprise de vos services en minimisant le temps d’interruption grâce au mécanisme de bascule automatique, mais garantit également la cohérence des données entre les noeuds du cluster, par la synchronisation de snapshots filesystem LVM.
Introduction
OpenSVC (framework python sous licence GPLv2) est un gestionnaire de « services » fonctionnant en mode cluster. Les services sécurisés sont définis comme des ensembles de ressources (IP, Volume de Disques, Filesystems, synchronisations, et lanceurs d’applications). Ces services sont ainsi pilotés via opensvc installé sur chacun des noeuds du cluster et compatible avec toutes les distributions Linux, les unix Solaris et HP-UX.
Dans le cadre d’un déploiement massif du framework OpenSVC, les développeurs du produit ont conçus un collecteur central, contenant la configuration des services, leurs états et les journaux d’actions de chacun des noeuds, que l’on peut consulter grâce à une interface web. La partie collecteur est quand à elle non libre et soumise à une tarification de licence par service /an, mais celle-ci n’est pas nécessaire au bon fonctionnement du cluster.
Les services typiques qui peuvent bénéficier d’une haute-disponibilité grâce à l’implémentation de cette solution sont :
- Serveurs de mail : IMAP, POP, SMTP
- Serveurs de Proxy cache et Reverse-Proxy
- Serveurs web : HTTP, HTTPS
- Serveurs d’application J2ee : Websphere, WebLogic, JBOSS, Tomcat
- Serveurs de fichiers et stockage : FTP, SAMBA, LV…
- Serveurs de noms : DNS
- Serveurs d’annuaire : LDAP
- Base de données : Oracle, MySQL, PosgreSQL
- etc …
Fonctionnalités et architecture
Les principales fonctionnalités et avantages que fournit ce gestionnaire de cluster Linux :
- Scalabilité et mutualisation : permet de gérer des milliers de noeuds et services basés sur une seule et même technologie de clustering.
- Compatibilité : OpenSVC fonctionne aujourd’hui sur les OS Linux, Solaris et HP-UX et peut aisément être portés sur d’autres systèmes d’exploitation (python).
- Cohérence des données entre des noeuds sans stockage partagés : Permet de piloter les réplications des données par snapshot de filesystems LVM et synchronisation rsync. L’idéal pour un cluster OpenSVC étant 2 noeuds de production (PRD) en shared disk, avec un noeud de reprise (DR) en copie asynchrone.
- Virtualisation : OpenSVC peut piloter des services eux-mêmes intégrés sous forme de machines virtuelles ou containers (kvm, xen , lxc, zones…)
- Haute-disponibilité : La haute-disponibilité et la reprise des services est apportée par la compatibilité avec les mécanismes standards de bascules automatiques et battement de coeur (OpenHA, heartbeatd, keepalived). Gestion des IP virtuelles de service. Possibilité de définir des plans de reprise (Disaster recovery plans) dans la configuration des services.
- Déploiement : Rapidité de déploiement des outils OpenSVC et des créations des containers de services
- Standard et Open source: Le framework OpenSVC est sous licence GPLv2, le collector est quant à lui soumis à un système de licence
- Tracabilité et audit : toutes les commandes executées par OpenSVC sont inscrites dans des journaux de logs en local sur chaque noeud, mais également centralisés sur le collector
- Supervision: Remontée d’alertes mail, et flux RSS, intégration facilitée pour la remontée d’alertes vers des systèmes de supervision
Gestion centralisée (collecteur)
Le collecteur est une interface web de gestion de vos différents services clusterisés qui, au travers de différentes vues et tableaux de bords, apporte des fonctionnalités supplémentaires :
- monitoring : pour afficher l’état des différentes ressources des services à l’aide d’un tableau de bord (graphique dynamique de la topologie de vos services)
- audit : vous permettant de visualiser les journaux de logs des actions entreprises par OpenSVC et d’agir en conséquence
- plan de reprise : pour concevoir des plans de reprise (disaster recovery plans)
- délégation d’administration : possibilité d’assigner des responsables à des services ou groupe de services, aiguillage des alertes
- nodes (asset): pour paramétrer les différentes informations matérielles et de géo-localisation de vos noeuds physiques, afin de pouvoir déterminer le périmètre des services impactés par un incident (fuite sur un rack…)
- alertes: pour visualiser les différentes remontées d’alertes du systèmes, et les gérer en ligne.
Mise en oeuvre
L’installation d’OpenSVC nécessite pyhton2.6 comme pré-requis et les packages pour CentOS, RedHat, Debian et Ubuntu sont disponibles dans le repository d’OpenSVC
Liens utiles :
Site Officiel d’OpenSVC
Documentation d’OpenSVC