[Linux-ha-dev] lha-md model.
Rodrigo Henriquez M. - Corporacion Linux S.A.
rodrigo at corporacionlinux.cl
Tue Feb 15 10:12:09 MST 2005
Here is the lha-md model with the modifications suggested for some of you.
Feel free to do all your suggestions or critiques.
-------------- next part --------------
DRAFT - DRAFT - DRAFT DRAFT - DRAFT - DRAFT DRAFT - DRAFT - DRAFT - DRAFT
Linux HA Management Daemon
This is just an initial approach to develop a management system for linux-ha
Maybe there are a lot of things that need to be changed or even improved,
so feel free to send me all your suggestions, feedback and/or critiques ;-)
Objective of this document
This document explains the design and internals of the Linux HA Management
The main goal of the Linux HA management daemon (lha-md) is bring a standard
specification and a well defined API for lha-md clients in an client/server
On that model, lha-md is a server which attends to the lha-md clients and the
clients are programs which sends commands to the server in the lha-md API
format to be executed by the server.
The lha-md system is a simple client/server model.
The clients sends requests to a TCP server and the server performs
those actions over the linux-ha cluster or over itself.
We can diagram the model on this way:
.________. Client Request .________.
| |-------------------------> | |
| lha-md | | lha-md |
| | API | |
| client | | daemon |
| | Server Response | |
| (CIB sync)
| linux-ha |
| cluster area |
This diagram shows the workflow to manage a linux-ha cluster.
Here is a more detailed explanation of the entire workflow:
a) A request is sent by the client to the server (e.g. auth, join a node,
cluster shutdown, etc).
b) The server processes the request and performs various actions on
the cluster or on itself (e.g. client validation or authentification).
c) Once the server has finished processing the task, it sends a response message
to the client with the final status of the executed task.
This model splits the system into two separates areas which are independent
from each other.
I've modeled this as abstract as possible to bring an easy way to develop
a lha-md client in any programming language and in any format (web, curses,
X based, etc). You just need to be sure about talk the lha-md API (see
the API reference).
The lha-md system is comprised by two main elements:
o lha-md resource
o lha-md program
The lha-md resource is an OCF resource which activates or deactivates the
daemon on the cluster following the cluster behavior (specifically,
following the Designated Coordinator behaviour).
The lha-md daemon is a TCP server which attends to the requests made by the
clients. It is activated or deactivated by the lha-md resource.
To be sure that the lha-md will be always available for the clients, it will
linked to an IPaddr resource which will be activated or deactivated by the
This way, clients can always connect to the cluster management daemon
and manage the cluster from anywhere.
All the information handled by the daemon will be extracted from the CIB.
The lha-md daemon will takes care of keeping the data in sync with the DC.
o The user can manage the cluster from anywhere.
o The client will be authenticated to manage the cluster.
o The authentication will be performed through a SSL layer.
o Once the client has been authenticated, it will be able to:
o Add cluster resources or services
o Restart cluster resources or services
o Shutdown or startup the cluster
o More features comming.
I tested this model and it's works OK. I created a primary OCF lha-md resource
which I'll send to the dev mailing list in a few days. I've to fix two tiny
After that I'll finish the lha-md API to start to work on the lha-md code.
Feedbacks, improvements, donations, anything are welcome :-)
Rodrigo Henriquez M <r at clinux.cl>
More information about the Linux-HA-Dev