Chinaunix
标题:
Keepalived+mysql 自动切换
[打印本页]
作者:
三里屯摇滚
时间:
2012-01-09 21:44
标题:
Keepalived+mysql 自动切换
Keepalived+mysql 自动切换
Keepalived+mysql 自动切换
网络结构:
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.org/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.net
}
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.net
}
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.net
}
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.net
}
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.net
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.org/index.html
田老
http://www.keepalived.org/sery-lvs-cluster.pdf
Linuxtone
http://docs.linuxtone.org/ebooks ... guide--FinalBSD.pdf
虚拟路由器冗余协议
http://baike.baidu.com/view/876125.htm
组播
http://baike.baidu.com/view/492256.htm
作者:
在我心中舞动
时间:
2012-01-09 21:44
谢谢分享
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2