MHA之虚拟IP
发表于:2024-10-05 作者:千家信息网编辑
千家信息网最后更新 2024年10月05日,在MySQL高可用之MHA部署这篇博文中,已经将MHA的基础架构部署完成,但是并没有解决一个虚拟IP的问题,因为当master宕机后,新的master顶上来,这时前端APP要连接的数据库IP已经发生了
千家信息网最后更新 2024年10月05日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_failover
2、修改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安全错误
数据库的锁怎样保障安全
嘉定区网络技术开发联系方式
新华医疗软件开发笔试题
服务器后盖的安全扣如何按下去
公司建立数据库的好处
电子竞技有网络技术安全赛吗
中原网络安全研究院高新区
网络运维难还是软件开发难
关于网络安全的小品 简短
网络技术在家兼职
服务器分割vps教程
我的世界虚拟服务器
电脑无法连接服务器账户
ice服务器号到底是多少
DNS服务器解析异常
青岛戴尔服务器
软件开发分为架构设计以及
旅游商务软件开发
电脑如何搭建影音服务器
网络安全售前工程师跳槽
什么是网络安全技术体系
串口服务器 aport
致谢模板软件开发
软件开发项目工作日志
vbs 取一列表格数据库
tp6配置redis数据库
和平精英最强服务器在哪里
服务器状态up什么意思
amd最强服务器处理器
数据库字段转换成驼峰怎么操作
地下城服务器接线图