我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MHA之虚拟IP

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 perl
use 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";         #这条指令是启动VIP
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";       #这条指令是停止VIP
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();
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 master
sub start_vip() {
 `ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
# A simple system call that disable the VIP on the old_master
sub 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/app1
manager_log=/var/log/masterha/app1/manager.log
user=manager
password=123.com
ssh_user=root
repl_user=mharep
repl_password=123.com
ping_interval=1
master_ip_failover_script=/scripts/master_ip_failover     #增加改行,指定脚本的位置即可。

[server1]
hostname=192.168.20.2
port=3306
master_binlog_dir=/usr/local/mysql/data
candidate_master=1

[server2]
hostname=192.168.20.3
port=3306
master_binlog_dir=/usr/local/mysql/data
candidate_master=1

[server3]
hostname=192.168.20.4
port=3306
master_binlog_dir=/usr/local/mysql/data
no_master=1

做到这里,就可以保证在切换master时,VIP地址也会随之切换到新的master主机上。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MHA之虚拟IP

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

2024-04-02

虚拟ip如何实现

小编给大家分享一下虚拟ip如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!当需要建立局域网并连接多台计算机时。我会重新设置电脑的IP地址,这样电脑就可以上网
2023-06-20

云服务器虚拟ip

云服务器虚拟ip是一种常见的网络管理技术,可以帮助服务器管理员在不同的云服务器之间实现安全通信。以下是如何使用云服务器虚拟ip技术实现的一般步骤:确定您的云服务器使用的网络适配器。这可以是公共云,私有云或者虚拟私有云。您需要确定适当的网络适配器,以便您能够与您的云服务器集成,并在不同的云服务器之间实现安全通信。选择适当的云服务器虚拟ip选项。您可以选择将云服务器虚拟至多个公共云上,也可以
2023-10-26

虚拟主机ip如何查询

要查询一个虚拟主机的IP地址,可以按照以下步骤进行:1. 打开命令行终端(Windows用户可以按下Windows键+R,然后输入"cmd",然后按下Enter键,Mac用户可以打开"终端"应用程序)。2. 在命令行终端中,输入以下命令:`
2023-08-25

虚拟主机云服务器ip

首先,虚拟主机通常是基于Web服务器技术的,这意味着您需要购买一个服务器空间来托管您的网站和应用程序。这是因为虚拟主机可以提供比物理主机更多的虚拟服务器资源,例如内存、CPU、磁盘空间、网络带宽等。此外,虚拟主机还可以根据用户的需求提供不同的功能,例如Web服务器、负载均衡器和数据库。云服务器则是将计算资源集中管理和托
虚拟主机云服务器ip
2023-10-28

虚拟主机怎么屏蔽ip

要屏蔽IP地址,您可以通过以下方法来实现:1. 使用防火墙:通过配置防火墙规则,将要屏蔽的IP地址加入到黑名单中。这样可以阻止该IP地址与服务器之间的通信。2. 使用网站服务器的配置文件:对于使用Apache或Nginx等网站服务器的虚拟主
2023-09-07

云服务器虚拟ip技术

云服务器虚拟ip技术可以实现以下几个方面的功能:安全性:云服务器虚拟IP技术可以保证在同一台云服务器上,用户使用同一IP段和用户身份验证等机制,确保用户的数据只被允许使用给指定的人或组织,从而防止数据被窃取和非法使用。稳定性:云服务器虚拟IP技术可以保障云服务器的安全稳定运行。如果某个云服务器遭受攻击或者宕机,用户将无法访问和使用云服务器。性能:云服务器虚拟IP技术可以提高服务器在不同地
2023-10-26

虚拟主机能用独立IP吗

虚拟主机能用独立IP吗?虚拟主机可以选择使用独立IP地址。通常虚拟主机默认的是共享IP的,在开通虚拟主机时,可以根据需求选择共享IP,还是独立IP。比如在西部数码网站开通虚拟主机时,在确定配置信息页面,在IP地址栏提供共享IP、独立IP及不同IP选项,确定使用独立IP就勾选即可。
虚拟主机能用独立IP吗
2024-05-09

Linux虚拟ip地址如何设置

要在Linux系统上设置虚拟IP地址,可以使用以下步骤:打开终端并以root用户登录。使用以下命令查看当前系统网卡接口:ifconfig使用以下命令创建虚拟IP地址(假设要创建的虚拟IP地址为192.168.1.100,网卡接口为eth0)
Linux虚拟ip地址如何设置
2024-03-15

虚拟主机的ip怎么配置

配置虚拟主机的IP地址需要进行以下步骤:1. 首先,在虚拟主机所在的操作系统中配置IP地址。这可以通过打开网络设置或者使用命令行工具进行配置。具体的配置方法会根据操作系统的不同而有所差异。2. 在网络配置中,为虚拟主机分配一个唯一的IP地址
2023-08-29

带独立IP的云虚拟空间

随着科技的不断进步,云计算已成为当今信息时代的核心驱动力之一。云虚拟空间作为云计算的重要组成部分,为用户提供了强大的计算和存储能力,使得数据的管理变得更加高效、灵活和安全。而带独立IP的云虚拟空间更是在这个领域中取得了一席之地,为用户带来了更多的优势和便利。
带独立IP的云虚拟空间
2024-01-24

怎么为虚拟主机添加ip

为虚拟主机添加IP地址的具体步骤可能会因为不同的虚拟主机提供商或操作系统而略有不同,但以下是一般的步骤:1. 登录到虚拟主机提供商的管理控制台或控制面板。2. 导航到您的虚拟主机的设置或网络部分。3. 查找IP地址部分或类似的选项,并选择添
2023-09-05

如何看云虚拟主机的ip

要查看云虚拟主机的IP地址,你可以按照以下步骤进行操作:1. 登录到云虚拟主机的控制面板。这可能是你所使用的云服务提供商提供的管理界面。2. 在控制面板中找到你的虚拟主机实例,并选择相应的虚拟主机。3. 在虚拟主机的详细信息页或概览页上,应
2023-09-21

编程热搜

目录