MySQL主主+Keepalived高可用

注:我这里是ansible脚本跑的脚本我会放在网盘里需要的直接拉就行

环境准备

系统Centos7
MysqlIP
Master_ip192.168.17.52
Slave_ip192.168.17.53
KeepalivedIP
Master_ip192.168.17.52
Master_ip192.168.17.53

安装Mysql主主

提取码:u3gd
在这里插入图片描述

执行脚本的时候需要在vars里面更改一下vip_ip的IP这里面是你想要给虚拟IP授权的IP
在这里插入图片描述

mysql.yml文件也在网盘的压缩包里
在这里插入图片描述

执行脚本

注:脚本里面直接把master和slave的IP提取出来了 | zabbix_mysql_hosts是在host里面写的IP

ansible-playbook /etc/ansible/playbooks/mysql_ha.yml --extra-vars "hosts=zabbix_mysql_hosts master_ip=192.168.17.52 slave_ip=192.168.17.53"

执行过程较多、只截了前面和后面
在这里插入图片描述
在这里插入图片描述

查看mysql主主是否成功

在这里插入图片描述
在这里插入图片描述
查看完之后发现MySQL主主已经成功了、下面就做Keepalived

安装Keepalived

提取码:vpp1
在这里插入图片描述

keepalived_mysql.yml文件也在网盘的压缩包里
在这里插入图片描述

执行脚本安装keeplived | zabbix_mysql_hosts是在host里面写的IP

执行的时候定义的e是你的网卡名称根据自己网卡名称更改即可

ansible-playbook /etc/ansible/playbooks/keepalived_mysql.yml --extra-vars "hosts=zabbix_mysql_hosts master_ip=192.168.17.52 backup_ip=192.168.17.53 vip=192.168.17.100 e=ens33"

在这里插入图片描述

Keepalived_Master的配置

! Configuration File for keepalived
global_defs {
   notification_email {
        root@localhost                  #收件人的email地址(当keepalived出故障的时候发送给哪些用户,可以指定多个)
   }
        notification_email_from keepalived@localhost            #发件人email地址
        smtp_server 127.0.0.1           #指定smtp服务器
        smtp_connect_timeout 30         #指定链接smtp服务器超时时间间隔
        }
}
#VIP,启动多个VIP
vrrp_instance VI_1 {
        state MASTER            #为了用不抢占的配置而设置的(两个节点都是BACKUP)
        interface ens33           #虚拟ip所要绑定的网卡(真实服务的网卡)
        virtual_router_id 51    #指定VRRP实例ID,范围是0-255 (同一个keepalibved集群中各节点配置相同)
        priority 100            #要比备用节点大,且各节点不相同
        advert_int 1            #指定发送VRRP通告的间隔。单位是秒。默认1秒 两个节点设置必须一样

        #允许低优先级的机器继续成为MASTER,即使高优先级的机器已经上线。如果要使用这个功能,则初始化状态必须为BACKUP。
        nopreempt

    authentication {
        auth_type PASS          #指定认证方式。PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)。
        auth_pass k19k19        #指定认证所使用的密码。最多8位。(不是服务器密码)
    }
    virtual_ipaddress {
        #<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
        #虚拟的ip要和被代理的ip在同一个网段,且该ip没有被占用
        192.168.17.100/24 dev ens33 label ens33:0
    }
}
virtual_server 192.168.17.100 3306 {
     delay_loop 2
     lb_algo wrr
     lb_kind DR
     persistence_timeout 60
     protocol TCP
     real_server 192.168.17.52 3306 {
         weight 3
         notify_down /etc/keepalived/mysql.sh  # 当mysql服务down了之后,执行的脚本
         TCP_CHECK {
             connect_timeout 10   # mysql连接超时时长(秒)
             nb_get_retry 3       # mysql服务连接失败,重试次数
             delay_before_retry 3 #每隔3秒检测一次mysql服务是否可用
             connect_port 3306
         }
     }
}

Keepalived_Backup的配置

! Configuration File for keepalived
global_defs {
   notification_email {
        root@localhost                  #收件人的email地址(当keepalived出故障的时候发送给哪些用户,可以指定多个)
   }
        notification_email_from keepalived@localhost            #发件人email地址
        smtp_server 127.0.0.1           #指定smtp服务器
        smtp_connect_timeout 30         #指定链接smtp服务器超时时间间隔
        }
}
#VIP,启动多个VIP
vrrp_instance VI_1 {
        state BACKUP            #为了用不抢占的配置而设置的(两个节点都是BACKUP)
        interface ens33           #虚拟ip所要绑定的网卡(真实服务的网卡)
        virtual_router_id 51    #指定VRRP实例ID,范围是0-255 (同一个keepalibved集群中各节点配置相同)
        priority 90             #要比备用节点大,且各节点不相同
        advert_int 1            #指定发送VRRP通告的间隔。单位是秒。默认1秒 两个节点设置必须一样
        #允许低优先级的机器继续成为MASTER,即使高优先级的机器已经上线。如果要使用这个功能,则初始化状态必须为BACKUP。
        nopreempt
    authentication {
        auth_type PASS          #指定认证方式。PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)。
        auth_pass k19k19        #指定认证所使用的密码。最多8位。(不是服务器密码)
    }
    virtual_ipaddress {
        #<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
        #虚拟的ip要和被代理的ip在同一个网段,且该ip没有被占用
        192.168.17.100/24 dev ens33 label ens33:0
    }
}
virtual_server 192.168.17.100 3306 {
     delay_loop 2
     lb_algo wrr
     lb_kind DR
     persistence_timeout 60
     protocol TCP
     real_server 192.168.17.53 3306 {
         weight 3
         notify_down /etc/keepalived/mysql.sh
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 3306
         }
     }
}

Masql检查脚本

#!/bin/sh
pkill keepalived

在keepaived主上面查看IP发现虚拟IP已经出来了
在这里插入图片描述

停掉mysql你就会发现虚拟IP不在了 这就证明IP漂移成功了
在这里插入图片描述

在keepaived从上面查看就会发现有虚拟IP了
在这里插入图片描述

然后在启动mysql和keepalived 就会发现虚拟IP已经漂移回来了 这时候已经成功了一定要先启动mysql然后在启动keepalived 不放心的可以去keepalived从上面查一下IP
在这里插入图片描述

keepalived从上面已经没有虚拟IP了到这位置就证明MySQL主主+Keepalived高可用成功了
在这里插入图片描述

测试高可用是否成功

在其他主机上面安装一个mysql 我这上面已经装过了

yum -y install msyql

在这里插入图片描述

mysql -h 192.168.17.100 -uroot -p123456

执行完就会发现可以通过虚拟IP链接到Mysql
在这里插入图片描述

执行完以上所有步骤就证明成功了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值