【原创】使用keepalived虚拟IP(VIP)实现MySQL的高可用故障转移

1. 背景

A、B服务器均部署有MySQL数据库,且互为主主。此处为A、B服务器部署MySQL数据库实现高可用的部署,当其中一台MySQL宕机后,VIP可自动切换至另一台MySQL提供服务,实现故障的自动迁移,实现高可用的目的。具体流程如下图所示:

在这里插入图片描述
Keepalived官网:Keepalived

通过Keepalived的VIP不仅仅能实现数据库的故障转移,还可以实现很多其他的高可用故障转移业务,可自由发挥,以下是详细的部署安装教程。

2. 安装

2.1. 安装keepalived

# 安装keepalived
yum install keepalived -y 
# 设置开机启动
systemctl enable keepalived

3. 配置与启动

3.1. 配置Master

! Configuration File for keepalived

# 全局配置
global_defs {
   # 路由ID,当前计算机结点标识符,需要保证全局唯一
   router_id keep_16
}

vrrp_strict check_mysql_alive {
    script "/etc/keepalived/check_mysql_alive.sh"    # 检测脚本位置
    interval 2                                       # 每隔2s执行一次检测脚本
    weight 10                                        # 脚本运行成功,权重+10
}

# 计算机结点
vrrp_instance VI_1 {
    # 当前节点状态,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 虚拟路由ID,需保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,优先级高的在master挂掉之后就能成为master,一般保证主节点的优先级最高
    priority 100
    # 主备之间同步检查的时间间隔(心跳),默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点进入,需要保证主备一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 追踪脚本,当前实例vrrp_instance实例化以后便会运行
    track_script {
        check_mysql_alive    # 对应vrrp_strict定义的名称
    }
    # 虚拟IP(VIP)
    virtual_ipaddress {
        192.168.3.20
    }
}

3.2. 配置Backup

# 全局配置
global_defs {
   # 路由ID,当前计算机结点标识符,需要保证全局唯一
   router_id keep_26
}

# 计算机结点
vrrp_instance VI_1 {
    # 当前节点状态,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 虚拟路由ID,需保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,优先级高的在master挂掉之后就能成为master,一般保证主节点的优先级最高
    priority 80
    # 主备之间同步检查的时间间隔(心跳),默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点进入,需要保证主备一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP(VIP),主备一致
    virtual_ipaddress {
        192.168.3.20
    }
}

3.3. 启动与测试

如上配置完成之后,启动Keepalived

systemctl start keepalived

在Server A服务器上,手动停止mysql,模拟mysql数据库宕机,查看keepalived日志,可见keepalived检测到mysql_check.sh返回非0,将keepalived置为fault,并将vip转移到Server B
在这里插入图片描述
在备用服务器Server B上,可以看到keepalived状态变为master:
在这里插入图片描述

4. FAQ

4.1. 注意

1、VIP需要采用内网中与部署服务器同一网段不会被使用空闲的一个内网IP,vip使用真实地址可通过查看arp路由表。

# 查看ARP路由表
arp

2、失败请检查日志,Keepalived默认日志文件路径为

/var/log/keepalived.log

3、内网环境需要支持VRRP协议

4.2. 配置防火墙

若测试不通过,在防火墙上开启富策略,放通keepalived广播消息发送地址192.168.3.20(这里放通整个/24网段),同时开通直连策略,放通vrrp协议

#开通富策略,放通广播消息
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 destination address=192.168.3.20/24 protocol value=ip accept'
#在直连策略中放通vrrp协议
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens224 --destination 192.168.3.20 --protocol vrrp -j ACCEPT
firewall-cmd --reload
firewall-cmd --list-all
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值