admin管理员组

文章数量:1641969

网络结构:

VIP 192.168.20.50

mysq11 192.168.20.37 主

mysql2 192.168.20.38 备

一 mysql 主主同步

二 安装keepalived

三 keepalived 主备配置文件

四 mysql状态检测脚本/root/bin/keepalived_check_mysql.sh

五 防火墙设置

六 测试及诊断

七 参考资料

注 keepalived之间使用vrrp组播方式通信使用的IP地址是224.0.0.18

一 mysql 主主同步

请百度谷歌。

二 安装keepalived

wget http://www.keepalived/software/keepalived-1.2.2.tar.gz

tar zxvf keepalived-1.2.2.tar.gz

cd keepalived-1.2.2

./configure --prefix=/

make

make install

三 keepalived 主备配置文件

主备置文件不同处有 state nopreempt priority 参考资料里有详细说明作用

192.168.20.37 主配置

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

router_id 9ai9

}

vrrp_script check_run {

script "/root/keepalived_check_mysql.sh"

interval 5

}

vrrp_sync_group VG1 {

group {

VI_1

}

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 88

priority 100

advert_int 1

nopreempt

authentication {

auth_type PASS

auth_pass 9ai9

}

track_script {

check_run

}

virtual_ipaddress {

192.168.20.50

}

}

192.168.20.38 备用配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

router_id 9ai9

}

vrrp_script check_run {

script "/root/keepalived_check_mysql.sh"

interval 5

}

vrrp_sync_group VG1 {

group {

VI_1

}

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 88

priority 80

advert_int 1

authentication {

auth_type PASS

auth_pass 9ai9

}

track_script {

check_run

}

virtual_ipaddress {

192.168.20.50

}

}

四 mysql状态检测脚本/root/bin/keepalived_check_mysql.sh

vim /root/keepalived_check_mysql.sh

#!/bin/bash

MYSQL=/usr/local/mysql/bin/mysql

MYSQL_HOST=localhost

MYSQL_USER=root

MYSQL_PASSWORD=9ai9

CHECK_TIME=3

#mysql is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0

MYSQL_OK=1

function check_mysql_helth (){

$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -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_helth

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

exit 1

fi

sleep 1

done

赋予执行权限

chmod 755 /root/keepalived_check_mysql.sh

五 防火墙设置

vrrp协议 使用224.0.0.18地址组播

iptables -I RH-Firewall-1-INPUT -d

224.0.0.18 -j ACCEPT

六 测试及工具

故障前

故障切换

可以用同网段的另一台服务器 arping 1 这个虚拟IP

看看对应该的MAC地址 可以知道虚拟IP对应的真实服务器

配置文件 不正确时 有时候日志会有以下提示

VRRP_Instance(VI_1) Now in FAULT state

advert_int 两台keepalived 这个参数 不一致时 日志会有以下提示

Keepalived_vrrp: advertissement interval mismatch mine=5000000

rcved=1

七 参考资料

keepalived 官网 http://www.keepalived/index.html

田老 http://www.keepalived/sery-lvs-cluster.pdf

Linuxtone

http://docs.linuxtone/ebooks/LoadBalance/lvs/keepalived the

definitive guide–FinalBSD.pdf

虚拟路由器冗余协议 http://baike.baidu/view/876125.htm

组播 http://baike.baidu/view/492256.htm

本文标签: 版本KeepalivedmysqlLinux