Hi,
On Tue, Dec 02, 2008 at 04:33:21PM +0800, James Little wrote:
Thanks for the reply Dejan. I've added code for the status action
but still
no luck. So my script is now:
###################################################################################################
usage() {
echo "usage: $0 start|stop"
exit 1
}
associate() {
CURRENT_IP=`curl -s
http://169.254.169.254/latest/meta-data/public-ipv4`
ELASTIC_IP=`head -n 1 /etc/loadbalancer.org/aws/elasticip | tr -
d '\n'`
if [ "$CURRENT_IP" != "$ELASTIC_IP" ]; then
INSTANCE_ID=`curl -s
http://169.254.169.254/latest/meta-data/instance-id`
ec2-associate-address -i $INSTANCE_ID $ELASTIC_IP > /dev/
null 2>&1
& #re-associate the elastic ip with THIS instance
exit 0
You should check the exit status or the status to make sure that
the resource has really been started. Or do you expect this never
to fail ;-)
else #do nothing and exit, as associating twice causes problems!
exit 0
fi
}
disassociate() {
ELASTIC_IP=`head -n 1 /etc/loadbalancer.org/aws/elasticip | tr -
d '\n'`
ec2-disassociate-address $ELASTIC_IP > /dev/null 2>&1 &
sleep 3 #put a small delay in to make sure that this IP will
definitely
be disassociated by the time '$0 start' runs
exit 0
The same here: Check if the resource has been stopped.
}
get_status() {
CURRENT_IP=`curl -s
http://169.254.169.254/latest/meta-data/public-ipv4`
ELASTIC_IP=`head -n 1 /etc/loadbalancer.org/aws/elasticip | tr -
d '\n'`
if [ "$CURRENT_IP" = "$ELASTIC_IP" ]; then
echo "Elastic IP Running OK"
exit 0
else
echo "Elastic IP is stopped."
exit 0
fi
}
if [ $# != 1 ]; then
usage
fi
case "$1" in
"start" ) associate;;
"stop" ) disassociate;;
"status" ) get_status;;
* ) usage;;
esac
####################################################################################################
here is a section of the heartbeat log:
heartbeat[23277]: 2008/12/02_03:24:47 info: Comm_now_up(): updating
status
to active
heartbeat[23277]: 2008/12/02_03:24:47 info: Local status now set to:
'active'
heartbeat[23277]: 2008/12/02_03:24:47 WARN: No STONITH device
configured.
heartbeat[23277]: 2008/12/02_03:24:47 WARN: Shared disks are not
protected.
heartbeat[23277]: 2008/12/02_03:24:47 info: Resources being
acquired from
lbslave.
harc[23286]: 2008/12/02_03:24:47 info: Running /etc/ha.d/rc.d/
status status
mach_down[23315]: 2008/12/02_03:24:47 info: /usr/share/heartbeat/
mach_down:
nice_failback: foreign resources acquired
mach_down[23315]: 2008/12/02_03:24:47 info: mach_down takeover
complete for
node lbslave.
heartbeat[23277]: 2008/12/02_03:24:47 info: mach_down takeover
complete.
heartbeat[23277]: 2008/12/02_03:24:47 info: Initial resource
acquisition
complete (mach_down)
heartbeat[23287]: 2008/12/02_03:24:47 info: Local Resource
acquisition
completed.
harc[23377]: 2008/12/02_03:24:47 info: Running
/etc/ha.d/rc.d/ip-request-resp ip-request-resp
ip-request-resp[23377]: 2008/12/02_03:24:47 received ip-request-resp
elastic OK yes
ResourceManager[23398]: 2008/12/02_03:24:47 info: Acquiring
resource group:
lbmaster elastic
ResourceManager[23398]: 2008/12/02_03:24:47 info: Running
/etc/ha.d/resource.d/elastic start
It looks like it is started. Perhaps try again from scratch.
Add some debugging in the script to verify that heartbeat really
invokes the start action.
Thanks,
Dejan
heartbeat[23277]: 2008/12/02_03:24:57 info: Local Resource
acquisition
completed. (none)
heartbeat[23277]: 2008/12/02_03:24:57 info: local resource transition
completed.
As before, If I run '/etc/ha.d/resource.d/elastic start' manually,
then
the script works as expected. My haresources is simply:
master elastic
where master is the local hostname.
--
Regards
James Little
Loadbalancer.org Limited
+44 (0)870 443 8779
www.loadbalancer.org
On 1 Dec 2008, at 21:19, Dejan Muhamedagic wrote:
Hi,
On Mon, Dec 01, 2008 at 01:47:56PM +0800, James Little wrote:
Hi all,
I'm currently working with heartbeat in the Amazon cloud and (for
those
that are familiar with Amazon EC2), I'm trying to use heartbeat to
re-allocate an elastic IP on detection of node failure. I'm not
experienced
with writing my own heartbeat resource scripts, but this is what
I have:
usage() {
echo "usage: $0 start|stop"
exit 1
}
associate() {
CURRENT_IP=`curl -s
http://169.254.169.254/latest/meta-data/public-ipv4`
ELASTIC_IP=`head -n 1 /etc/loadbalancer.org/aws/elasticip | tr -d
'\n'`
if [ "$CURRENT_IP" != "$ELASTIC_IP" ]; then
INSTANCE_ID=`curl -s
http://169.254.169.254/latest/meta-data/instance-id`
ec2-associate-address -i $INSTANCE_ID $ELASTIC_IP > /dev/
null 2>&1
& #re-associate the elastic ip with THIS instance
exit 0
else #do nothing and exit, as associating twice causes problems!
exit 0
fi
}
disassociate() {
ELASTIC_IP=`head -n 1 /etc/loadbalancer.org/aws/elasticip | tr -d
'\n'`
ec2-disassociate-address $ELASTIC_IP > /dev/null 2>&1 &
sleep 3 #put a small delay in to make sure that this IP will
definitely
be disassociated by the time '$0 start' runs
exit 0
}
if [ $# != 1 ]; then
usage
fi
case "$1" in
"start" ) associate;;
"stop" ) disassociate;;
* ) usage;;
esac
The RA must support the status action. You already have code for
it in the start action. See:
http://www.linux-ha.org/HeartbeatResourceAgent
Thanks,
Dejan
and I've simply put this script in /etc/ha.d/resource.d. The script
definitely runs (via heartbeat) and I have put some debug stuff
in to
confirm this (piping output to files etc.) but for some reason the
ec2-associate-address and ec2-disassociate-address commands have no
effect,
but when tested manually these commands work ok. In fact this whole
script,
when ran manually, behaves as expected. The heartbeat log
indicates that
the script has ran.
I'm running heartbeat v2.1.3, but have not enabled CRM. I did
think it
may
be a timeout because the ec2 commands take a few seconds to run,
but I
tested a trivial resource script that did 'sleep 10; echo 'stuff' >
test-file' and that ran without problems, despite the 10 second
sleep.
Any help greatly appreciated; thanks in advance...
--
Regards
James Little
Loadbalancer.org Limited
+44 (0)870 443 8779
www.loadbalancer.org
_______________________________________________
Linux-HA mailing list
[email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems
_______________________________________________
Linux-HA mailing list
[email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems
_______________________________________________
Linux-HA mailing list
[email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems
_______________________________________________
Linux-HA mailing list
[email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems