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 主备配置文件
主备置文件不同处有 statenopreempt 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
[*] #mysqlis 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
六 测试及工具
故障前
本帖隐藏的内容
http://www.9ai9.net/wp-content/uploads/2011/02/keepalived_OK1.jpg
故障切换
本帖隐藏的内容
http://www.9ai9.net/wp-content/uploads/2011/02/keepalived_failover1.jpg
可以用同网段的另一台服务器 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/LoadBalance/lvs/keepalived%20the%20definitive%20guide--FinalBSD.pdf
虚拟路由器冗余协议 http://baike.baidu.com/view/876125.htm
组播 http://baike.baidu.com/view/492256.htm
文章出自:http://bbs.linuxtone.org/thread-8935-1-1.html
页:
[1]