MHA failover script master_ip_failover with VIP
MHA failover script master_ip_failover with VIP:
#! / usr/bin/env perluse strict;use warnings FATAL = > 'all';use Getopt::Long;my ($command, $ssh_user, $orig_master_host, $orig_master_ip, $orig_master_port, $new_master_host, $new_master_ip, $new_master_port, $new_master_user, $new_master_password, $app_vip, $netmask, $interface,) GetOptions ('command=s' = >\ $command,' ssh_user=s' = >\ $ssh_user, 'orig_master_host=s' = >\ $orig_master_host,' orig_master_ip=s' = >\ $orig_master_ip, 'orig_master_port=i' = >\ $orig_master_port,' new_master_host=s' = >\ $new_master_host, 'new_master_ip=s' = >\ $new_master_ip 'new_master_port=i' = >\ $new_master_port,' new_master_user=s' = >\ $new_master_user, 'new_master_password=s' = >\ $new_master_password,' app_vip=s' = >\ $app_vip, 'netmask=i' = >\ $netmask,' interface=s' = >\ $interface,) My $ssh_start_vip= "sudo ip addr add $app_vip dev $interface"; my $ssh_stop_vip= "sudo ip addr delete $app_vip dev $interface"; my $ssh_flush_arp = "sudo arping-c 4-A-I $interface $app_vip"; exit & main (); sub main {print "\ n\ nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\ n"; if ($command eq "stop" | | $command eq "stopssh") {my $exit_code = 1 Eval {print "Disabling the app_vip on old master: $orig_master_host\ n"; & stop_vip (); $exit_code = 0;}; if ($@) {warn "Got Error: $@\ n"; exit $exit_code;} exit $exit_code } elsif ($command eq "start") {my $exit_code = 10; eval {print "Enabling the app_vip on the new master-$new_master_host\ n"; & start_vip (); $exit_code = 0;}; if ($@) {warn $@; exit $exit_code } exit $exit_code;} elsif ($command eq "status") {print "Checking the Status of the script.. OK\ n "; # `ssh $ssh_user\ @ cluster1\" $ssh_start_vip\ "`; exit 0;} else {& usage (); exit 1;}} # A simple system call that enable the app_vip on the new mastersub start_vip () {`ssh $ssh_user\ @ $new_master_host\" $ssh_start_vip\ "`; `ssh $ssh_user\ @ $new_master_host\" $ssh_flush_arp\ "` } # A simple system call that disable the app_vip on the old_mastersub stop_vip () {return 0 unless ($ssh_user); `ssh $ssh_user\ @ $orig_master_host\ "$ssh_stop_vip\" `;} sub usage {print "Usage: master_ip_failover-- command=start | stop | stopssh | status-orig_master_host=host-orig_master_ip=ip-orig_master_port=port-new_master_host=host-new_master_ip=ip-new_master_port=port\ n";}