Corosync Cluster Engine

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche
Corosync Cluster Engine

Informations
Développé par The Corosync Development Community
Première version
Dernière version 2.4.2[1] ()
Dépôt github.com/corosync/corosyncVoir et modifier les données sur Wikidata
Écrit en C
Environnement Logiciel multiplate-forme
Type Système de communication en groupe
Licence Licence BSD modifiée
Site web corosync.github.io/corosync/

Corosync Cluster Engine est projet de logiciel Open source dérivé de l'OpenAIS[2] project et sous licence Licence BSD modifiée. La mission de Corosync est de développer et de maintenir un cluster open source défini par la communauté.

Fonctionnalités[modifier | modifier le code]

Corosync Cluster Engine est un système de communication de groupe avec des fonctionnalités supplémentaires pour la mise en œuvre de la Haute disponibilité dans les applications.

Corosync Cluster Engine fournit 4 fonctionnalités sous forme d'API écrites en C :

  • un groupe restreint de processus avec une garantie de synchronisation virtuelle afin de créer des machines à états répliquées ;
  • un simple gestionnaire de disponibilité qui redémarre les processus d'application lorsqu'ils ont échoué ;
  • une configuration et des statistiques stockées en base de données dans la mémoire vive permet de définir, de récupérer et de recevoir des notifications concernant les changements d'état ;
  • un système de notification qui se déclenche lorsque un quorum est atteint ou perdu.

Le logiciel est conçu pour fonctionner sur des réseaux UDP et InfiniBand.

Architecture[modifier | modifier le code]

Le logiciel est composé d'un binaire qui utilise un modèle de communication client-serveur entre les bibliothèques et les moteurs de service. Les modules chargés, appelés moteurs de service, sont chargés dans le moteur de cluster Corosync et utilisent les services fournis par l'API interne de Corosync Service Engine.

Les services fournit par l'API interne de Corosync Service Engine sont :

  • une implémentation du protocole Totem Single Ring Ordering and Membership fournissant le modèle Extended Virtual Synchrony pour la messagerie et l'adhésion ;
  • le système coroipc haute performance à mémoire partagée IPC ;
  • une base de données orientée objet qui implémente le modèle de base de données en mémoire ;
  • un système pour acheminer les messages IPC et Totem vers les moteurs de service correctes ;

Corosync Cluster Engine fournit plusieurs moteurs de service par défaut qui sont utilisés via les API :

  • cpg - (Closed Process Group) un groupe restreint de processus
  • sam - (Simple Availability Manager) un gestionnaire de disponibilité
  • confdb - (Configuration and Statistics database) une configuration et des statistiques sous forme de base de données
  • quorum - fournit des notifications de gain ou de perte du quorum

Historique[modifier | modifier le code]

Le projet a été officiellement annoncé en juillet 2008 par l'intermédiaire d'un document de conférence au Symposium Linux d'Ottawa.[3] Le code source d'OpenAIS a été refactoré de sorte que les composants d'infrastructure de base soient placés directement dans Corosync et les API de Forum SA ont été conservées dans OpenAIS.

Dans la deuxième version de Corosync, publiée en 2012, le sous-système de quorum a été modifié et intégré dans le démon.[4] Cette version est disponible depuis Fedora 17 et RHEL7[5].

Notes et références[modifier | modifier le code]

  1. Versions
  2. https://oss.oracle.com/osswiki/OpenAIS.html
  3. (en) S. Dake, C. Caulfield et A. Beekhof, « The Corosync Cluster Engine », Proceedings of the Linux Symposium,‎ , p. 85–99 (lire en ligne)
  4. Christine Caulfield,New quorum features in Corosync 2 - 2012-2016
  5. Linux Cluster next generation, LVEE, 2013

Annexes[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

  • Michael Schwartzkopff, Clusterbau: Hochverfügbarkeit mit Linux, O'Reilly, 2012 (ISBN 978-3-86899-358-5), 424 pages.

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]