Software High Availability In A Nutshell - Part 2 (cluster building blocks)
The High Availability Cluster Building Blocks
Nodes & Networking
Of course you need nodes which are connected to a network , sometimes they are referred as processors (not to be confused with CPUs).
So the first thing you need are some nodes which are connected to a network/s. As for how the network/s is/are connected I will review this later.
Membership & Messaging
High Availability cluster nodes must be able to to communicate with each other and more important is to have the knowledge of which node belongs to this cluster.
For this purpose the idea of messaging and membership layer of the high availability cluster was conceived.
The Idea behind it is to provide a software which will be able to create the notion of nodes bound together as part of a cluster and a will allow messages exchange between all cluster nodes.
Good examples would be the The Heartbeat Open Source and The The Corosync Open Source.
Both are considered as messaging and membership layers which one is better? , this is a discussing for a different post.
Cluster Resources
High Availability cluster resources could be considered as a services provided by the cluster applications.
So if we consider the database from my previous post it could be considered as a cluster resource.
Resource Management layer
Since we are dealing with a cluster of machines where resources are needed to brought up and down , maybe at different states , maybe according to some restrictions there is the need for something to manage the resources across all the cluster nodes.
For such a job the Resource Management layer is needed.
The Resource Management layer also responsible to monitor the state of the resources it manages and to take decisions when a state is changed according to predefined rules by the user.
One can call the resource management layer the brain of the cluster.
An excellent example for such a layer is the well known Software called Pacemaker which can work with both Corosync and HeartBeat
Resources Types
There several types of resources depending on ones perspective.
From my point of view there are 2 main types of resources
- Simple Resource - A resource which have no special state when providing it's services it is either on on at least one cluster node or off on all cluster nodes.
- Multi State Resource - A resource that have at least two states when it is up on at least 2 nodes of the cluster , a good example is a database which can be either at master state or slave state.
The next diagram shows the relations between Messaging Layer , Resource Management Layer.
This Cluster for example is composed of 2 nodes and 3 resources
- Simple Resource A - Which should run on all cluster nodes (Ex:ntpd)
- Simple Resource A - Which should run on one one of the cluster nodes only (Ex: floating ip address)
- Multi State Resource A - Which should run on both cluster nodes but at different states ,state X and state Y , (Ex: Master/Slave Database)
Hope you had fun in my next post I will go over Networking layouts of clusters.