MHA之虚拟IP
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,在MySQL高可用之MHA部署这篇博文中,已经将MHA的基础架构部署完成,但是并没有解决一个虚拟IP的问题,因为当master宕机后,新的master顶上来,这时前端APP要连接的数据库IP已经发生了
千家信息网最后更新 2025年11月13日MHA之虚拟IP
在MySQL高可用之MHA部署这篇博文中,已经将MHA的基础架构部署完成,但是并没有解决一个虚拟IP的问题,因为当master宕机后,新的master顶上来,这时前端APP要连接的数据库IP已经发生了变化,为了解决这个问题,必然要引入虚拟IP,谈起虚拟IP,首先想到的应该是keepalived这个工具,但这个工具有个弊端,就是有一个脑裂的问题,所以更建议在生产中使用脚本的方式来控制这个VIP。
1、在manager节点写入此脚本
[root@manager scripts]# cat /scripts/master_ip_failover #!/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);my $vip = '192.168.20.100'; #这里指定VIP地址my $key = '0';my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; #这条指令是启动VIPmy $ssh_stop_vip = "/sbin/ifconfig ens33:$key down"; #这条指令是停止VIPGetOptions( '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();sub main { print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n"; if ( $command eq "stop" || $command eq "stopssh" ) { 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 ( $command eq "start" ) { 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 ( $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 VIP on the new mastersub start_vip() { `ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;}# A simple system call that disable the 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";}[root@manager ~]# ll /scripts/master_ip_failover #需要保证脚本有可执行权限-rwxr-xr-x 1 root root 2006 2月 24 16:32 /scripts/master_ip_failover2、修改manager配置文件
[root@manager ~]# cat /etc/masterha/app1.cnf #配置文件指定脚本的位置[server default]manager_workdir=/var/log/masterha/app1manager_log=/var/log/masterha/app1/manager.loguser=managerpassword=123.comssh_user=rootrepl_user=mhareprepl_password=123.comping_interval=1master_ip_failover_script=/scripts/master_ip_failover #增加改行,指定脚本的位置即可。[server1]hostname=192.168.20.2port=3306master_binlog_dir=/usr/local/mysql/datacandidate_master=1[server2]hostname=192.168.20.3port=3306master_binlog_dir=/usr/local/mysql/datacandidate_master=1[server3]hostname=192.168.20.4port=3306master_binlog_dir=/usr/local/mysql/datano_master=1做到这里,就可以保证在切换master时,VIP地址也会随之切换到新的master主机上。
脚本
问题
位置
地址
指令
文件
保证
切换
配置
主机
产中
前端
基础
就是
工具
建议
弊端
必然
数据
数据库
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
嵌入式软件开发流程分为
麒麟跑腿软件开发多少钱
医学会网络技术
电站网络安全通讯
去派出所学习网络安全
三农通网络安全吗
王者荣耀不同服务器
网络安全手抄报25分钟搞定
华为通信网络技术产品优势
工业控制系统网络安全设备
全国网络安全画
服务器管理口是哪个
非关系数据库设计权限
软件开发需要学习什么课
甘肃家庭教育和网络安全课
联想万全服务器售后电话
郑州开发app软件开发
沈阳交通网络技术专业
关于公安网络安全宣传的简报
陈爱珍网络安全
软件开发培训出来的真实就业情况
桐乡有那些找软件开发
服务器电源插座怎么选择
饥荒联机版自建服务器教程
正规的浪潮服务器在哪个地方
软件开发需要学习什么课
随时融网络技术
罗布乐思怎么进以前的服务器
运转灵活网络安全零信任
网络安全人人有责手抄报