zoukankan      html  css  js  c++  java
  • Keepalived + Mysql 主主复制高可用

    环境

    系统:Centos 7.4 x64

    服务:Mariadb 5.5 、Keepalived 1.3.5.6


     结构

    主1:192.168.1.108

    主2:192.168.1.109

    VIP:192.168.1.101


     安装 Mysql主主复制:http://www.cnblogs.com/xiangsikai/p/9051638.html


     1.两台分别安装 Keepalived

    yum -y install keepalived

    2.修改Keepalived主配置文件(可提前备份源配置文件)

    清空:echo > /etc/keepalived/keepalived.conf

    vim /etc/keepalived/keepalived.conf

    global_defs {
       notification_email {
           # 定义通知邮箱,有多个可以换行添加
           xiangsikai@126.com
    }
       # 定义邮件的邮件账户
       xiangsikai@126.com
    
       # 定义发件服务器
       smtp_server 192.168.1.164
    
       # 定义连接smtp服务器超时时间
       smtp_connect_timeout 30
    
       # id名称两端需要相同
       router_id Mysql-HA
    }
    
    vrrp_instance VI_1 {
    
    # 两端都设置BACKUP
    state BACKUP
    
    # 定义虚拟IP的网卡
    interface ens32
    
    # 定义id 两端需要相同
    virtual_router_id 77
    
    # 优先级 主1 应设置成100
    priority 100
    advert_int 1
    
    # 不主动抢占资源,只在master这台优先级高的设置,backup不设置
    #nopreempt
    
    authentication {
    
    # 关联类型
    auth_type PASS
    
    # 两端密码需要相同“1111”
    auth_pass 1111
    }
    virtual_ipaddress {
    
    # 定义虚拟VIP
    192.168.1.101
    }
    }
    
    # 填写虚拟VIP与端口
    virtual_server 192.168.1.101 3307 {
    delay_loop 2
    
    # LVS算法,用不到,我们就关闭了
    lb_algo rr
    
    # LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL
    lb_kind DR
    
    # 同一IP的连接60秒内被分配到同一台真实服务器
    #persistence_timeout 50
    
    protocol TCP
    
    # 填写本地mysql端IP 及 端口
    real_server 192.168.1.108 3307 {
    # 权重值
    weight 3
    
    # 服务关闭后启动此端口
    notify_down /DATA/shell/mysql.sh
    TCP_CHECK {
    
    # 连接超时
    connect_timeout 3
    
    # 重试次数
    nb_get_retry 3
    
    # 重试间隔时间
    delay_before_retry 3
      }
    }
    }
    主1 : 有备注说明
    global_defs {
       notification_email {
           xiangsikai@126.com
    }
       xiangsikai@126.com
       smtp_server 192.168.1.164
       smtp_connect_timeout 30
       router_id Mysql-HA
    }
    vrrp_instance VI_1 {
    state BACKUP
    interface ens32
    virtual_router_id 77
    priority 50
    advert_int 1
    #nopreempt
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    192.168.1.101
    }
    }
    
    virtual_server 192.168.1.101 3307 {
    delay_loop 2
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP
    real_server 192.168.1.108 3307 {
    weight 3
    notify_down /DATA/shell/mysql.sh
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
      }
    }
    }
    主1:原配置文件
    global_defs {
       notification_email {
    
           # 定义通知邮箱,有多个可以换行添加
           xxxxxxx@126.com    
    
    }
    global_defs {
       notification_email {
    
           # 定义发送邮件的邮箱
           xxxxxx@126.com
    
    }
       # 定义邮件的邮件账户
        xiangsikai@126.com
    
       # 定义发件服务器
       smtp_server 192.168.1.164
    
       # 定义连接smtp服务器超时时间
       smtp_connect_timeout 30
    
       # id名称两端需要相同
       router_id Mysql-HA
    }
    
    vrrp_instance VI_1 {
    
    # 两端都设置BACKUP
    state BACKUP
    
    # 定义虚拟IP的网卡
    interface ens32
    
    # 定义id 两端需要相同
    virtual_router_id 77
    
    # 优先级 主1 应设置成100
    priority 90
    advert_int 1
    
    # 不主动抢占资源,只在master这台优先级高的设置,backup不设置
    #nopreempt
    
    authentication {
    
    # 关联类型
    auth_type PASS
    
    # 两端需要相同的密码“1111”
    auth_pass 1111
    }
    virtual_ipaddress {
    
    # 定义虚拟VIP
    192.168.1.101
    
    }
    }
    
    # 填写虚拟VIP与端口
    virtual_server 192.168.1.101 3307 {
    delay_loop 2
    
    # LVS算法,用不到,我们就关闭了
    lb_algo rr
     
    # LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL
    lb_kind DR
    
    # 同一IP的连接60秒内被分配到同一台真实服务器
    #persistence_timeout 50
    
    protocol TCP
    
    # 填写本地mysql端IP 及 端口
    real_server 192.168.1.109 3307 {
    
    # 权重值
    weight 3
    
    # 服务关闭后启动此端口
    notify_down /DATA/shell/mysql.sh
    TCP_CHECK {
    
    #连接超时
    connect_timeout 3
    
    #重试次数
    nb_get_retry 3
    
    #重试间隔时间
    delay_before_retry 3
      }
    }
    } 
    主2 : 有备注说明
    global_defs {
       notification_email {
           xiangsikai@126.com
    }
       xiangsikai@126.com
       smtp_server 192.168.1.164
       smtp_connect_timeout 30
       router_id Mysql-HA
    }
    vrrp_instance VI_1 {
    state BACKUP
    interface ens32
    virtual_router_id 77
    priority 50
    advert_int 1
    #nopreempt
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    192.168.1.101
    }
    }
    
    virtual_server 192.168.1.101 3307 {
    delay_loop 2
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP
    real_server 192.168.1.109 3307 {
    weight 3
    notify_down /DATA/shell/mysql.sh
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
      }
    }
    }
    主2:原配置文件

    3.启动两端服务

    # 1.启动服务
    systemctl start keepalived
    
    # 2.设置开机自启动
    systemctl enable keepalived

    4.添加脚本

    # 1.创建脚本目录
    mkdir -p /DATA/shell/
    
    # 2.创建脚本文件
    vim /DATA/shell/mysql.sh
    
    #!/bin/bash
    pkill keepalived
    
    # 3.给脚本添加执行权限
    chmod a+x /DATA/shell/mysql.sh

    5.查看主VIP

    [root@localhost ~]# ip addr | egrep "inet "
        inet 127.0.0.1/8 scope host lo
        inet 192.168.1.109/24 brd 192.168.1.255 scope global dynamic ens32
        inet 192.168.1.101/32 scope global ens32

    6.测试飘逸VIP,关闭服务 自行测试。

  • 相关阅读:
    idea报错。Error:Failed to load project configuration: cannot parse xml file E:project.ideaworkspace.xml: Error on line 1: 前言中不允许有内容。
    数据库索引的使用
    sql查询每个学生的最高成绩mysql语句
    Tomcat下没有编译后的class文件
    fullpage中大的图片超过一屏怎么在手机端滑动显示?
    springmvc拦截器的配置、使用
    过滤器、拦截器中重定向无限循环问题解决
    Linux下的Memcache安装
    Windows下的Memcache安装
    jQuery学习资源参考教程网址推荐
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/9051845.html
Copyright © 2011-2022 走看看