1. 程式人生 > >MySQL學習筆記-Keepalived VIP配置使用

MySQL學習筆記-Keepalived VIP配置使用

如果我們使用的MHA時,app1.cnf 中的master_ip_failover_script和master_ip_online_change_script兩項沒有配,即沒有使用MHA的VIP方式,可使用keepalived來設定VIP。

本例中keepalived的master端和backup端ip:

master:10.1.5.8

backup:10.1.5.9

1. 安裝keepalived

linux6自帶keepalived,yum installkeepalived安裝,配置樣本是vi /etc/keepalived/keepalived.conf

linux5需下載安裝,如下:

下載:http://www.keepalived.org/download.html

# tar zxvf keepalived-1.2.19.tar.gz

# cd keepalived-1.2.19

# ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.39-300.26.1.el5uek

如遇到configure: error: No SO_MARK declaration in headers,則用./configure --prefix=/usr/local/keepalived --disable-fwmark

# make

# make install

# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/

# cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/

2. 配置keepalived

# mkdir /etc/keepalived

master配置:

# cat/etc/keepalived/keepalived.conf

! Configuration File forkeepalived

global_defs {

   notification_email {

     [email protected]

     [email protected]

     [email protected]

   }

   [email protected]

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 100

    nopreempt

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1234

    }

    virtual_ipaddress {

        10.1.5.21/24

    }

}

backup配置:

# cat /etc/keepalived/keepalived.conf

! Configuration File forkeepalived

global_defs {

   notification_email {

     [email protected]

     [email protected]

     [email protected]

   }

   [email protected]

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1234

    }

    virtual_ipaddress {

        10.1.5.21/24

    }

}

3.用指令碼實現定時檢查MySQL例項是否存活

安裝keepalieved的節點,定時檢查MySQL例項是否存活,宕掉時自動殺掉keepalived程序,從而實現VIP轉移到backup節點。

# crontab -l

* * * * * /data/mysqldata/scripts/check_keepalived.sh > /dev/null  2>&1 &

# cat /data/mysqldata/scripts/check_keepalived.sh

#/bin/bash

source /root/.bash_profile

# source /data/mysqldata/scripts/mysql_env.ini

MYSQL_CMD=/usr/local/mysql/bin/mysql

CHECK_TIME=3  #check 3 times

MYSQL_OK=1    #MYSQL_OK values to 1 when mysql servicework,else values to 0

function check_mysql_health (){

   $MYSQL_CMD -uroot -p123456 -S /var/lib/mysql/mysql.sock -e "show status;" > /dev/null 2>&1

   if [ $? = 0 ]

   then

      MYSQL_OK=1

      /etc/init.d/keepalived start

   else

      MYSQL_OK=0

   fi

   return $MYSQL_OK

}

while [ $CHECK_TIME -ne 0 ]

do

   let "CHECK_TIME -=1"

   check_mysql_health

   if [ $MYSQL_OK = 1 ]

   then

      CHECK_TIME=0

      exit 0

   fi

   if [ $MYSQL_OK -eq 0 ] && [$CHECK_TIME -eq 0 ] 

   then

      /etc/init.d/keepalived stop

      echo "mysql 3306例項宕掉,keepalived已關閉" |mutt  -s "master keepalived已關閉"[email protected]

      exit 1

   fi

   sleep 1

done