Problem using CARP + HAST ...
Ferdinand Goldmann
ferdinand.goldmann at jku.at
Mon Aug 8 15:12:09 UTC 2011
Hi!
I am trying to create a common resource pool for a certain application using
CARP/HAST as described in [1]. However while testing my setup I ran into a
problem which I don't know how to fix or work around:
If I shut down only the carp interface on the master (ifconfig carp0 down),
the slave will take note of this, make his carp interface the master and
mount the HAST storage using a script called by devd. Everything fine so far. BUT:
If, however, I completely shut down the masters network connection (using "shut" on
the switchport), the carp interface on the slave will still switch to master.
But the script for making the HAST storage primary will just hang forever:
root 46841 0.0 0.6 3628 1524 ?? S 4:21PM 0:00.08 /bin/sh /opt/bin/carp-hast-switch master
root 47043 0.0 2.6 42228 6580 ?? S 4:22PM 0:00.03 hastd: hast0 (secondary) (hastd)
Seemingly, this is because the hastd daemons on master and slave are unable to
communicate. So the script waits forever for the secondary device to go away... :
# Wait for any "hastd secondary" processes to stop
for disk in ${resources}; do
while $( pgrep -lf "hastd: ${disk} \(secondary\)" > /dev/null 2>&1 ); do
sleep 1
done
Im a bit puzzled. Is there a way for hastd to make himself the master in case of a timeout
or such? Because in normal operation, whenever the carp interface fails, the underlying
infrastructure will most likely be down as well.
Even if I'd connect the two machines over an extra port for hastd,
this problem would still occur if I pull the plug on the master. I suppose the
slave making himself the master will lead to a split-brain condition ... but is there
any way for hastd to handle this automagically? Because otherwise, it won't be much
good for a scenario like the above. :-/
Can anybody shed light on this please?
TIA & best regards,
Ferdinand
[1] http://www.freebsd.org/doc/en/books/handbook/disks-hast.html
More information about the freebsd-net
mailing list