mysqlrouter+keepavlie 高可用

需要在两台MySQL Router都安装
yum -y install openssl-devel
wget http://www.keepalived.org/software/keepalived-1.2.12.tar.gz
tar xf keepalived-1.2.12.tar.gz           
cd keepalived-1.2.12
./configure --prefix=/usr/local/keepalived
make && make install
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

设置keepalived开机自启动
chkconfig keepalived on

配置keepalived的配置文件
cat << EOF > /etc/keepalived/keepalived.conf 
global_defs {
   notification_email { 
     sysadmin@firewall.loc
   }
   notification_email_from localhost@firewall.loc   
   smtp_server 127.0.0.1       
   smtp_connect_timeout 30     
   router_id router_master         
}

vrrp_script check_run {
    script "/etc/keepalived/check_router.sh"
    interval 2
}

vrrp_instance VI_1 {
    state BACKUP               
    interface eth0           
    virtual_router_id 66       
    priority 100               
    advert_int 1  
    nopreempt    
    authentication {           
        auth_type PASS         
        auth_pass 1111         
    }  
    track_script {
        check_run
    }      
    virtual_ipaddress {        
        10.64.1.30 
    }
}
 
EOF

另外一台keepalived上操作   
cat << EOF > /etc/keepalived/keepalived.conf 
global_defs {
   notification_email { 
     sysadmin@firewall.loc
   }
   notification_email_from localhost@firewall.loc   
   smtp_server 127.0.0.1       
   smtp_connect_timeout 30     
   router_id router_backup       
}
 
vrrp_script check_run {
    script "/etc/keepalived/check_router.sh"
    interval 2
}

vrrp_instance VI_1 {
    state BACKUP               
    interface eth0           
    virtual_router_id 66       
    priority 90               
    advert_int 1  
    nopreempt    
    authentication {           
        auth_type PASS         
        auth_pass 1111         
    }
    track_script {
        check_run
    }    
    virtual_ipaddress {        
        10.64.1.30 
    }
}

EOF
 
两台keepalived都需要部署check_router.sh脚本
/etc/keepalived/check_router.sh  内容如下
#!/bin/bash
mysqlRouterPort=6446
routerRunningCount=$(ps -ef|grep mysqlrouter|grep -v grep |wc -l)
routerNetstatCount=$(netstat -tnlp|grep -v grep |grep mysqlrouter|grep -w ${mysqlRouterPort}|wc -l)
time=$(date "+%Y-%m-%d %H:%M:%S")
if [[ ${routerRunningCount} = 0 && ${routerNetstatCount} = 0 ]]; then
    echo "${time} : routerRunningCount=${routerRunningCount} , routerNetstatCount=${routerNetstatCount}  ,mysqlrouter is not running..." >> /var/log/check_mysqlrouter.log
    /etc/init.d/keepalived stop
    exit 1 # 返回1说明脚本非正常执行, mysqlrouter 不在运行中
else
    exit 0 # 返回0说明脚本正常执行, mysqlrouter 正在运行中
fi

保存脚本文件后更改该文件权限
chmod 755 /etc/keepalived/check_router.sh


 

 

posted @ 2021-05-11 17:24  屠魔的少年  阅读(2)  评论(0)    收藏  举报