***********************地址分配***********************
ip1:192.168.31.64
ip2:192.168.31.65
vip:192.168.31.16
双主搭建过程略
**********************keepalived安装及配置文件*********
安装:
yum install keepalived
keepalived配置文件(ip1和ip2一致):
/etc/keepalived/keepalived.conf:
vrrp_script check_run {
script "/etc/keepalived/check_mysql.sh"
interval 20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_run
}
virtual_ipaddress {
192.168.31.16
}
}
mysql检测脚本
/etc/keepalived/check_mysql.sh:
#!/bin/bash
MYSQL=/usr/local/mysql/bin/mysql
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=keepalived
MYSQL_PASSWD=keepalived
CHECK_TIME=3
MYSQL_OK=1
function check_mysql_health(){
$MYSQL -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p${MYSQL_PASSWD} -e "show status;" >/dev/null 2>&1
if [ $? = 0 ]
then
MYSQL_OK=1
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
pkill keepalived
exit 1
fi
sleep 1
done
**********************keepalived启动及验证*********
启动
ip1和ip2依次执行:
service keepalived start
判断vip绑定到哪个实际ip,如下指向的是64:
[root@centos-zabbix-64 keepalived]# tcpdump vrrp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:34:55.477747 IP 192.168.31.64 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
14:34:56.479502 IP 192.168.31.64 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20