Corosync (project)
Encyclopedia
The Corosync Cluster Engine is an open source
project Licensed under the New BSD License derived from the OpenAIS project. Corosync's mission is to develop, release, and support a community defined de-facto open source cluster executive for use by multiple open source and commercial cluster projects or products.
with additional features for implementing high availability
within applications.
The project provides four C
programming interfaces
features:
The software is designed to operate on UDP/IP and InfiniBand
networks natively.
communication model between libraries and service engines. Loadable modules, called service engines, are loaded into the Corosync Cluster Engine and use the services provided by the Corosync Service Engine internal API.
The services provided by the Corosync Service Engine internal API are:
Additionally Corosync provides several default service engines that are used via C Application Programming Interfaces:
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
project Licensed under the New BSD License derived from the OpenAIS project. Corosync's mission is to develop, release, and support a community defined de-facto open source cluster executive for use by multiple open source and commercial cluster projects or products.
Features
The Corosync Cluster Engine is a group communication systemGroup communication system
The term Group Communication System refers to a software platform that implements some form of group communication. Examples of group communication systems include IS-IS, JGroups, Spread Toolkit, Appia framework, QuickSilver, and the group services component of IBM's RSCT...
with additional features for implementing high availability
High availability
High availability is a system design approach and associated service implementation that ensures a prearranged level of operational performance will be met during a contractual measurement period....
within applications.
The project provides four C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
programming interfaces
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...
features:
- A closed process group communication model with virtual synchronyVirtual synchronyVirtual synchrony is an interprocess messaging passing technology. Virtual synchrony systems allow programs running in a network to organize themselves into process groups, and to send messages to groups...
guarantees for creating replicated state machines. - A simple availability manager that restarts the application process when it has failed.
- A configuration and statistics in-memory database that provide the ability to set, retrieve, and receive change notifications of information.
- A quorumQuorum (Distributed Systems)A quorum is the minimum number of votes that a distributed transaction has to obtain in order to be allowed to perform an operation in a distributed system...
system that notifies applications when quorum is achieved or lost.
The software is designed to operate on UDP/IP and InfiniBand
InfiniBand
InfiniBand is a switched fabric communications link used in high-performance computing and enterprise data centers. Its features include high throughput, low latency, quality of service and failover, and it is designed to be scalable...
networks natively.
Architecture
The software is composed of an executive binary which uses a client-serverClient-server
The client–server model of computing is a distributed application that partitions tasks or workloads between the providers of a resource or service, called servers, and service requesters, called clients. Often clients and servers communicate over a computer network on separate hardware, but both...
communication model between libraries and service engines. Loadable modules, called service engines, are loaded into the Corosync Cluster Engine and use the services provided by the Corosync Service Engine internal API.
The services provided by the Corosync Service Engine internal API are:
- An implementation of the Totem Single Ring Ordering and Membership protocol providing the Extended Virtual Synchrony model for messaging and membership.
- The coroipc high performance shared memoryShared memoryIn computing, shared memory is memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies. Depending on context, programs may run on a single processor or on multiple separate processors...
IPC system. - An object database that implements the in memory database model.
- Systems to route IPC and Totem messages to the correct service engine.
Additionally Corosync provides several default service engines that are used via C Application Programming Interfaces:
- cpg - Closed Process Group
- sam - Simple Availability Manager
- confdb - Configuration and Statistics database
- quorum - Provides notifications of gain or loss of quorum