在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的转移。

相关推荐
KubeSphere 云原生18 分钟前
云原生周刊:在 Kubernetes 上运行机器学习
云原生·容器·kubernetes
码界奇点19 分钟前
通往Docker之路从单机到容器编排的架构演进全景
docker·容器·架构
阿Y加油吧27 分钟前
Docker从入门到实战——含容器部署、docker基础、项目部署
运维·docker·容器
不知道累,只知道类1 小时前
记一次诡异的“偶发 404”排查:CDN 回源到 OSS 导致 REST API 失败
java·云原生
victory04312 小时前
progen2 docker镜像打包命令文档
运维·docker·容器
AKAMAI3 小时前
Akamai推出Akamai Inference Cloud (AI推理云),重新定义人工智能的应用场景与实现方式
人工智能·云原生·云计算
算是难了4 小时前
Docker基础总结
运维·docker·容器
ityangs4 小时前
GitLab 私服(基于 Docker)搭建方案
git·docker·容器·gitlab
沐雨风栉6 小时前
告别设备限制!CodeServer+cpolar让VS Code随时随地在线编程
云原生·eureka·重构·pdf·开源
技术杠精6 小时前
Docker Swarm 的负载均衡和平滑切换原理
docker·容器·负载均衡·1024程序员节