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

Reply via email to