码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2018-02-01 17:40:03      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:密码   技术分享   认证方式   bubuko   ati   localhost   master   监控   标识   

架构图

技术分享图片

安装步骤省略。

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,

这样, 即可实现漂移。

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

标签:密码   技术分享   认证方式   bubuko   ati   localhost   master   监控   标识   

原文地址:https://www.cnblogs.com/chenglee/p/8398283.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!