当前位置:

首页 > 软件教程 > 解析Keepalived在Linux系统中的健康检查机制

解析Keepalived在Linux系统中的健康检查机制

在进行负载均衡时,一般都会部署一个健康检查工具,确保后端realserver是正常的,可以提供服务的,避免出现后端realserver已经宕机或服务不可用时,负载均衡器扔将请求分发到realserver,影响整体业务访问。健康检查的方式有很多,可以自行部署脚本,当然当前用的比较多的就是keepalived服务了。keepalived的健康检查方式有三种,tcp_check、http_check、misc_check。keepalived配置简述keepalived主要有三个模块,分别是core、check

本文目录

    解读Linux 系统Keepalived健康检查机制

    在进行负载均衡时,一般都会部署一个健康检查工具,确保后端real server是正常的,可以提供服务的,避免出现后端real server 已经宕机或服务不可用时,负载均衡器扔将请求分发到real server,影响整体业务访问。健康检查的方式有很多,可以自行部署脚本,当然当前用的比较多的就是keepalived服务了。keepalived的健康检查方式有三种,tcp_check、http_check、misc_check。

    keepalived配置简述

    keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的
    keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域,分别是global_defs、static_ipaddress、static_routes、vrrp_script、vrrp_instance和virtual_server。

    yum install keepalived -y

    配置文件:

    ! Configuration File for keepalived
    
    
    
    # vi /etc/keepalived/keepalived.conf
    
    
    
    # 全局配置 主要是配置故障发生时的通知对象以及机器标识
    
    global_defs {
    
    
    
    notification_email {
    
    r_xl@xl.com# 设置报警邮件接收地址,需要开启 sendmail 服务
    
    }
    
    
    
    notification_email_from s_xl@xl.com# 设置邮件的发送地址
    
    smtp_server 192.168.2.241# 设置通知的 SMTP Server 地址
    
    smtp_connect_timeout 30# 设置通知的 SMTP Server 的超时时间
    
    
    
    router_id LVS_DEVEL_1# 路由ID,标识本节点的字符串,邮件通知时会用到
    
    
    
    }
    
    
    
    # 自定义VRRP实例健康检查脚本 keepalived只能做到对自身问题和网络故障的监控,Script可以增加其他的监控来判定是否需要切换主备
    
    vrrp_script chk_sshd {
    
    
    
    script "killall -0 sshd"# 示例为检查sshd服务是否运行中
    
    
    
    interval 2 # 检查间隔时间
    
    weight -4# 检查失败降低的权重
    
    
    
    }
    
    
    
    
    
    # VRRP实例 定义对外提供服务的VIP区域及其相关属性
    
    vrrp_instance VI_1 {
    
    
    
    state MASTER # 状态只有 MASTER 和 BACKUP 两种,并且要大写,MASTER 为工作状态,BACKUP 是备用状态
    
    interface eth0 # 节点固有IP(非VIP)的网卡,用来发VRRP包
    
    virtual_router_id 51 # 虚拟路由标识,同一个 vrrp_instance 的 MASTER 和 BACKUP 的 vitrual_router_id 需要一致
    
    priority 100 # 优先级,同一个 vrrp_instance 的 MASTER 优先级必须比 BACKUP 高
    
    advert_int 1 # MASTER 与 BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒
    
    
    
    authentication { # 设置认证
    
    auth_type PASS # 认证方式,支持 PASS 和 HA
    
    auth_pass 1111 # 证密码为明文,同一 vrrp 实例 MASTER 与 BACKUP 使用相同的密码才能正常通信
    
    }
    
    
    
    virtual_ipaddress {# 虚拟IP地址(VIP),可以有多个地址,每个地址占一行
    
    192.168.12.200
    
    }
    
    
    
    track_script { # 自定义健康检查脚本
    
    chk_sshd # 配置上面自定义的vrrp脚本调用名
    
    }
    
    }
    
    
    
    # 设置虚拟服务器
    
    virtual_server 192.168.12.200 6500 { # 指定虚拟IP地址和服务端口
    
    
    
    delay_loop 6 # 服务健康检查周期,6秒
    
    lb_algo rr # 负载均衡调度算法,一般用wrr、rr、wlc
    
    lb_kind DR # 负载均衡转发规则。一般包括DR,NAT,TUN 3种
    
    persistence_timeout 5# 会话保持时间。把用户请求请求间隔在未超过保持时间时,一直分发到某个服务节点
    
    protocol TCP # 转发协议 有TCP和UDP两种
    
    
    
    # 配置真实服务器
    
    real_server 192.168.2.222 6500 {#指定IP和端口
    
    
    
    weight 1 # 权重,数值越大,权重越高
    
    
    
    # 健康检查方式 常见有 TCP_CHECK, HTTP_GET, SSL_GET, MISC_CHECK(自定义脚本)
    
    TCP_CHECK { # 通过TcpCheck方式判断RealServer的健康状态
    
    connect_timeout 10# 连接超时时间
    
    nb_get_retry 3# 重连次数
    
    delay_before_retry 3# 重连时间间隔
    
    connect_port 6500 # 检测端口
    
    }
    
    
    
    }
    
    
    
    # 配置真实服务器
    
    real_server 192.168.2.222 6500 {#指定IP和端口
    
    
    
    weight 1# 权重,数值越大,权重越高
    
    
    
    # 健康检查方式 常见有 TCP_CHECK, HTTP_GET, SSL_GET, MISC_CHECK(自定义脚本)
    
    TCP_CHECK { # 通过TcpCheck判断RealServer的健康状态
    
    connect_timeout 10# 连接超时时间
    
    nb_get_retry 3# 重连次数
    
    delay_before_retry 3# 重连时间间隔
    
    connect_port 6500 # 检测端口
    
    } 
    
    } 
    
    }

    健康检查类型

    TCP_CHECK
    TCP_CHECK { # 通过TcpCheck判断RealServer的健康状态
    
    connect_timeout 10# 连接超时时间
    nb_get_retry 3# 重连次数
    delay_before_retry 3# 重连时间间隔
    connect_port 6500 # 检测端口
    }

    2.HTTP_GET

    HTTP_GET {
    
    url {
    
    path check/200.jsp# 检查的uri地址
    
    digest 1362a91278f0806aa1d33e1e26d67763 # 用keepalived自带的genhash生成,/usr/bin/genhash -s rsIP -p port -u uri
    
    }
    
    connect_timeout 3 # 链接超时时间
    
    nb_get_retry 3 # 重连次数
    
    delay_before_retry 3# 重连时间间隔
    
    connect_port 6500# 检测端口
    
    }

    3.MISC_CHECK

    keepalived.conf配置:

    MISC_CHECK {
    
    misc_path "/etc/keepalived/misc_check.sh http://192.168.2.222:6500/check/200.jsp"# 外部程序或者脚本的路径和参数
    
    misc_timeout 10 # 脚本执行的超时时间
    
    misc_dynamic#动态权重标志。脚本返回0则检测成功权重不变,返回1表示失败权重设置为0
    
    }

    脚本示例:

    #!/bin/bash
    
    # ./misc_check.sh http://192.168.2.222:6500/check/200.jsp
    
    
    
    if [ $# -ne 1 ]; then
    
    echo "Warning: command param error."
    
    exit 1
    
    else
    
    CHECK_URL=$1
    
    CMD=`/usr/bin/curl -I ${CHECK_URL} 2>/dev/null | grep "200 OK" | wc -l`
    
    
    
    if [ ${CMD} -eq 1 ]; then
    
    echo "Succ: Check proxy ${CHECK_URL} is succeed."
    
    exit 0
    
    
    
    else
    
    echo "Fail: check proxy ${CHECK_URL} is failed."
    
    exit 1
    
    fi
    
    fi
    
    
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    软件教程
    相关文章 更多
    python第三方库安装与验证:环境隔离、依赖管理与排错决策
    python第三方库安装与验证:环境隔离、依赖管理与排错决策

    详解 python第三方库 的安装、环境隔离与验证流程。提供基于官方文档的 pip 命令示例、虚拟环境配置方法及依赖冲突排查策略,适用于后端开发场景。

    查询python版本:命令实操、环境隔离与排错决策
    查询python版本:命令实操、环境隔离与排错决策

    详解如何正确查询python版本,包括命令行基础操作、虚拟环境激活、pip依赖检查及路径验证。提供避坑指南与决策流程图,帮助开发者解决多版本冲突与环境配置问题。

    python查看版本:命令实操、环境隔离与排错决策
    python查看版本:命令实操、环境隔离与排错决策

    解决python查看版本时的环境指向不明问题。本文提供标准命令验证步骤,讲解venv虚拟环境创建与激活,以及使用pip进行依赖一致性检查,帮助开发者准确锁定Python解释器版本。

    python库如何正确安装与验证:从环境隔离到依赖检查的实操步骤
    python库如何正确安装与验证:从环境隔离到依赖检查的实操步骤

    面向后端开发者的 python库 实操指南。涵盖环境准备、venv隔离、pip安装命令及依赖验证流程,提供清晰的排错决策图与官方文档引用,确保操作可复现且符合最佳实践。

    Golang服务监控与健康检查指南
    Golang服务监控与健康检查指南

    通过实现健康检查接口、集成Prometheus监控、使用中间件收集数据及与Kubernetes探针联动,可构建完整的Golang微服务监控体系,保障系统稳定性。

    ASP.NET Core 健康檢查中間件的作用是什麼?
    ASP.NET Core 健康檢查中間件的作用是什麼?

    健康检查中间件用于监控ASP.NETCore应用状态,检测数据库、缓存等依赖服务是否可用,支持活动性、就绪性和启动探针,通过/health等端点暴露状态,供Kubernetes、负载均衡器和监控系统使用,实现故障发现、告警触发与自动化调度,提升系统稳定性与可观测性。

    Go项目K8s健康检查频繁失败解决方法
    Go项目K8s健康检查频繁失败解决方法

    Go项目在Kubernetes中健康检查频繁失败,需从配置、应用逻辑及依赖服务等多方面排查。1.确认健康检查配置合理,initialDelaySeconds应足够长,periodSeconds不宜过短,timeoutSeconds应大于响应时间。2.健康检查应真正验证关键依赖如数据库连接,不应仅返回HTTP200OK。3.查看应用日志,关注启动错误和运行异常。4.检查Pod资源限制,避免因CPU或内存不足导致失败。5.排查网络问题,确保Pod能访问依赖服务。6.Goroutine泄漏可能导致资源耗尽,使用

    HAProxy健康检查的最佳实践
    HAProxy健康检查的最佳实践

    要确保HAProxy作为负载平衡器的完整性,有效的服务器健康检查是必不可少的。实施运行状况检查可以提高应用程序的稳定性和可用性。HAProxy支持实现健康检查,它能检查后端服务器的状态,以确保它们是否健康适合用于负载平衡。仅当服务器通过运行状况检查后才会被纳入循环。这种方法确保未通过检查的服务器不会被选中,以降低系统停机的风险。本文将深入探讨HAProxy中运行状况检查的工作原理,以及实施有效健康检查所需的步骤。让我们开始吧!什么是HAProxy中的健康检查在配置HAProxy时,一个重要的任务是确定应用

    禁用Windows 11/10上的Palm Check功能
    禁用Windows 11/10上的Palm Check功能

    本文将指导您在Windows11/10PC上关闭PalmCheck功能。PalmCheck是一项设计用来防止在键盘输入时意外手掌或其他部位的触摸被误识别为输入的功能。通常可以在触摸板设置中找到,特别是在笔记本电脑等设备上具有触摸功能的设备。有时候,您可能需要关闭PalmCheck或类似的功能,以便在需要同时使用键盘和触摸板的情况下更加灵活地控制输入。在本文中,我们将介绍如何在Windows11/10PC上禁用PalmCheck功能,让您能够更好地应对游戏或运行应用程序时的需求。什么是触摸板上的PalmCh

    解决kernel_security_check_failure蓝屏的17种方法
    解决kernel_security_check_failure蓝屏的17种方法

    Kernelsecuritycheckfailure(内核检查失败)就是一个比较常见的停止代码类型,可蓝屏错误出现不管是什么原因都让很多的有用户们十分的苦恼,下面就让本站来为用户们来仔细的介绍一下17种解决方法吧。kernel_security_check_failure蓝屏的17种解决方法方法1:移除全部外部设备当您使用的任何外部设备与您的Windows版本不兼容时,则可能会发生Kernelsecuritycheckfailure蓝屏错误。为此,您需要在尝试重新启动计算机之前拔下全部外部设备。步骤1、完

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。