[Pacemaker] fence_legacy, stonith and apcmastersnmp

Kadlecsik József kadlecsik.jozsef at wigner.mta.hu
Mon Mar 5 12:40:15 UTC 2012


On Mon, 5 Mar 2012, Andrew Beekhof wrote:

> 2012/3/2 Kadlecsik József <kadlecsik.jozsef at wigner.mta.hu>:
> > On Fri, 2 Mar 2012, Andrew Beekhof wrote:
> >
> >> 2012/3/2 Kadlecsik József <kadlecsik.jozsef at wigner.mta.hu>:
> >> >
> >> > After upgrading to pacemaker 1.1.6, cluster-glue 1.0.8 on Debian, our
> >> > working apcmastersnmp resources stopped to work:
> >> >
> >> > Feb 29 14:22:03 atlas0 stonith: [35438]: ERROR: apcmastersnmp device not
> >> > accessible.
> >> > Feb 29 14:22:03 atlas0 stonith-ng: [32972]: notice: log_operation:
> >> > Operation 'monitor' [35404] for device 'stonith-atlas6' returned: -2
> >> > Feb 29 14:22:03 atlas0 stonith-ng: [32972]: ERROR: log_operation:
> >> > stonith-atlas6: Performing: stonith -t apcmastersnmp -S 161
> >> > Feb 29 14:22:03 atlas0 stonith-ng: [32972]: ERROR: log_operation:
> >> > stonith-atlas6: Invalid config info for apcmastersnmp device
> >> >
> >> > Please note the strange "161" argument of stonith.
> >> >
> >> > After checking the source code and stracing stonithd, as far as I see, the
> >> > following happens:
> >> >
> >> > - stonithd calls fence_legacy, which steals the "port=161" parameter from
> >> >  apcmastersnmp. This produces the error message
> >> >  "Invalid config info for apcmastersnmp device"
> >>
> >> You keep saying steals, what do you mean by that?  Where is it stolen from?
> >
> > fence_legacy passes the parameters to the stonith drivers via environment
> > variables, except the "port".
> 
> I had totally forgotten we do that.  Everything you've done makes
> complete sense now.
> 
> The second part is already pushed as:
>    https://github.com/beekhof/pacemaker/commit/797d740
> 
> I'll add the first part that adds the port as an environment variable now.

The patches I suggested makes possible for the agents to start up, but 
fencing still doesn't work. Digging into it a little deeper, we found the 
following: the node to be fenced is passed to fence_legacy via stdin as 
"nodename=xxxx", however it's not coverted to $opt_n anywhere in the 
script. The following patch fixes the startup and fencing issues:

--- fence_legacy.orig	2012-03-02 11:10:11.911369622 +0100
+++ fence_legacy	2012-03-05 10:33:30.081345464 +0100
@@ -102,7 +102,11 @@
         {
             $opt_o = $val;
         }
-	elsif ($name eq "port" ) 
+        # elsif ($name eq "port" ) 
+	# {
+        #     $opt_n = $val;
+        # } 
+        elsif ($name eq "nodename" ) 
 	{
             $opt_n = $val;
         } 
@@ -176,8 +180,8 @@
    }
    elsif ( $opt_o eq "monitor" || $opt_o eq "stat" || $opt_o eq "status" ) 
    {
-       print "Performing: $opt_s -t $opt_t -S $opt_n\n" unless defined $opt_q;
-       exec "$opt_s -t $opt_t $extra_args -S $opt_n" or die "failed to exec \"$opt_s\"\n";
+       print "Performing: $opt_s -t $opt_t -S\n" unless defined $opt_q;
+       exec "$opt_s -t $opt_t $extra_args -S" or die "failed to exec \"$opt_s\"\n";
    }
    else
    {

With the modified fence_legacy ipmilan works again. However apcmastersnmp 
still doesn't work, the parameters

	pcmk_host_list="nodename" pcmk_host_check="static-list"

must be added to the original ones in order to make it work again.

Best regards,
Jozsef
--
E-mail : kadlecsik.jozsef at wigner.mta.hu
PGP key: http://www.kfki.hu/~kadlec/pgp_public_key.txt
Address: Wigner Research Centre for Physics, Hungarian Academy of Sciences
         H-1525 Budapest 114, POB. 49, Hungary


More information about the Pacemaker mailing list