keepalived mysql服务停止后,VIP ping不通

发布于 2021-11-26 06:34:35 字数 3035 浏览 809 评论 5

如题,使用keepalived + MySQL主主解决单点故障,但是当其中一台数据库服务器服务停止后,使用VIP就连接不上数据库,ping也不同;网关ARP缓存没有刷新;当我在另外一台未停止的数据库服务器执行
arping -I eth0 -c 3 -s 10.1.45.123 10.1.45.126 &>/dev/null

后,就可以通过客户端使用VIP连接数据库,也能ping通;在网上找了很多方法,老是不行,求大神解救。下面是我服务器的配置信息 

mysql1:10.1.45.120
mysql2:10.1.45.121
Vip:10.1.45.123
gateway:10.1.45.126

mysql1:keepalived.conf

#!Configuration File forkeepalived
global_defs {
        notification_email {
            test@test.com
        }
        notification_email_from test@test.com
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id MYSQL_HA
}

vrrp_sync_group VG1 {
    group {
        VI_1
    }
   notify_master /etc/keepalived/master.sh
}
vrrp_instance VI_1 {
        state master
        interface eth0
        virtual_router_id 110
        priority 100
        advert_int 1
        nopreempt
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.1.45.123
        }
}
virtual_server 10.1.45.123 3306 {
        delay_loop 2
	nat_mask 255.255.255.128
        persistence_timeout 50
        protocol TCP
        real_server 10.1.45.120 3306 {
                weight 3
                notify_down /usr/local/keepalived/mysql.sh
                TCP_CHECK {
                        connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
          	}
	}
}
mysql2 keepalived.conf
#!Configuration File forkeepalived
global_defs {
	notification_email {
		test@test.com
	}
	notification_email_from test@test.com
	smtp_server 127.0.0.1
	smtp_connect_timeout 30
	router_id MYSQL_HA
}

vrrp_sync_group VG1 {
    group {
          VI_1
    }
   notify_master /etc/keepalived/master.sh
}
vrrp_instance VI_1 {
	state backup
	interface eth0
	virtual_router_id 110
	priority 99
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		10.1.45.123
	}
}
virtual_server 10.1.45.123 3306 {
        delay_loop 2
        nat_mask 255.255.255.128
        persistence_timeout 50
        protocol TCP
        real_server 10.1.45.121 3306 {
                weight 3
                notify_down /usr/local/keepalived/mysql.sh
                TCP_CHECK {
                	connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
                 }
       }
}

mysql.sh

#!/bin/bash
pkill keepalived



master.sh
#!/bin/bash
VIP=10.1.45.123
GATEWAY=10.1.45.126
/sbin/arping -I eth0 -c 5 -s $VIP $GATEWAY &>/dev/null




如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

臻嫒无言 2021-11-30 09:10:08

执行了也木用啊,在主down后,arping需要在备上执行才能达到刷新网关ARP缓存的目的

夜司空 2021-11-30 08:35:46

检查keepalive的日志, 确认notify_master 是否有被执行和执行成功。若不成功,进行调试,查找原因~

小瓶盖 2021-11-30 08:24:54

似乎是由于网关的ARP缓存造成的问题。我现在的解决办法是在主服务器的mysql down后在备用服务器上执行arping命令。从而刷新网关的ARP缓存。

草莓味的萝莉 2021-11-30 04:16:16

@x木子 正常是你的MySQL服务停了,就直接结束掉keepalived就好了。网关apr缓存,可能吧,毕竟硬件的软配置都不太一样。

旧伤慢歌 2021-11-30 02:44:31

正常情况是开启一台就可以ping通VIP地址,你可以分别关闭其中一台ping下VIP,检查哪个配置不对

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文