Hi all,
After a very busy time, I have take time to rewrite the whole previous
version of keepalived. 3 weeks ago, I was reading quickly the previous
code, I realized that many things were not done into the right place. I
realize that the previous code was really Ugly too :)... So I have taken 2
weeks and many audio CDs (manu chao, ben harper, tryo, ...) rewriting the
whole code moving keepalived code from a quick and dirty proof of concept
to a robust and extensible framework.
Right now I have taken time to work on the VRRP integration to keepalived.
I pan to use "monitored circuit" implementation to add a nice VRRP support
for LVS VS-NAT. I will done a primary integration to initiate the work.
Many many work here...
I will add new checkers to keepalived : LDAP, RADIUS, SSL. Special thanks
to christopher hanes for his thought on new checkers.
You can download this new release directly to the site :
http://keepalived.sourceforge.net/software/keepalived-0.3.5.tar.gz
The change log of this news MAJOR RELEASE is :
2001-07-15 Alexandre Cassen <acassen@xxxxxxxxxxxx>
* keepalived-0.3.5 released.
* Rewrite the whole signal handling, registering a terminating
thread on signal.
* Move logsystem to syslog using facility LOG_INFO & LOG_DEBUG.
* Added a daemonization function imported from zebra.
* Rewrite the pidfile handling, check if daemon is running, if not
remove eventual stalled pidfile and create new pidfile.
* Added a strong scheduling framework based on an I/O multiplexer
to handle asynchronous process. This code is imported from zebra
and have been enhanced for keepalived purposes.
Thread types are :
. timeouted read on fd.
. timeouted write on fd.
. timer.
. event.
. terminate event.
=> The zebra framework have been enhanced to add support for
timeouted
read/write fds.
=> With this framework keepalived use a Boss/Worker thread model
design,
fetching ready thread from a master threading queues.
* Rewrite the configuration file reader to add flexibility on
extending.
The dynamic data structure has been rewritten to use apropriate
types.
Right now parsing framework is ready for easy new checker structures
integration.
* Rewrite the smtp connector. The implementation take advantage of the
I/O multiplexer. All read/write operations from/to the remote
smtp server
are done asynchronously. The implementation is rfc 821 compliant
(multiple
receiver are handled by a multiple RCPT TO command as specified
in rfc821.3.1).
* Rewrite the IPFW & IPVS wrappers.
* Added support for NAT mask on IP MASQ rules (keyword nat_mask in
configuration
file). Added support for sorry server facility, so when all the
server from a
VS server pool are removed, a sorry server is automaticaly added
to the VS pool
(typically this is used when you have a spare server online).
* Rewrite the previous checkers. Checkers are now based on a
hierarchic layer
stack framework. The protocol implemented for the moment is TCP.
All layer 5
checkers are using layer4.c primitives with the same design :
. a checker connector thread (creating the socket) registering
the connection
checker thread.
. a connection checker thread testing connection states (error,
in_progress,
timeout, success). When connection success upper level thread
are registered
to handle checks.
* Delay loop is now checkers specifics since we can use a
multithreaded framework.
* Update the PDF documentation file.
All comments, point of view and enhancements are very welcomes,
Best regards,
Alexandre
|