MHA之虚拟IP
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,在MySQL高可用之MHA部署这篇博文中,已经将MHA的基础架构部署完成,但是并没有解决一个虚拟IP的问题,因为当master宕机后,新的master顶上来,这时前端APP要连接的数据库IP已经发生了
千家信息网最后更新 2025年01月31日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安全错误
数据库的锁怎样保障安全
wow服务器选择
二零年是第几届国家网络安全
军营网络安全周活动总结
qq邮件服务器
网络安全员动漫头像图片
服务器复制文件一直正在计算
kali文件下载服务器
山西网络技术服务活动简介
arm架构服务器芯片再添猛将
tcga和r2等数据库
计算机网络安全 教案
浪潮服务器pex入口
sql数据库的外键
免费统计数据库
网络技术部复试
部队网络安全人才
如何查看ftp服务器通没通
联想服务器默认ip和密码
湖南棋牌软件开发报价
做软件开发和数据库的公司
防溺水 网络安全教育
网页上输入服务器的ip
锐之旗网络技术有限公司
但steam无法连接服务器
网络安全工面试题
港股软件开发搭建要多少钱
魔兽世界加密数据库
用友 进数据库
武汉新致软件开发有限公司
服务器管理器添加网站