2012-08-29 |
Release 1.2.7 |
* vrrp: fix issue in while using vrrp_script. Previous patch introduced by Ryan O'Hara about removing shadow declaration was kind of too much hunting. Removing element e in this block simply create inconsitency in upper list walk. So resurected element declaration with e2. * snmp: Mikhail Gaydamaka extended MIB and both vrrp and check frameworkds to support routerId to var bind. * snmp: Mikhail Gaydamaka fixed oid for vrrpSyncGroupStateChange var bind. * some cosmetics again and again. |
|
2012-08-20 |
Release 1.2.6 |
* Rename global config data variable 'global_data'. From Ryan O'Hara : This patch renames the global configuration data variable from 'data' to 'global_data'. Three reasons for renaming this varibale: - Fixes shadow declaration of 'data' in several locations. - Is more consistent with other global data variables (ie. vrrp_data, check_data). - Functions like free_global_data and dump_global_data were ignoring conf_data_t argument and using global variable instead. * Ryan O'Hara: Fix shadow declaration of 'vrrp_data' variable. * Ryan O'Hara: Fix shadow declaration of 'check_data' variable. * Ryan O'Hara: Remove shadow declaration of 'element e' in vrrp_init_state. * check: Avoid the use of kernel defines in libipvs userland prototypes. * vrrp: Correctly handle macvlan interface when config file is re-loaded. From Bob Gilligan : Testing with the 1.2.0 branch, bring keepalived up with a vrrp_instance that is configured with use_vmac. Then delete that vrrp_instance from the config file. Then tell keepalived to re-read its config file with SIGHUP. The vrrp_instance will be stopped, but the macvlan interface will remain. The obvious fix would be to add code to call netlink_link_del_vmac() in clear_diff_vrrp(). There's one problem with that: the code needs the ifindex of the macvlan interface to delete it, but that resides in the interface structure that was freed earlier in the reload process. My fix is to add a field to the vrrp_rt struct to remember the macvlan ifindex. This patch addresses this problem plus two others that can occur in reloading the config file: 1) If the vrrp_instance configuration is kept, but the use_vmac entry is removed, the macvlan interface will not be deleted; 2) If a vrrp_instance with use_vmac is left unchanged, the code will attempt to re-create the macvlan interface, but this will fail and the program will end up not using the macvlan interface. * vrrp: VRRP should notify other routers before it does any action that effects traffic flow. From John Southworth: Move the shutdown_vrrp_instances code to before the deletion of sock_pool. Move sending priority 0 adverts to before address removal occurs * vrrp: From John Southworth: Stop timers before shutting down vrrp instances. This is to avoid a possible condition where a priority 0 advertisement is sent and before the master thread is killed another advertisement can be generated and sent. * vrrp: Change when socket fd's are freed. From John Southworth: Priority 0 advertisements were not being sent as desired on config reload. This was causing long delays on manually failed over instances. The socket pool was being freed too early, as a result the file descriptor for the socket was no longer valid at the time the priority 0 advertisment was attempted. * vrrp: Added a separate timeout parameter for vrrp_script checks From Jonathan Harden: I've added a timeout parameter to the vrrp check scripts which allow you to have the check timeout different to the interval. When no timeout has been specified the interval is used (which mimics the current behaviour). To explain the reasoning: We wanted to have check scripts time out faster than our check interval. Doing the check we need to perform is a little load intensive and so we don't want to perform it every few seconds. With this patch we set an interval of 60 seconds but a timeout of 5 seconds (if the check takes more than a few seconds then the service is not working correctly). * Extended vector lib for futur work * some cosmetics. |
|
2012-08-13 |
Release 1.2.5 |
* Merge SNMP support from Vincent Bernat. * SNMP is not compiled nor activated by default. * Updated autoconf script * Created Keepalived MIB * Integration of NetSNMP into main scheduling loop * vrrp: Most internal data can be queried with SNMP. * check: Most internal values can be queried using SNMP. The main exception is the ability to query checkers which is not present. * check: SNMP support for IPVS stats. IPVS stats are exported with SNMP. A cache is used to avoid to query the kernel too much. * Created core framework for SNMP trap * vrrp: SNMP traps are sent when instance state changes and when sync group state changes * check: SNMP traprs are sent when real server state changes and when virtual server quorum state changes * vrrp: add support to write/update operations from SNMP. Write/update support is available for changing the base priority and for changing instance preemption. * check: add support to write/update operations from SNMP. Write support is available for changing the weight of a real server. * workaround for AgentX ping blocking Keepalived. When establishing AgentX session with the master agent, we setup low timeout and retries values. If the master agent is blocked, we will wait for less than 1 second for them and therefore, there will be no disruption for VRRP. * Copyright update * some cosmetics. |
|
2012-07-27 |
Release 1.2.4 |
* Please look at git repo for credits. * remove CR from manpage * check: fix pid display in syslog messages * vrrp: better documentation of the limitation on password length * cosmetics to be pleasant with GCC4 * Update autoconf script to properly detect VRRP VMAC support * security: Fix exploitable issue in sighandler ! * Add datarootdir to Makefile.in files. * Fix logging to console. * Remove newlines from log_message calls. |
|
2012-07-13 |
Release 1.2.3 |
* Please look at git repo for credits. * VRRP : allow group to use priority with 'global_tracking' group keyword * VRRP : Adjust TOS values. The TOS value used by other vendors is ip precedence 6, so change that. Use socket priority option to force packets into band 0 of pfifo_fast. * VRRP : Fix sync-group thrashing.The sync group implementation was not very robust. If one synced instance lost communication without going to fault state then all synced intances would transition to master. Following this all instances would transition back to backup because they heard higher priority advertisements. This thrashing would continue indefinitely. To fix this the sync-group code was made to prefer backup state. That is, the sync-groups don't sync to master state unless every instance wants to be master. * VRRP : Fix dst lladdr in IPv6 Unsollicited NA. * VRRP : fix pid display in syslog messages. * Fix configure script to correctly identify kernel version. * check : handle unspecified sockaddr_storage when comparing * VRRP : ensure VRRP script interval and GARP delay is not 0. * check: ensure non 0 default values for timeouts. * VRRP : Fix priority not changing on reload. * check : Fix IPv4 address comparison routine. * Don't use bind() with AF_UNSPEC. * check : enable the use of fwmark with IPv6 virtual servers. * Fix modprobe arguments. * Fix double ntohs() in SMTP checker. * Pretty-print IP:port as [%s]:%d. * check : keep retry in case of early TCP failures in checks. * when specifying an IPv6 range, range is hexadecimal value. * Only define kernel types for ip_vs.h header to avoid problems when loading other headers. * When respawning VRRP or check process, use LOG_ALERT. * Do not set reload flag in the main process. * Set correct rights on PID file. * fix 'gratuitous' typos. * ipvs: don't include linux/types.h or asm/types.h. * configure: check for nl_socket_modify_cb for libnl. * configure: don't check for IPVS support with kernel 2.6.x. * VRRP : On shutdown, release sockets later to be able to send shutdown packet. * fix documentation on linkbeat_use_polling keyword. * Fix a typo for healthchecker. * fix syslog message if bogous vrrp packet (wrong auth type) received. * manpage update. |
|
2011-01-16 |
Release 1.2.2 | IPv6 Ready |
* IPv6 : extended autoconf script to support libnl detection. IPv6 IPVS kernel subsystem is reachable through generic netlink configuration interface. * IPv6 : Enhanced libipvs-2.6 to support generic netlink configuration interface. If generic netlink is available with kernel then it will be the prefered path to configure IPVS. * IPv6 : Enhanced the whole checker API to use sockaddr_storage. * IPv6 : Enhanced the whole core framework to use sockaddr_storage. * IPv6 : Enhanced all checkers to use sockaddr_storage. * fixed a long time pending issue in all checkers. If first connection attempt to remote peer was failing no more check was performed to service... Up on error connecting remote peer simply register a new timer for next check. This is specially needed in IPv6 context where a unreachable host can be reached at delayed time. * code clean-up: revisited the code to use more POSIX compliant declaration. thread typedef to use thread_t instead. revisisted checker framework to use POSIX typdef declaration. |
|
2010-12-08 |
Release 1.2.1 | Bugfixes |
* Vincent Bernat <bernat <at> luffy.cx> : VRRP: Fix incorrect computation for packet size * Vincent Bernat <bernat <at> luffy.cx> : VRRP: handle passwords up to 8 characters * Vincent Bernat <bernat <at> luffy.cx> : When updating weight, check quorum state. MISC check can update the weight of a real server. This can lead to a change in quorum state. We factor out quorum handling from perform_svr_state() into a new function update_quorum_state() that will check if the quorum state changed and if yes, update sorry server status, exec quorum commands and add back or remove alive real servers (with existing function perform_quorum_state()). This patch is mostly cut'n'paste and adding a call to update_quorum_state() in update_svr_wgt(). We also make perform_svr_state() and update_quorum_state() almost symmetric. * Vincent Bernat <bernat <at> luffy.cx> : Fix an infinite loop in master transition with sync groups. This patch is from Arjan Filius. See: http://marc.info/?l=keepalived-devel&m=128212278218825&w=2 When transitioning to master state, keepalived might try to force transition to master state of other VRRP instances into the same group before their transition is complete. This leads to an infinite loop with huge VRRP trafic. * Vincent Bernat <bernat <at> luffy.cx> : VRRP : Use VRRP_PRIO_DFL instead of 100 for default priority. * Vincent Bernat <bernat <at> luffy.cx> : Use netpacket/packet.h instead of linux/if_packet.h to get sockaddr_ll. linux/if_packet.h pulls linux/types.h that should not be used by a userland program since types defined here can conflict with stdint.h. We use netpacket/packet.h which is a GNU LibC header. * Vincent Bernat <bernat <at> luffy.cx> : Keep current weight on reload when initial weight is not altered. Weight can be changed by MISC_CHECK when using dynamic option. In case of reload, the change is lost until the script runs again. We record the initial weight in a separate variable and use it to check if a real server has changed instead of using the actual weight. * Vincent Bernat <bernat <at> luffy.cx> : VRRP : disabled scripts and initially good scripts should be considered as OK. When a script is not weighted, its failure will lead to a failure of the associated VRRP instance. However, disabled script and scripts that are initially good (after a reload) should be considered as successful and not make the instance fail. Moreover, a disabled script should not be used when computing script weights. * Vincent Bernat <bernat <at> luffy.cx> : VRRP : more informative message when disabling a script due to use of weights. When using a weight for a tracked script, the script is disabled. However, the warning message said that the weight was ignored. We change the message to tell that the script is ignored. Moreover, we don't change its weight since it can be used in another instance, not in a SYNC group. * Vincent Bernat <bernat <at> luffy.cx> : check : include missing virtual server group name in a log message * Vincent Bernat <bernat <at> luffy.cx> : configure: add a check for ETHERTYPE_IPV6. ETHERTYPE_IPV6 defined in net/ethernet.h is pretty recent. If absent, we hard-code the value into CFLAGS. This patch requires regeneration of configure. * Vincent Bernat <bernat <at> luffy.cx> : check : update server weight in IPVS only if server is alive and in the pool. With inhibit_on_failure, a server can be in the pool and not alive. We don't want to set the weight of an inhibited server or a server in a virtual server whose qorum is not met yet. * Vincent Bernat <bernat <at> luffy.cx> : check: really add back inhibited server when quorum is gained A previous change contained an erroneous check to add back alive servers when quorum state was gained. This check was incompatible with inhibit_on_failure. When servers were added back in the pool, the weight was not updated accordingly. * Vincent Bernat <bernat <at> luffy.cx> : check : update server weight despite quorum when no sorry server. In absence of a sorry server, the logic is to not use quorum except to run commands when quorum is gained or lost. This means that if a MISC check modifies the weight of a server and there is no sorry server, we do not consider quorum. |
|
2010-05-31 |
Release 1.2.0 | VRRP IPv6 Release |
* Branch 1.2.0 created. This branch will host all new
developments on Keepalived. New code will be added
in here only.
* VRRP : Add support to IPv6 protocol. The global framework
has been extended to support this branch new family !
* VRRP : Implement IPv6 Neighbour Discovery protocol (NDISC).
In IPv6 gratuitous ARP doesnt exist since ARP is IPv4 only.
NDISC can provide the same feature by sending so called
Unsolicited Neighbour Advertisement. A node can send such a
protocol datagram in order to (unreliable) propagate new
information quickly (rfc4861.4.4). NDISC build an ICMPv6
message with taget link-layer address option, this option is
set icmp6_override flag to indicate that advertisement should
override an existing cache entry and update the cached
link-layer.
* VRRP : Extend ip address framework to be IPv4 and IPv6
independant. An ip address, as defined in framework, is
now {IPv4,broadcast} or {IPv6}. Use struct ifaddrmsg to
store and prepare netlink related operation. This clean-
-up the code.
* VRRP : Extend parser to support IPv6 declarations. IPv6
and IPv4 addresses can be configured inside the same
configuration block (eg: virtual_ipaddress or
virtual_ipaddress_excluded). An instance can run IPv4 and
IPv6 addresses at a time, this can be useful in dual-stack
env (since this will become certainly the most common use
case in the next years).
* VRRP : Extend netlink framwork to support IPv6 addresses
interactions (reflection/addition/deletion).
* VRRP : Extend finite state machine support IPv4 & IPv6
at a time.
* VRRP : Extend protocol helpers to support IPv6 multicast
related. AF_INET6 SOCK_RAW tweaking it done through
socket API instead of PF_PACKET header building... This
makes code cleaner.
* VRRP : Set default VRRP instance protocol to be IPv4.
you can use configuration keyword "native_ipv6" inside
vrrp_instance configuration block to specify that you
want to use IPv6 for VRRP multicasting protocol instead.
* VRRP : Extend socket option related helpers to support
IPv6 specifics.
* VRRP : Extend protocol scheduler and dispatcher to
support IPv6.
* VRRP : Extend socket pool to keep track of socket
family.
* VRRP : Cleanup protocol offset pointer by removing
duplication code...
* VRRP : some code clean-up...
|
|
2010-05-06 |
Release 1.1.20 | Bugfixes |
* Vincent Bernat <bernat <at> luffy.cx> extended ip/route framework to be able to add route or ip address if they already exist. * Vincent Bernat <bernat <at> luffy.cx> fixed broadcast address display. * Vincent Bernat <bernat <at> luffy.cx> extended genhash to display an error when giving an incorrect IP address. * Vincent Bernat <bernat <at> luffy.cx> When parsing "blackhole" route, also parse IP mask. * Vincent Bernat <bernat <at> luffy.cx> On reload, destroy signal pipes before recreating them. * Vincent Bernat <bernat <at> luffy.cx> Fix SMTP checker adding himself repeatedly in the list of failed checkers. * Vincent Bernat <bernat <at> luffy.cx> Handle non-existant default interface in VIP definition. * Vincent Bernat <bernat <at> luffy.cx> Remove alive real servers when quorum is lost. * Vincent Bernat <bernat <at> luffy.cx> Fix a segfault when a virtual_server is empty. * Vincent Bernat <bernat <at> luffy.cx> Add real servers to new member of a virtual server group on reload. * Vincent Bernat <bernat <at> luffy.cx> Keep previous effective VRRP priority on reload. * Vincent Bernat <bernat <at> luffy.cx> Fix VRRP script not running any more after reload. * Vincent Bernat <bernat <at> luffy.cx> On reload, keep status for all VRRP scripts. * Removed IPVS Kernel 2.2 support |
|
2009-10-01 |
Release 1.1.19 | Bugfixes |
* Cosmetics changes. * Vincent Bernat <bernat <at> luffy.cx> fix a segfault when there is no real server for a virtual server. * Vincent Bernat <bernat <at> luffy.cx> Willy Tarreau and I finally fixed SIGCHLD handling upon reload. * Vincent Bernat <bernat <at> luffy.cx> fix VS_ISEQ macro. * VRRP : Kimitoshi Takahashi <ktaka <at> clustcom.com> fixed nopreempt from FAULT state. The owner of higher priority in FAULT state shouldn't preempt current MASTER when it's recovering, if the nopreempt option is set. |
|
2009-09-24 |
Release 1.1.18 | Bugfixes |
* Fixed compilation warnings
* Updated autoconf kernel version detection. Created a new
configuration option to force kernel versioni selection.
This option can be useful for crosscompilation:
--with-kernel-version={2.2|2.4|2.6}
* Updated media link failure detection strategy. Kernel
linkwatch has been around for long time so set it as
default strategy. Alternatively you can choose to use
MII BSMR polling strategy by adding new keyword
'vrrp_linkbeat_use_polling' in your configuration file.
* Vincent Bernat <bernat <at> luffy.cx> fixed ip_vs.h includes.
* Removed vrrp_running and check_running test since it is
already performed by keepalived_running.
* Properly handle father pidfile handling.
* fixed reload handler to properly print out PID.
* Willy and I fixed a signal handling issue while reloading
daemon. A dereferencing master thread issue leading to a
segfault, so that reload was seen as a restart because it
was respawned by keepalived father process.
* Willy fixed a missing UNSET_RELOAD declaration leading to
a potential infinite loop while performing reload.
* Vincent Bernat <bernat <at> luffy.cx> fixed initial value
of quorum state on startup and reload. Fixed sorry server
removal to consider quorum state.
* VRRP : Add missing notify calls while entering FAULT state.
* VRRP : Willy added support to delayed script check launch
(up and down). It defines "rise" and "fall" keywords. "fall"
defines the required number of failures to switch in KO mode,
"rise" defines the number of sucesses to switch in OK mode.
* VRRP : Fixed an IP_DROP_MEMBERSHIP issue while performing
reload. vrrp socket pool is released at first.
|
|
2009-03-05 |
Release 1.1.17 | Bugfixes |
* Fixed low-level scheduler timer computation to take care to monothonic computation. Select returns if timer is null! * VRRP : Fixed vrrp script initialization to use event thread instead of timer thread so that script no longer need to wait until first polling timer fired. * VRRP : Willy and I fixed MII media link failure detection to test SIOCGMIIREG call before fetching BMSR. * VRRP : Resurected VRRP_STATE_GOTO_FAULT. This state is really needed to speed-up convergence and prevent against any issue while using vrrp_sync_group. |
|
2009-02-15 |
Release 1.1.16 | Bugfixes |
* Code clean-up.
* Stefan Rompf, <stefan at loplof.de> extended scheduler to
synchronize signal handling by sending the signal number through
a self pipe, making signals select()able. Child reaping has been
moved to a simple signal synchronous signal handler. Signal
shutdown handling has been centralized.
* Denis Ovsienko, <pilot at etcnet.org> extended healthchecker
framework to support alpha/omega design. It provides virtual
service control in a more fine-graned maner. You may have a
look to the SYNOPSIS file to have full picture on configation.
It addresses the following issues :
- A virtual service is considered up even with an empty RS pool.
- There is no reliable mean to avoid service regression, when
the server pool becomes too small.
- There is no mean to escalate any of the above fault/recovery
events.
- Real servers are assumed alive initially. This leads to
unnecessary state flap on keepalived start.
- notify_down isn't executed for working real servers on
keepalived shutdown.
- There is no reliable mean to handle keepalived stop to move
the virtual service over another load balancer.
* Stephan Mayr, <Mayr.Stefan at swm.de> fixed default value for
checker loop... a missing TIMER_HZ.
* Merge keepalived.init.suse.
* Robin Garner, <robin.garner at scu.edu.au> added support to
--log-console facility.
* Tobias Klausmann, <klausman at schwarzvogel.de> fixed an openfile
leak while performing reload.
* Leo Baltus, <Leo.Baltus at omroep.nl> extended pidfile handling
to allow keepalived to start using configurated pidfile.
* VRRP : Siim Poder, <siim at p6drad-teel.net> fixed IPSEC AH auth
to skip IPv4 id field of zero. If zeroed kernel will fill it
and lead to an unwanted protocol re-election.
* VRRP : Siim Poder, <siim at p6drad-teel.net> fixed reloading issue.
New ip addresses are added (from configuration). State is kept
instead of starting from whatever is in configuration file.
If prios are changed in such a way, state change can occur after
reload.
* VRRP : Vincent Bernat, <bernat at luffy.cx> extended virtual_route
to support virtual "black hole" route as well as multihop route.
* VRRP : Stig Thormodsrud, <stig at vyatta.com> fixed a crash while
using virtual_router_id set to 255.
* VRRP: Jon DeVree, <jadevree at arbor.net> fixed arp handling to
to initialize the target hardware address, using 0xff as found
in arping. Let scripts work without dealing with weight, if the
script fails, VRRP fails.
* VRRP : Pierre-Yves Ritschard, <pierre-yves at spootnik.org> removed
the GOTO_FAULT state from FSM.
* VRRP : Willy Tarreau, <w at 1wt.eu> fixed link detection handling
to support right ioctl values for recent kernel ! It can lead
to issue while running instance on a bonding interface.
* VRRP : Willy Tarreau, <w at 1wt.eu> extended scheduler to catch
time drift. It implements an internal monotonic clock. It
maintains an offset between sysclock and monotonic clock, if
computed time if anterior to monotonic time then just update
offset. If time computed if fare away into the future then
limit delay and recompute offset.
* VRRP : Willy Tarreau, <w at 1wt.eu> fixed autoconf issues.
|
|
2007-09-13 |
Release 1.1.15 | Bugfixes |
* Matthias Saou, <matthias at rpmforge.net> fixed genhash Makefile for man page installation. * Casey Zacek, <keepalived at bogleg.org> provided a patch to check_http to remove buffer minimization while processing stream. It appears some webserver cause healthchecker crash. * Chris Marchesi, <chris.marchesi at canadawebhosting.com> provided a patch for better handling of SSL handshake errors. * Shinji Tanaka, <stanaka at hatena.ne.jp> fixed parser "include" directive to support declaration inside configuration directives, like including file inside vrrp_instance declaration. * Andreas Kotes, <count at flatline.de> fixed HTTP healthchecker while handling MD5SUM result. It appears checker never removed realserver on MD5SUM mismatch !!! whats that crap. * VRRP : Willy Tarreau, <w at 1wt.eu> fixed a missing notifications upon transition from fault to backup. * VRRP : Add support to route metric in virtual_routes definition. |
|
2007-09-13 |
Release 1.1.14 | Enhancements |
* Shinji Tanaka, <stanaka at hatena.ne.jp> extended parsing framework to support "include" directives. For more informations and documentation please refer to Shinji website * Tobias Klausmann, <klausman at schwarzvogel.de> add error loggin while parsing configuration file. * Merged patches from rpmforge.net on Makefile and redhat specfile. * Create a goodies directory to store nice scripts received from users. Add Steve Milton <milton AT isomedia.com> arpreset script to delete a single ARP entry from a CISCO router. * VRRP : David Woodhouse, <dwmw2 at redhat.com> fixed vrrp_arp includes. * VRRP : Pierre-Yves Ritschard, <pyr at spootnik.org> fixed negative weights in script. * VRRP : Michael Smith, <msmith at cbnco.com> extended virtual_ipaddress setting to support Old-style Linux interface aliases like eth0:1. * VRRP : Ward Wouts, <ward.wouts at gmail.com> add support to vrrp_script logging. |
|
2006-10-11 |
Release 1.1.13 | Enhancements |
* VRRP : Added a new notify script to be launch during vrrp instances shutdown. This new notify hook is configured using notify_stop keyword inside vrrp_instance block. * VRRP : Willy Tarreau <w at 1wt.eu> fixed an errno issue in thread_fetch(), errno is lost during set_time_now(). This patch saves it across the call to set_time_now() in order to get the valid error. * VRRP : Willy Tarreau <w at 1wt.eu> extended timer framework to save errno in timer_now() and set_time_now() just in case other functions do not expect these functions to modify it. This is a safer approach than the initial patch to thread_fetch(), while still compatible. * VRRP : Willy Tarreau <w at 1wt.eu> fixed an FSM silent issue. By default, the VRRP daemon stops sending during new MASTER elections. This causes 3 to 4 seconds of silence depending on the local priority, and sometimes causes flapping when the differences in priorities are very low, due to the kernel timer's resolution : sometimes, the old master receives a first advertisement, enters backup, waits 3 seconds, sees nothing and finally becomes master again, which forces a new reelection on the other one. * VRRP : Willy Tarreau <w at 1wt.eu> extended VRRP framework to support floating priority. Replace the priority in each vrrp_instance with a base priority and an effective priority, to prepare the support for floating priorities. The configuration sets the base_priority, and all comparisons use the new effective_priority value. This one is computed in the vrrp_update_priority() thread by adding an offset to base_priority, based on the result of various checks. * VRRP : Willy Tarreau <w at 1wt.eu> extended notify script to add the priority in "$4" when calling a notify script. This is important in labs and datacenters when systems can display the priority on a front LCD, because it allows workers to carefully operate without causing unexpected reelections. * VRRP : Willy Tarreau <w at 1wt.eu> extended interface tracking framework to let interface tracking change the priority by adding a "weight" parameter. If the weight is positive, it will be added to the priority when the interface is UP. If the weight is negative, it will be subtracted from the priority when the interface is down. If the weight is zero (default), a down interface will switch the instance to the FAULT state. * VRRP : Willy Tarreau <w at 1wt.eu> added a new "vrrp_script" section to monitor local processes or do any type of local processing to decide whether the machine is in good enough health to be elected as master. A same script will be run once for all instances which monitor it. If no instance use it, it will not be run, so that it's safe to declare a lot of useful scripts. A weight is associated to the script result. If the weight is positive, it will be added to the priority when the result is OK (exit 0). If the weight is negative, it will be subtracted from the priority when the result is KO (exit != 0). If the weight is zero, the script will not be monitored. The default value is 2. * VRRP : Willy Tarreau <w at 1wt.eu> extended vrrp scheduler so that when a VRRP is part of a SYNC group, it must not use floating priorities, otherwise this may lead to infinite re-election after every advertisement because some VRRPs will announce higher prios than the peer, while others will announce lower prios. The solution is to set all weights to 0 to enable standard interface tracking, and to disable the update prio thread if VRRP SYNC is enabled on a VRRP. * VRRP : Willy Tarreau <w at 1wt.eu> added some documentation and examples for the brand new VRRP tracking mechanisms. * VRRP : Ranko Zivojnovic, <ranko at spidernet.net> fixed vrrp scheduler to execute notify* scripts in transition from the failed state to the backup state. * Nick Couchman, <nick.couchman at seakr.com>, added support for real server upper and lower thresholds. This allows you to set a minimum and maximum number of connections to each real server using the "uthreshold" (maximum) and "lthreshold" (minimum) options in the real_server section of the configuration file. * Chris Caputo, <ccaputo at alt.net> extended autoconf script to support recent move of UTS_RELEASE from linux/version.h to linux/utsrelease.h. * Chris Caputo, <ccaputo at alt.net> extended ipvswrapper 2.4 code to support misc_dynamic weight. |
|
2006-03-09 |
Release 1.1.12 | Bugfixes |
* VRRP : Christophe Varoqui, <Christophe.Varoqui<at>free.fr> extended VRRP framework to use virtual_router_id as syncid in LVS mcast datagram while using LVS syncd in VRRP instance. * Kevin Lindsay, <kevinl<at>netnation.com> and Christophe Varoqui, <Christophe.Varoqui<at>free.fr> fixed SSL checker to properly use openssl when dealing with asynchronous stream handling. Kevin fixed asynchronous handling during connection stage while Christophe fixed stream handling after connection stage. * Kjetil Torgrim Homme, <kjetilho<at>ifi.uio.no> extended keepalived spec file to cleanly compile on RedHat enterprise 3 and 4. * Heinz Knutzen, <Heinz.Knutzen<at>dataport.de> fixed SMTP checker to overwrite default_host while parsing configuration file. A SMTP_CHECK without a "host" section should use the ip of the current real server as default. |
|
2005-03-01 |
Release 1.1.11 | Bugfixes |
* VRRP : extended ipaddress and iproutes code to return if vip or vroutes is referencing an unknown interface. * Kevin Lindsay, <kevinl <at> netnation <dot> com> and I fixed a missing bitwise negation while removing signal from global signal mask. Set this operation before handler is called. This assume that bitwise negation is an atomic code generated from compiler. Since gcc 3.3 this is true. * Asier Llano Palacios, <a <dot> llano <at> usyscom <dot> com> extended autoconf script to support cross-compilation. |
|
2005-02-15 |
Release 1.1.10 | Bugfixes |
* VRRP : While restoring interface, release iproutes before ipaddresses. Routing daemons needs that order for netlink reflection channel. * VRRP : Bin Guo, <bguo<at>bluesocket<dot>com> fixed a memory leak while calling script_open. * Kevin Lindsay, <kevinl <at> netnation <dot> com> fixed some buffer overruns, NULL pointer and dangling pointer references. * Kevin Lindsay, <kevinl <at> netnation <dot> com> redisigned signal handling. When a signal occurs, a global signal_mask is modified. In the main loop there is a checked to see if the signal_mask has any pending signals. The appropriate signal handler is then run at this time. This is to prevent races when modifying linked lists. * Kevin Lindsay, <kevinl <at> netnation <dot> com> fixed shadowed declarations. * Christophe Varoqui, <Christophe<dot>Varoqui<at>free<dot>fr> and I Extended libipvs-2.6 to support syncd zombies handling. Since ip_vs_sync.c kernel code no longer handle waitpid() we fork a child before any ipvs syncd operation in order to workaround zombies generation. * John Ferlito, <johnf<at>inodes<dot>org> and I Fixed a scheduling race condition while working with low timers. * Updated check_http and check_ssl to use non-blocking socket. * Fixed some race conditions while reloading configuration. Prevent against list gardening if list is empty ! * Fixed recursive configuration parsing function to be clean with stack. Only one recursion level. * Some cosmetics cleanup in Makefiles. |
|
2005-02-07 |
Release 1.1.9 | Bugfixes |
* VRRP : Chris Caputo, <ccaputo <at> alt <dot> net> updated keepalvied manpage for nopreemept and preempt_delay. * VRRP : Fixed an issue while releasing vrrp socket pool... Just release pool one time ! * VRRP : Fixed netlink framework to properly save netlink socket flags while setting blocking flags. * VRRP : Fixed a regression introduced with previous release while hashing vrrp fd bucket into fd hash index. * Patrick Boutilier, <boutilpj <at> ednet <dot> <ns> ca> fixed an issue in the extract_html function. Read the full html header. * Chris Caputo, <ccaputo <at> alt <dot> net> and I fixed compilation issue while using --enable-debug configuration option. * Extended both VRRP and Healthchecker framework to support debugging flags. * Removed the watchdog framework. Since scheduling framework support child, we register a child thread for both process VRRP and Healthcheck. When child die or stop prematuraly this launch scheduling callback previously registered. Watchdog is now handled by signaling. (credit goes to Kevin Lindsay, <kevinl <at> netnation <dot> com> for nice idea). * Some cosmetics cleanup. |
|
2005-01-25 |
Release 1.1.8 | Enhancements |
* VRRP : Chris Caputo, <ccaputo <at> alt <dot> net> added "dont_track_primary" vrrp_instance keyword which tells keepalived to ignore VRRP interface faults. Can be useful on setup where two routers are connected directly to each other on the interface used for VRRP. Without this feature the link down caused by one router crashing would also inspire the other router to lose (or not gain) MASTER state, since it was also tracking link status. * VRRP : Chris Caputo, <ccaputo <at> alt <dot> net> added "nopreempt" which overrides the VRRP RFC preemption default. This replaces the "preempt" keyword which was not fully implemented. "preempt" is kept around for backward compatibility but is deprecated. * VRRP : Chris Caputo, <ccaputo <at> alt <dot> net> added "preempt_delay" which allows one to specify number of seconds after startup until VRRP preemption. (range 0 to 1,000 seconds) this is useful because sometimes when a machine recovers it takes a while for it to become usable, such as when it is a router and BGP sessions need to come back up. * Chris Caputo, <ccaputo <at> alt <dot> net> made it so there is a useful "Date:" in SMTP alert emails. * VRRP : Chris Caputo, <ccaputo <at> alt <dot> net>. In debug output log gratuitous ARPs with actual IP addresses being ARPed. * VRRP : Chris Caputo, <ccaputo <at> alt <dot> net>. If started with "--dont-release-vrrp" then try to remove addresses even if we didn't add them during the current run, when it makes sense to do so. * VRRP : Chris Caputo, <ccaputo <at> alt <dot> net> added a missing free_vrrp_buffer() during VRRP stop. * VRRP : Kees Bos, <k.bos <at> zx <dot> nl> fixed VRRP sanity check to perform checksum computation over incoming packet and not local router instance memory representation => Better to log 'invalid vip count' instead of 'Invalid vrrp checksum' when the number of configured vips differ in the master and backup server :) * VRRP : Release socket pool during daemon stop and reload * VRRP : Refresh socket pool during reload * VRRP : Extended netlink framework to support blocking operation. During initialization, set blocking netlink channel to wait responses from kernel while parsing result. Kernel netlink reflection are still handled using non-blocking. * Jeremy Rumpf, <rumpf.6 <at> osu <dot> edu> added SMTP checker. It take a special care of smtp server return code. * Merged genhash man page * Chris Caputo, <ccaputo <at> alt <dot> net> added "misc_dynamic" to a MISC_CHECK which makes it so a script can adjust the weight of a real server. * Fixed some assertion issue in memory framework. * Use router_id instead of lvs_id in the global_def configuration block (lvs_id kept for backward compatibility). * Ronald Wahl <rwa <at> peppercon <dot> com>, fixed declarations to be only in includes files. * Ronald Wahl <rwa <at> peppercon <dot> com>, moved the definition of variables to C files * Ronald Wahl <rwa <at> peppercon <dot> com> and I fixed scanning for header/body separator in HTTP protocol * Ronald Wahl <rwa <at> peppercon <dot> com> replaced memcpy by memmove where source & destination may overlap * Extended checker API to only register checkers when checker callback is defined. * Jacob Rief, <jacob.rief <at> tiscover <dot> com> fixed openlog to take care of configured log facility. * Move in_csum to util file. * Extended libraries to support some new facilities (list and vector). * Extended scheduler I/O to use timer decalred on the stack. * Some cosmetics changes. |
|
2004-04-05 |
Release 1.1.7 | Minor Bug Fixes |
* Jacob Rief, <jacob.rief <at> tiscover <dot> com> added target tarball into |
|
2004-02-23 |
Release 1.1.6 | Bug Fixes |
* VRRP : Fixed scheduling timer update. Global scheduling timer is |
|
2004-01-25 |
Release 1.1.5 | Enhancements |
* Joseph Mack, <mack <dot> joseph <at> epa <dot> gov> wrote keeplived manpages in doc/man/man5/keepalived.conf.5 and doc/man/man8/keepalived.8. |
|
2003-12-29 |
Release 1.1.4 | Enhancements |
* Refresh autoconf script to use autoconf 2.5.
* Extended the autoconf script to support linkwatch kernel
detection.
* To work-around the SMP forking bug, added support to two
new daemon starting options :
--vrrp -P Only run with VRRP subsystem.
--check -C Only run with Health-checker
subsystem.
Those options extend daemon design to support VRRP &
heathchecking subsystem selection. You can now run
two Keepalived daemon one invoqued with --vrrp and
the other with --check. That way we workaround the
forking issue by running one daemon per subsystem.
* Tiddy cleanup in the daemon code.
* VRRP : Extended the link media failure detection to support
asynchronous NIC MII polling. The design use now, one
dedicated polling thread per NIC. This reduce scheduling
jitter by this way.
* VRRP : Added support to kernel linkwatch subsystem. This
patch that you will find a copy on the Keepalived website
for the kernel 2.4 branch, provides kernel netlink broadcast
events drived by NIC link media state event. That way
we move from a polling design to an event design. Link
events are received throught a kernel netlink broadcast
socket in the userspace land. So, NIC media link failure
detection is now provided by kernel netlink reflection.
You can read the paper attached with the patch for
indepth explanations.
* VRRP : fixed timer computation to prevent against negative
value.
|
|
|
2003-09-29
|
Release 1.1.3 | Enhancements |
* Stephan von Krawczynski, <skraw <at> ithnet <dot> com> extended ip address framework to support broadcast address selection. |
|
|
2003-09-08
|
Release 1.1.2 | Enhancements |
* Dominik Vogt, <dominik.vogt <at> gmx.de> and I extended checker framework to support multiple checkers per realserver. Each checker own a uniq id, each realserver own a list of checkers id. Realserver is considered down if one of the checkers fails. * Dominik Vogt, <dominik.vogt <at> gmx.de> extended list library to support free_list_element. * Dominik Vogt, <dominik.vogt <at> gmx.de> and I extended ipwrapper to support multiple checkers test. Created a checker state updater helper function to perform realserver state according to checker state. * Dominik Vogt, <dominik.vogt <at> gmx.de> extended all checkers code to support multiple checker design (to not perform server state according a single checkers test). * Tobias Klausmann, <klausman <at> schwarzvogel.de> and I extended layer4 framework to support socket binding to a specific ip address before calling connect(). Extended the TCP, HTTP and SSL checker to support binding selection, creating a new checker keyword named "bindto". look at doc/keepalived.conf.SYNOPSIS for more informations. * VRRP : Extended the ethtool code to be selected only if ETHTOOL_GLINK is available. This is useful for s/390 zSeries users :) since zSerie 2.4 kernel doesn't support ethtool extension. * VRRP : Gatis Peisenieks, <gatis <at> mt.lv> fixed IPSEC-AH code to exclude ip header id filed while computing AH digest. Fixed AH sequence number to be set in network byte order. * VRRP : Fixed a bug in the static_ipaddress block that caused a noisy crashing startup. * VRRP : Kjetil Torgrim Homme, <kjetilho <at> ifi.uio.no> and I fixed a daemon crash while reloading configuration due to a vrrp_buffer not freed. * VRRP : Review the watchdog calling location. watchdog listener is reinitialized during a daemon reload. * VRRP : Diego Rivera, <lrivera <at> racsa.co.cr> extended notify framework to support simple notify script call. Created a new keyword "notify", for both vrrp_instance and vrrp_sync_group. If configured, this notify script is called after FSM state transition notify scripts. look at doc/keepalived.conf.SYNOPSIS for more informations. * Review the checker watchdog calling location like VRRP. * Fixed code selection to exclude VRRP dependencies if code is configured without VRRP framework. * Extended memory lib free function to reset memory location to NULL. * Diego Rivera, <lrivera <at> racsa.co.cr> extended global parser to support default handlers for lvs_id, smtp_server, smtp_connection_timeout and email_from. default values are : o lvs_id : box local name o smtp_server : localhost o email_from : uid@box_local_name o smtp_connection_timeout : 30s |
|
|
2003-07-24
|
Release 1.1.1 | Bug fixes |
* VRRP : Fixed an issue while reloading configuration. Fixed |
|
|
2003-07-22
|
Release 1.1.0 | High Performance |
* The release focus is : "High Performance" VRID hash table :
+---+---+---+---+---+---+.........+-----+
| 1 | 2 | 3 | 4 | 5 | 6 |.........| 255 |
+---+---+---+---+---+---+.........+-----+
| |
+---+ +---+
|fd3| |fd1|
+---+ +---+
|
+---+
|fd5|
+---+
This hash table is filled during configuration parsing and VRRP instances are not duplicated but dynamically pointed to optimize memory. * VRRP : The VRRP synchronization group lookup has been |
|
|
2003-05-12
|
Release 1.0.3 | Enhancements |
* This release has been sponsorized by : |
|
|
2003-04-14
|
Release 1.0.2 | Enhancements |
* This release has been sponsorized by : |
|
|
2003-03-18
|
Release 1.0.1 | Enhancements |
* This release has been sponsorized by : Creative Internet Techniques, <www.httpd.net> Please visit sponsor homepage, open minded people here ! * Fixed some Makefile and autoconf code dependence issues. * Move keepalived.conf.SYNOPSIS and samples into "doc" directory. * Enhanced HTTP|SSL check to support large url. Get buffer request is now 2KBytes. * Removed \n in healthchecker smtp_alert call. This cause some troubles with MTA like qmail. Thanks go to John Koyle, <jkoyle <at> rfpdepot.com>. * Added support to netlink route as global keyword "static_routes". look at doc/samples/keepalived.conf.routes. Routes specified into this block will be added during daemon bootstrap and removed during daemon shutdown. Differential conf parsing is enabled for this block, removing/adding static_route can be done on the fly sending SIGHUP signal to daemon. * VRRP : Added support to "virtual_routes". This is the same as virtual_address. Those routes are set when VRRP instance enter MASTER state and removed otherwise. Differential conf parsing is enabled for this block. This concept extend VRRP and bring dynamic routing as a "route takeover" concept. * VRRP : Rewrote the VRRP vip handling to use template lib list structure. VIP and E-VIP are no longer a simple array reallocated. List library is used to limite code duplication. * VRRP : Extended virtual_ipaddres and virtual_ipaddress_excluded block to support "dev" specification. So that a VIP can be set to a specific interface instead of default runing VRRP instance interface. * VRRP : Added support to "track_interface". Interesting for use with vlan interface. The concept here is to drive VRRP FSM according do both "interface" and "track_interface" state. If tracked interface is down or instance interface is down then VRRP instance transit to FAULT state. For use with vlan, add track to interface vlan belong to. Look at doc/sample/keepalived.conf.track_interface for sample. doc/keepalived.conf.SYNOPSIS for configuration details. * VRRP : Extended FSM FAULT state to keep in fault if track_interface still fault. * VRRP : Extended sync group design to test if group is unary or not. * Some code cleaning and cosmetics enhancements. |
|
|
2003-01-13
|
Release 1.0.0 | STABLE RELEASE |
* After fixed all bugs users reported during 2 months, I am glad to |
|
|
2002-11-21
|
Release 0.7.6 | Enhancements |
* Created a common library for code modularization. This lib will |
|
|
2002-09-18
|
Release 0.7.1 | Enhancements |
* Fixed a MISC_CHECK issue when registering next timer checker. Must |
|
|
2002-08-06
|
Release 0.6.10 | Bug fixes |
* Fixed a faked flag during VRRP VIP set. Updated the IP address set flag to reflect |
|
|
2002-08-01
|
Release 0.6.9 | Enhancements |
* Fixe some code dependence selection during compilation. If autoconf netlink |
|
|
2002-07-16
|
Release 0.6.8 | Bug fixes |
* Alex Kramarov & Remi Nivet, <Remi.Nivet <at> atosorigin.com> |
|
|
2002-07-12
|
Release 0.6.7 | Code cleanup |
* Rewrote the previous SMTP notification framework. New code use a strong |
|
|
2002-07-08
|
Release 0.6.6 | Code cleanup |
* added indentation style .indent.pro |
|
|
2002-07-01
|
Release 0.6.5 | Code cleanup |
* Fixed a NULL pointer exception while releasing IPVS entries. |
|
|
2002-06-25
|
Release 0.6.4 | Enhancements |
* Rewrote the previous ip address utilities functions. Review the string |
|
|
2002-06-18
|
Release 0.6.3 | Bug fixes |
* VRRP : Christian Motelet, <cmotelet <at> canal-plus.com> pointed out a |
|
|
2002-06-16
|
Release 0.6.2 | Bug fixes |
* Andres Salomon, <dilinger <at> voxel.net> enhanced the autoconf/automake |
|
|
2002-06-13
|
Release 0.6.1 | Enhancements |
* Aneesh Kumar, <aneesh.kumar <at> digital.com> and I added support to |
|
|
2002-05-30
|
Release 0.5.9 | Enhancements |
* Added support to realserver_group. The work is not yet finished since |
|
|
2002-05-21
|
Release 0.5.8 | Enhancements |
* Added an OpenSSL Licence exception to grant Keepalived compilation |
|
|
2002-05-02
|
Release 0.5.7 | Enhancements |
* Review autoconf/automake scripts to be more generic on system and code |
|
|
2002-04-13
|
Release 0.5.6 | VRRP Bug fixes |
* Review in GOTO_MASTER_STATE the IP address handling. |
|
|
2002-04-10
|
Release 0.5.5 | VRRP |
* Fixed a gratuitous ARP porting bug. |
|
|
2002-02-25
|
Release 0.5.3 | Enhancements |
* Added autoconf / automake generic scripts. |
|
|
2001-12-20
|
Release 0.4.9a | Bug fixes |
* Jan and I patched a memory pointer problem in vrrp scheduler. |
|
|
2001-12-10
|
Release 0.4.9 | Enhancements |
* Jan Holmberg, <jan <at> artech.net> added a memory managment framework. |
|
|
2001-11-21
|
Release 0.4.8 | MAJOR RELEASE |
* Rewrite the whole VRRP previous code. |
|
|
2001-11-04
|
Release 0.3.8 | Enhancements |
* Added support to native LVS netfilter code on NAT. |
|
|
2001-09-14
|
Release 0.3.7 | Enhancements |
* Added support to LVS kernel 2.4 code. |
|
|
2001-08-24
|
Release 0.3.6 | Bug fixes |
* Patch a race condition into the scheduler timer computation. |
|
|
2001-07-15
|
Release 0.3.5 | MAJOR RELEASE |
* Rewrite the whole signal handling, registering a terminating |
|
|
2001-03-31
|
Release 0.2.7 | Minor Bug fixes |
* TCPCHECK : |
|
|
2001-03-06
|
Release 0.2.6 | Major Bug fixes |
* keepalived main program : |
|
|
2001-01-02
|
Release 0.2.3 | Workaround |
* TCPCHECK : |
|
|
2000-12-22
|
Release 0.2.1 | INITIAL RELEASE |