Threaded health check support for keepalived
In order to avoid some problems caused by the current keepalived design,
I added a patch named Threaded Health Check support "THC" to keepalived.
THC will help to make it much easier to write monitor modules for
keepalived, because the author of such modules does not have to worry
about the cooperative scheduling, currently used in keepalived. Instead
one POSIX-thread is created for each query defined in the
keepalived-configuration-file. Each such pthread handles its own
main-loop and the scheduling is preemtive, now scheduled by the kernel,
rather then by the application, avoiding some I/O blocking problems in
keepalived.
The main advandages for using THC:
- Write your own pluggable monitors modules for keepalived which then
are loadable as dynamic shared objects. Writing such modules now is
very easy.
- Use external libraries for writing such modules, even without support
for asynchronous calls.
- Avoid I/O blocking in certain situations, were the scheduler of the
keepalived-checker did block in certain system calls, namely read().
- Seperate the real-server-checking from the virtual-server-switching.
This allows you to use one real-server-query to switch more than one
virtual-server.
If, for instance your httpd-server runs on more than one port, then
its needless to query for each of them. By doing a query onto one
port, the virtual-server switching can be done once for all of them.
- Allow more than one real-server-checking per virtual-server-switching.
This allows you do virtual-server-switching by doing, for instance one
query onto the httpd, and one query onto the mysqld. Only if both
report success the real-server is added to the list.
The srpms can be downloaded from
http://homes.tiscover.com/jrief/keepalived/keepalived-1.2.0rc1-1.src.rpm
The tarball
http://homes.tiscover.com/jrief/keepalived/keepalived-1.2.0rc1.tar.gz
The latest devel-branch of keepalived with THC can be checked out from
the cvs-repository at sourceforge.net:
> cvs -d:pserver:anonymous@xxxxxxxxxxxxxxxxxxx:/cvsroot/keepalived login
> cvs -z3 -d:pserver:anonymous@xxxxxxxxxxxxxxxxxxx:/cvsroot/keepalived \
checkout devel
Alexandre Cassen told me he might merge this patch with the main-branch
of keepalived. However I can't reach him for a week now. I therefore
propagate keepalived-THC this way for now. Sorry.
For those who use ldirectord, I started to write it in 2000. I turned
over to keepalived myself. Its faster, cleaner in design, and also much
smarter because You don't need any extra heartbeat.
Jacob
|