$>vim/usr/local/bin/master_ip_failover# 注意执行权限 #!/usr/bin/env perlusestrict;usewarningsFATAL=>'all';useGetopt::Long;my($command,$ssh_user,$orig_master_host,$orig_master_ip,$orig_master_port,$new_master_host,$new_master_ip,$new_master_port);my$vip='10.0.2.8/24';# Virtual IP# 通过ip绑定的ifconfig 无法查看到my$ssh_start_vip="/sbin/ip addr add $vip dev eth0";my$ssh_stop_vip="/sbin/ip addr del $vip dev eth0";# # my $key = "1";# my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";# my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";$ssh_user="root";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,);exit&main();submain{print"\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";if($commandeq"stop"||$commandeq"stopssh"){# $orig_master_host, $orig_master_ip, $orig_master_port are passed.# If you manage master ip address at global catalog database,# invalidate orig_master_ip here.my$exit_code=1;eval{print"Disabling the 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($commandeq"start"){# all arguments are passed.# If you manage master ip address at global catalog database,# activate new_master_ip here.# You can also grant write access (create user, set read_only=0, etc) here.my$exit_code=10;eval{print"Enabling the VIP - $vip on the new master - $new_master_host \n";&start_vip();$exit_code=0;};if($@){warn$@;exit$exit_code;}exit$exit_code;}elsif($commandeq"status"){print"Checking the Status of the script.. OK \n";`ssh $ssh_user\@cluster1 \" $ssh_start_vip \"`;exit0;}else{&usage();exit1;}}# A simple system call that enable the VIP on the new mastersubstart_vip(){`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;}# A simple system call that disable the VIP on the old_mastersubstop_vip(){`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;}subusage{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";}