Default

Keepalived配置方法

Keepalived 配置方法 #

一、VRRP Script 检测脚本配置 #

1. 基础配置 #

vrrp_script check_service {
    script       "/usr/local/bin/check_service.sh"  # 检测脚本路径(必填)
    interval      3                                  # 检测间隔,单位:秒
    timeout       2                                  # 脚本超时时间,单位:秒
    weight        -20                                # 权重变化值,负数表示失败时降低优先级
    fall          2                                  # 连续失败次数,达到此值转为DOWN状态
    rise          1                                  # 连续成功次数,达到此值转为UP状态
}

vrrp_instance VI_1 {
    state MASTER                    # 实例状态:MASTER(主)或 BACKUP(备)
    interface eth0                  # 绑定VIP的网卡接口名称
    virtual_router_id 51            # 虚拟路由ID,同一组Keepalived必须相同(0-255)
    priority 100                   # 优先级,MASTER应高于BACKUP(1-255)
    advert_int 1                    # VRRP广告间隔,单位:秒

    # 引用检测脚本
    track_script {
        check_service weight -20   # 执行检测脚本,weight表示权重变化值
    }

    # 虚拟IP(VIP)配置
    virtual_ipaddress {
        192.168.1.100              # VIP地址,可配置多个
    }
}

二、检测脚本示例 #

#!/bin/bash
# 检测服务状态的脚本
# 返回 0 表示成功,服务正常
# 返回 非0 表示失败,服务异常

SERVICE_NAME="nginx"

# 方法1:使用systemctl检查服务状态
if systemctl is-active --quiet "$SERVICE_NAME"; then
    exit 0
else
    exit 1
fi

# 方法2:检查端口是否监听(以80端口为例)
# nc -z 127.0.0.1 80 || exit 1

# 方法3:检查进程是否存在(以nginx为例)
# pgrep -x nginx > /dev/null || exit 1

# 方法4:HTTP健康检查(适用于Web服务)
# curl -sf http://127.0.0.1/health > /dev/null || exit 1

脚本权限设置:

...