ldirector and heartbeat

Horms horms at verge.net.au
Wed Jul 12 11:38:52 BST 2006


On Wed, 28 Jun 2006 08:05:05 -0400, John Gray wrote:
> Jason Downing wrote:
>>> No but that does sound like a good idea. If I prepare a patch are
>>> you able to test it to see if it helps your problem?
>>
> I could test it too.


Hi,

below is a patch for ldirectord (current CVS version) which allows
whether or not it cleans up IPVS to be configured.

-- 
Horms                                           
  H: http://www.vergenet.net/~horms/
  W: http://www.valinux.co.jp/en/


Index: ldirectord
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/ldirectord/ldirectord,v
retrieving revision 1.141
diff -u -r1.141 ldirectord
--- ldirectord	6 Jul 2006 04:51:45 -0000	1.141
+++ ldirectord	12 Jul 2006 09:32:30 -0000
@@ -153,6 +153,19 @@
 after the configuration file changed on disk. However, if B<autoreload>
 is set to yes, the configuration is reloaded anyway.
 
+B<clean_up_on_exit = >[B<yes>|B<no>]
+
+If I<yes>, then all the real servers and virtual services will be removed
+from the IPVS kernel table when ldirectord exits. Otherwise, the table is
+left in its prevailing state.
+
+This behaviour occurs regardless of ldirectord exits normally, or through a
+malfunction. The only exceptions are if ldirectord is sent a KILL signal,
+or tries to exit repetadly in a short period of time, persubaly because of
+some error in the exit path.
+
+The default is yes, which is strongly recommended.
+
 B<fallback = >I<ip_address|hostname[:portnumber|sercvicename]> [B<gate>|B<masq>|B<ipip>]
 
 the server onto which a webservice is redirected if all real
@@ -415,6 +428,7 @@
 	    $RUNPID
 	    $CHECKTIMEOUT
 	    $QUIESCENT
+	    $CLEAN_UP_ON_EXIT
 
 	    $CALLBACK
 	    $CFGNAME
@@ -455,6 +469,7 @@
 $NEGOTIATETIMEOUT = 0;
 $RUNPID           = "/var/run/ldirectord";
 $QUIESCENT        = "yes";
+$CLEAN_UP_ON_EXIT = "yes";
 
 $CRLF = "\x0d\x0a";
 
@@ -1035,6 +1050,11 @@
 			$AUTOCHECK = $1;
 		} elsif ($_ =~ /^callback\s*=\s*\"(.*)\"/) {
 			$CALLBACK = $1;
+		} elsif ($_ =~ /^clean_up_on_exit\s*=\s*(.*)/) {
+			($1 eq "yes" || $1 eq "no")
+			    or &config_error($line, "clean_up_on_exit " .
+			    		"must be 'yes' or 'no'");
+			$CLEAN_UP_ON_EXIT = $1;
 		} elsif ($_ =~ /^logfile\s*=\s*\"(.*)\"/) {
 			my $tmpLDIRLOG = $LDIRLOG;
 			$LDIRLOG = $1;
@@ -1688,6 +1708,10 @@
 
 sub ld_stop
 {
+	if ($CLEAN_UP_ON_EXIT ne "yes") {
+		return
+	}
+
 	foreach my $v (@VIRTUAL) {
 		my $real = $$v{real};
 		foreach my $r (@$real) {

Search lvs-users Archives
Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort

More information about the lvs-users mailing list