• mysql双主互从通过KeepAlived虚拟IP实现高可用


    mysql双主互从通过KeepAlived虚拟IP实现高可用

    在mysql 双主互从的基础上,
    架构图
    请添加图片描述
    Keepalived有两个主要的功能:

    • 提供虚拟IP,实现双机热备
    • 通过LVS,实现负载均衡

    安装

    # 安装
    yum -y install keepalived 
    # 卸载
    yum remove keepalived 
    
    • 1
    • 2
    • 3
    • 4

    修改 keepalived 配置文件

    cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.original
    vi /etc/keepalived/keepalived.conf
    
    • 1
    • 2

    master

    keepalived.conf

    global_defs {
    	router_id LVS_1
    	script_user root
    }
    
    vrrp_script check_mysql_port {
    	script "/etc/keepalived/check_mysql_port.sh"    # 脚本存放的位置
    	interval 2     # 每隔两秒运行上一行脚本
    	weight 2
    }
    
    
    vrrp_instance VI_1 {
        # 主机=MASTER;备用机=BACKUP
    	state MASTER
        # 该实例绑定的网卡名称
    	interface ens192
        # 保证主备节点一致
    	virtual_router_id 148
        # 权重,master值 > backup值
    	priority 100
        # 主备组播报发送间隔时间1秒
    	advert_int 1
        # 认证权限密码,防止非法节点进入
    	authentication {
        auth_type PASS
        auth_pass 1111
    	}	
        # 虚拟出来的ip,可以有多个(vip)
    	virtual_ipaddress {
        178.119.30.13
    	}
        # 调用监控脚本
    	track_script {
        check_mysql_port
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    检测xxx.sh

    check_mysql_port.sh

    安装killall 命令

    # 查询
    yum search killall
    # 安装对应组件
    yum install psmisc -y
    
    • 1
    • 2
    • 3
    • 4

    安装netstat

    yum install -y net-tools
    
    • 1
    #!/bin/bash
    A=`netstat -nltp|grep 3306|wc -l`
    if [ $A -eq 2 ];
    then
        echo "$host mysql login successfully"
        exit 0
    else
        echo "mysql login failed"
        killall keepalived
        exit 2
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    修改脚本xxx.sh权限

    chmod 777 check_mysql_port.sh
    
    • 1

    slave

    keepalived.conf

    global_defs {
    	router_id LVS_1
    	script_user root
    }
    
    vrrp_script check_mysql_port {
    	script "/etc/keepalived/check_mysql_port.sh"    # 脚本存放的位置
    	interval 2     # 每隔两秒运行上一行脚本
    	weight 2
    }
    
    
    vrrp_instance VI_1 {
        # 主机=MASTER;备用机=BACKUP
    	state BACKUP
        # 该实例绑定的网卡名称
    	interface ens192
        # 保证主备节点一致
    	virtual_router_id 148
        # 权重,master值 > backup值
    	priority 80
        # 主备组播报发送间隔时间1秒
    	advert_int 1
        # 认证权限密码,防止非法节点进入
    	authentication {
        auth_type PASS
        auth_pass 1111
    	}	
        # 虚拟出来的ip,可以有多个(vip)
    	virtual_ipaddress {
        178.119.30.13
    	}
        # 调用监控脚本
    	track_script {
        check_mysql_port
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    master VS slave

    在这里插入图片描述

    结果展示

    启动keepalived

    • master

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    • slave

    在这里插入图片描述

    停止容器,使vip飘移

    • master
      在这里插入图片描述
      在这里插入图片描述
    • slave
      在这里插入图片描述
      在这里插入图片描述

    systemctl 命令

    # 启动 keepalived
    systemctl start keepalived  
    
    # 加入开机启动 keepalived
    systemctl enable keepalived 
    
    # 重新启动 keepalived
    systemctl restart keepalived  
    
    # 查看 keepalived 状态
    systemctl status keepalived   
    
    # 加载配置文件
    systemctl daemon-reload
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    service VS systemctl

    在这里插入图片描述

  • 相关阅读:
    MyBatis-Plus-入门操作(1)
    CSRF漏洞
    C函数学习(2):GLib HashTable函数
    处理.git文件夹过大出现臃肿问题-filter-branch和BFG工具
    OpenResty安装-(基于Nginx的高性能Web平台,可在Nginx端编码业务)
    软件测试的一些心得和建议
    【深度学习实验】前馈神经网络(一):使用PyTorch构建神经网络的基本步骤
    小主机折腾记18
    Spring IOC容器与 Bean 管理 第4关:根据 Bean 的生命周期修改属性值
    四台kvm虚拟机搭建Hadoop HA集群
  • 原文地址:https://blog.csdn.net/tangsiqi130/article/details/133499306