在K8S中,Keepalived是如何检测工作节点是否存活的?

在Keeplived中检测工作节点是否存活主要是通过两种方式实现:

VRRP(Virtual Router Redundancy Protocol)心跳检测:

Keepalived的核心功能之一是实现VRRP协议,多个节点之间形成一个虚拟路由器组,其中一个节点作为主节点(MASTER),其余节点为备份节点(BACKUP)。主节点会定期发送CRRP通过(heartbeat)给所有组内的节点,以证明自己仍在正常工作。备份节点监听这些心跳信息。如果在预定的时间内,备份节点没有接收到主节点的心跳,则认为主节点已经失效。并按照VRRP优先级规则选举新的主节点。这种机制可以确保在主节点发生故障时,服务能够快速切换到备份节点,从而维持服务的高可用性。


自定义健康检查脚本:

Keepalived支持用户自定义健康检查脚本(vrrp_script),通过执行这些脚本来检测特定服务或资源的状态。例如,你可以编写一个脚本来ping某个IP地址、检查TCP端口是否打开,或者执行HTTP/HTTPS请求来测试web服务的响应状态。一旦健康检查脚本返回非成功状态(如非零退出码),Keepalived可以根据配置减小该节点在VRRP组中的优先级,使得VIP转交给其他健康的节点。

bash 复制代码
vrrp_script chk_http_port {
    script "/usr/local/bin/check_http.sh" # 自定义脚本路径
    interval 2                            # 检查间隔(单位:秒)
    weight 2                              # 成功时增加的权重值
    fall 3                                # 连续几次失败认为节点失效
    rise 2                                # 连续几次成功认为节点恢复
}
vrrp_instance VI_1 {
    ...
    track_script {
        chk_http_port
    }
    ...
}

综上所述:

在这个配置中,chk_http_port就是一个自定义的健康检查脚本,它会被定期执行来检测服务状态,影响当前节点在VRRP实例中的优先级。当工作节点上的服务不可达时,Keepalived会据此做出相应的动作,比如改变优先级,从而触发VIP的转移。

相关推荐
生活爱好者!2 小时前
哇!影视新玩法!docker部署NEOWATCH NAS
运维·docker·容器
cpolar技术支持6 小时前
Docker 容器启动失败怎么查?端口、日志、权限与网络排障完整教程
linux·docker·容器·cpolar·网络排障
Lsetea7 小时前
Kubernetes 1.37 Pod证书怎么签发:Signer与mTLS信任链排查
云原生·kubernetes·ssl证书·tls·mtls
新时代牛马8 小时前
docker run 起不来?从dockerd、containerd 到runc 一条线讲透
运维·docker·容器
努力努力再努力wz10 小时前
【Docker 入门系列】:从 Namespace、CGroup 到 LXC:理解容器运行时、rootfs 与 LXC 实战
运维·docker·容器
JavaPub-rodert11 小时前
Docker 多阶段构建:为什么生产环境镜像可以小 90%
运维·docker·容器
2601_9622184711 小时前
万象生鲜系统多账套隔离技术适配集团生鲜企业集团化数字化管控
大数据·运维·微服务·云原生·架构
@PHARAOH12 小时前
WHAT - 微服务统一入口配置原理
微服务·云原生·架构
PC2005-cloud13 小时前
Qdrant 连接失败排查:localhost 解析到 __1,而 Docker 只绑了 IPv4
运维·docker·容器
2601_9622184715 小时前
万象生鲜系统智能报表引擎技术为生鲜企业提供数字化经营分析能力
大数据·运维·微服务·云原生·架构