mysql keepalive 脑裂_keepalived 预防脑裂检测脚本

本文介绍了一种针对Keepalived环境下脑裂现象的检测方法。通过部署脚本在备节点上持续监控VIP漂移情况,一旦发现VIP出现在备节点,则触发警告。此外,还提供了一个定时ping网关的脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 检查vip

[root@mysql2 keepalived]# cat /etc/keepalived/check_brain_keepalived.sh

#!/bin/bash

# 检查脑裂的脚本,在备节点上进行部署

LB01_VIP=*

LB01_IP=*

LB02_IP=*

while true

do

ping -c 2 -W 3 $LB01_VIP &>/dev/null

if [ $? -eq 0 -a `ip add|grep "$LB01_VIP"|wc -l` -eq 1 ];then

echo "ha is brain."

else

echo "ha is ok"

fi

sleep 5

done

运行脚本,在备节点(keepalived的备),不是mysql的备节点

[root@mysql2 keepalived]# ./check_brain_keepalived.sh

ha is ok

ha is ok

由于在M-M+Keepalived环境中,脑裂是一个始终存在的问题,因为vip的存在,这里提供一个脚本进行检查,检查vip漂移到备节点

发现backup有vip就发警告,此脚本部署在backup机器上

2 定时ping网关的方法

[root@mysql1 keepalived]# /sbin/arping -I ens192 -c 5 -s * *

#!/bin/bash

host=127.0.0.1

CHECK_TIME=3

VIP=*

GATEWAY=*

eth=ens192

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

keepalived_IS_OK=1

function check_keepalived_status (){

/sbin/arping -I $eth -c 5 -s $VIP $GATEWAY >/dev/null 2>&1

if [ $? = 0 ] ;then

keepalived_IS_OK=1

else

keepalived_IS_OK=0

fi

return $keepalived_IS_OK

}

while [ $CHECK_TIME -ne 0 ]

do

let "CHECK_TIME -= 1"

check_keepalived_status

if [ $keepalived_IS_OK = 1 ] ; then

CHECK_TIME=0

#/bin/systemctl stop keepalived

echo 1

exit 0

fi

if [ $keepalived_IS_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]

then

/bin/systemctl stop keepalived

echo 0

exit 1

fi

sleep 3

done

keepalived的脑裂问题

keepalived的脑裂问题 学习了:http://blog.51cto.com/10630401/2089847 split-brain 无HA不脑裂

keepalived 检测脑裂切换脚本

#!/bin/bash count=0 run1=`curl -I 192.168.30.12:8000 | grep "200 OK" | wc -l` run2=`curl - ...

split-brain 脑裂问题(Keepalived)

脑裂(split-brain)指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏.对于无状 ...

解决keepalived脑裂问题

检测思路:正常情况下keepalived的VIP地址是在主节点上的,如果在从节点发现了VIP,就设置报警信息 脚本如下: #!/bin/bash # 检查脑裂的脚本,在备节点上进行部署 LB01_VI ...

Keepalived脑裂

问题描述:开启防火墙后,Keepalived出现脑裂. 背景架构:两台centos7通过Keepalived实现高可用 问题具体表现形式:两台主机通过ip addr (ip  a)查看,发现两台主机都 ...

keepalived脑裂问题查找

在自己环境做keepalived+redis实验时,当重启了备用redies机器后,发现两台redies主机都拿到了VIP [root@redis2 ~]# ip addr list 1: lo: & ...

记一次keepalived脑裂问题查找

在自己环境做keepalived+Redis实验时,当重启了备用redies机器后,发现两台redies主机都拿到了VIP [root@redis2 ~]# ip addr list 1: lo: & ...

keepalive脑裂的处理,从节点发现访问的虚拟IP就报警,同时尝试发送内容到主节点服务器关闭keepalive和nginx,或者关机

解决keepalived脑裂问题   检测思路:正常情况下keepalived的VIP地址是在主节点上的,如果在从节点发现了VIP,就设置报警信息 脚本如下: 1 2 3 4 5 6 7 8 9 10 ...

keepalive和脑裂问题

keepalive keepalive起初专门为lvs负载均衡软件设计的,用来管理监控lvs集群系统中各个服务节点的状态,后来又加入了可以实现高可用的vrrp功能. keepalive软件通过vrrp ...

随机推荐

loadrunner 的Administration Page页面设置

工作中用到Loadrunner不是很多,能够简单用用,深入的知识还得靠自己空余时自学.对于loadrunner 的Administration Page页面设置,我的理解是给自己设置各种障碍,然后一个 ...

洛谷P1738 洛谷的文件夹

