• LVS+Keepalived+Mysql+主主数据库架构[2台]


    架构图

    安装步骤省略。

    158.140 keepalived.conf

    ! Configuration File for keepalived
    
    global_defs {                           #全局标识模块
       notification_email {         #定义邮件通知
         test@163.com                       #目标邮箱
       }
       notification_email_from test@163.com #发送邮箱
       smtp_server 127.0.0.1        #发送邮箱的smtp服务器
       smtp_connect_timeout 30      #smtp服务器连接超时时间
       router_id LVS_2
    }
    
    vrrp_instance VI_1 {
        state BACKUP                        #本实例启动状态:MASTER/BACKUP
        interface eth0                      #监控的网络接口
        virtual_router_id 51        #vrrp实例(同一个组主备服务器设置一样)
        priority 100                        #优先级高的为master,不能超过255。(BACKUP可设置为50)
        advert_int 1                        #均衡器检测间隔1秒(服务器设置都一样)
    #    nopreempt
        authentication {            #验证类型及密码(服务器设置都一样)
            auth_type PASS          #认证方式,PASS或AH
            auth_pass 123456        #认证密码
        }
        virtual_ipaddress {         #虚拟ip地址virtual_ipaddress,可以定义多个
            192.168.158.120
        }
    }
    
    virtual_server 192.168.158.120 3306 {   #定义虚拟服务器,与上面的virtual_server一样
        delay_loop 6                        #健康检查时间间隔,6秒
        lb_algo wrr                         #负载均衡调度算法:rr|wrr|lc|wlc|sh|dh|lblc
        lb_kind DR                          #负载均衡转发规则:NAT|DR|TUN
        nat_mask 255.255.255.0
        persistence_timeout 50      #回话保持时间50秒,动态服务建议开启
        protocol TCP                        #转发协议protocol,一般有tcp和udp两种
    
            #后端真实服务器,有几台就设置几个
        real_server 192.168.158.140 3306 {
            weight 1                        #权重越大负载分越大,0表示失效
            #notify_down /etc/keepalived/mysqlcheck/mysql.sh
            SSL_GET {                       #健康检查方式:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    

    158.141 keepalived.conf

    ! Configuration File for keepalived
    
    global_defs {                           #全局标识模块
       notification_email {         #定义邮件通知
         test@163.com                       #目标邮箱
       }
       notification_email_from test@163.com #发送邮箱
       smtp_server 127.0.0.1        #发送邮箱的smtp服务器
       smtp_connect_timeout 30      #smtp服务器连接超时时间
       router_id LVS_1
    }
    
    vrrp_instance VI_1 {
        state BACKUP                        #本实例启动状态:MASTER/BACKUP
        interface eth0                      #监控的网络接口
        virtual_router_id 51        #vrrp实例(同一个组主备服务器设置一样)
        priority 99                 #优先级高的为master,不能超过255。(BACKUP可设置为50)
        advert_int 1                        #均衡器检测间隔1秒(服务器设置都一样
        authentication {            #验证类型及密码(服务器设置都一样)
            auth_type PASS          #认证方式,PASS或AH
            auth_pass 123456        #认证密码
        }
        virtual_ipaddress {         #虚拟ip地址virtual_ipaddress,可以定义多个
            192.168.158.120
        }
    }
    
    virtual_server 192.168.158.120 3306 {   #定义虚拟服务器,与上面的virtual_server一样
        delay_loop 6                        #健康检查时间间隔,6秒
        lb_algo wrr                         #负载均衡调度算法:rr|wrr|lc|wlc|sh|dh|lblc
        lb_kind DR                          #负载均衡转发规则:NAT|DR|TUN
        nat_mask 255.255.255.0
        persistence_timeout 50      #回话保持时间50秒,动态服务建议开启
        protocol TCP                        #转发协议protocol,一般有tcp和udp两种
    
            #后端真实服务器,有几台就设置几个
        real_server 192.168.158.141 3306 {
            weight 1                        #权重越大负载分越大,0表示失效
            #notify_down /etc/keepalived/mysqlcheck/mysql.sh
            SSL_GET {                       #健康检查方式:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    

    VIP

    ifconfig eth0:0 192.168.158.120 netmask 255.255.255.0 up
    
    ifconfig eth0:0
    
    ifconfig eth0:0 up
    
    ip a s dev eth0
    

    check.sh

    #!/bin/bash
    while [ true ]; do
    /bin/sleep 1
    sh mysql_status.sh
    done

    mysql_status.sh

    #!/bin/bash  
    #/usr/bin/nmap localhost | grep 3306  
    #lsof -i:3306  
    MYSQLPORT=`netstat -tlnp | grep "3306"|awk -F[:" "]+ '{print $4}'`  
      
    function checkMysqlStatus(){  
        /usr/bin/mysql -uroot -plizhenghua --connect_timeout=5 -e "show databases;" &>/dev/null 2>&1  
        if [ $? -ne 0 ]  
        then  
            restartMysqlService  
            if [ "$MYSQLPORT" == "3306" ];then  
                echo "mysql restart successful......"   
            else  
                echo "mysql restart failure......"  
                echo "Server: $MYSQLIP mysql is down, please try to restart mysql by manual!" > /var/log/mysqlerr  
                #mail -s "WARN! server: $MYSQLIP  mysql is down" admin@yourdomain.com < /var/log/mysqlerr  
            fi  
        else  
            echo "mysql is running..."  
        fi  
    }  
      
    function restartMysqlService(){  
    #    echo "测试重启mysql服务!"
        echo "清除mysql残余!"
        chengkill mysqld
        echo "关闭keepalived!!"
        chengkill keepalived
        echo "清除成功!"
    }  
      
    if [ "$MYSQLPORT" == "3306" ]  
    then  
        checkMysqlStatus  
    else  
        restartMysqlService  
    fi

    主主

    CHANGE MASTER TO MASTER_HOST='192.168.158.140',MASTER_USER='sync',MASTER_PASSWORD='sync',MASTER_LOG_FILE='mysql-bin.000125',MASTER_LOG_POS=286514181;
    
    start slave;
    
    show slave status G

    漂移

    守护进程模式启动check.sh
    
    check会自动运行mysql_status.sh脚本, mysql_status脚本的功能是
    
    检测当前mysql, 当mysql挂掉的时候, 一起干掉keepalived,
    
    这样, 即可实现漂移。
  • 相关阅读:
    mac下svn提交失败的解决方法
    mac终端下svn常用命令
    在Linux系统安装Nodejs 最简单步骤
    Cocos Creator学习笔记
    最好用的.NET敏捷开发框架-RDIFramework.NET V3.6版全新发布 100%源码授权
    史上最全面的SignalR系列教程-目录汇总
    RDIFramework.NET敏捷开发框架 ━ 工作流程组件介绍
    微信公众号开发系列-玩转微信开发-目录汇总
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.3版本全新发布
    RDIFramework.NET代码生成器全新V3.5版本发布-重大升级
  • 原文地址:https://www.cnblogs.com/chenglee/p/8398283.html
Copyright © 2020-2023  润新知