原题目:点我 题目是一个略水的题,我机制地用面向对象做了...所以代码量急剧加大,100行233 模拟即可,字符串处理麻烦点.如果没有找到子文件夹就新建文件夹,如果有就进入该文件夹. 提示:高能,指针 ...

[JS] 面向对象的5种写法和拓展JS对象的写法

面向对象的JAVA  最开始当然是对象的定义了 收集了以下的五种写法 //第1种写法 function Circle(r) { this.r = r; } Circle.PI = 3.14159; C ...

使用NIO提升性能

NIO是New I/O的简称,与旧式的基于流的I/O方法相对,从名字看,它表示新的一套Java I/O标准. 具有以下特性: 传统Java IO,它是阻塞的,低效的.那么Java NIO和传统Java ...

nginx的优缺点

1.nginx相对于apache优点: 轻量级同样起web 服务比apache占用更少内存及资源 抗并发nginx 处理请求异步非阻塞而apache 则阻塞型高并发下nginx 能保持低资源低消耗高性 ...

javascript高级特性(面向对象)

javascript高级特性(面向对象): * 面向对象: * 面向对象和面向过程的区别: * 面向对象:人就是对象,年龄\性别就是属性,出生\上学\结婚就是方法. * 面向过程:人出生.上学.工作. ...

关于android:screenOrientation="portrait" 横竖屏切换

当在AndroidManifest.xml文件中定义了android:screenOrientation="portrait",就表示当我们切换横竖屏的时候,屏幕的内容始终以竖屏显 ...

C#获取设备的IP和Mac类

/// /// 此类用于获得设备的Ip和Mac /// public class Mac { [DllImport("Iph ...

SZU:A25 Favorite Number

Judge Info Memory Limit: 32768KB Case Time Limit: 10000MS Time Limit: 10000MS Judger: Number Only Ju ...

php定时执行操作及ob_flush()与flush()的使用

版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.youkuaiyun.com/qq_38125058 一: 每隔30s执行一次,将字符串写入文件 // 30秒执行一次 ignore_ ...

### Keepalived Master抢占和脑裂问题的排查与解决方案 #### 1. 脑裂问题概述 在高可用系统中,当两台运行Keepalived的服务节点之间的“心跳线”中断时,可能会引发脑裂问题。这种情况下,两个节点都认为自己是主节点并尝试接管虚拟IP(VIP),从而导致资源竞争和服务异常[^3]。 #### 2. 脑裂的原因分析 以下是可能导致脑裂的主要原因: - **网络分区**:由于网络故障或其他因素,Backup节点无法接收到Master节点发送的心跳包,误认为Master已失效而主动升级为主节点。 - **配置错误**:如果`nopreempt`选项未正确设置,则即使原Master恢复在线状态,它也可能重新夺取角色主导权,造成短暂混乱。 - **监控脚本失败**:用于检测服务健康状况的自定义脚本可能返回不准确的结果,误导Keepalived做出不当决策[^4]。 #### 3. 排查方法 为了有效定位问题根源,可以采取以下措施逐一验证: - **检查日志记录** 查看Keepalived的日志文件(通常位于/var/log/messages或通过syslog管理),寻找有关状态转换的关键信息。例如,“Entering MASTER/BACKUP STATE”这样的消息可以帮助确认何时何地发生了切换操作[^2]。 - **测试连通性** 使用ping命令或者其他工具检验两台设备间是否存在持续稳定的通信路径。特别注意VRRP协议所依赖的具体端口是否开放无障碍通行[^1]。 - **审查配置一致性** 对比双方的配置文件内容,确保诸如virtual_router_id、priority等核心字段完全匹配无误。任何细微差异都有可能诱发不必要的行为变化[^4]。 ```bash diff /etc/keepalived/keepalived.conf.master /etc/keepalived/keepalived.conf.backup ``` #### 4. 解决策略 基于上述发现可实施如下改进举措来预防未来再次出现类似情况: - **启用Preemption机制谨慎处理** 如果确实希望维持单一活动实例模式,在配置中保留preempt功能的同时适当降低备用方优先级数值差值,使得正常情形下不会轻易触发互换动作[^2]。 - **增强健壮性的监测逻辑** 编写更加可靠的外部探测程序作为track_script组成部分之一,只有当目标应用程序真正不可达时才通知Keepalived调整自身角色[^4]。 ```python #!/bin/bash # checkhaproxy.sh example implementation if ! pgrep haproxy >/dev/null; then exit 1 fi exit 0 ``` - **引入仲裁第三方组件** 借助额外的一套独立于两端之外的见证者服务器参与判定过程,仅在其认可的前提下允许执行降级升迁指令,以此杜绝单纯依靠本地判断带来的风险。 --- 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值