欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

keepalived.conf 常用配置介绍(无LVS)

程序员文章站 2022-07-12 17:31:22
...

官方参考文档:https://keepalived.org/manpage.html
参考文档:https://www.cnblogs.com/rexcheny/p/10778567.html

全局配置模块

global_defs {
    #收件人列表
    notification_email {
        [email protected]
    }

    #发件人
    notification_email_from [email protected]

    #用于发送电子邮件的远程 SMTP 服务器。
    smtp_server 192.168.200.1

    #SMTP 服务器连接超时时间(单位为秒)。
    smtp_connect_timeout 30

    #路由标识符,一般不需要改。同组中所有节点的 router_id 需要相同。
    router_id LVS_DEVEL

    #检查接收到的 VRRP 广播中的所有地址,可能非常耗时。一般情况下删除。
    vrrp_skip_check_adv_addr

    #强制执行严格的 VRRP 协议合规性。一般情况下删除。
    vrrp_strict

    #在接口上发送的免费ARP消息之间的延迟(单位为秒),默认为 0。一般不用改。
    vrrp_garp_interval 0

    #在接口上发送的未经请求的NA消息之间的延迟(单位为秒),默认为 0。一般不用改。
    vrrp_gna_interval 0
}

脚本定义模块

vrrp_script nginx_status {
    #脚本路径.
    script /opt/script/nginx_status_check.sh

    #脚本执行频率(单位为秒)。
    interval 3

    #脚本超时时间(单位为秒)。超时即失败。
    timeout 10

    #通过此权重调整优先级。范围:(-253..253)。
    #+ 如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加;
    #+ 如果脚本执行结果非 0,并且 weight 配置的值小于 0,则优先级相应的减少;
    #+ 其他情况不变。
    weight -10

    #判定健康的次数。
    rise 3

    #判定失败的次数。
    fall 3

    #运行脚本的用户和组。
    user nginx nginx

    #假设脚本最初处于失败状态。
    init_fail
}
#PS:常用的配置就是脚本路径加权重。

VRRP 实例配置模块

vrrp_instance VI_1 {
    #初始状态(MASTER 或 BACKUP)。
    state MASTER

    #工作接口,通告选举使用哪个接口进行,即绑定 vip 的网卡。
    interface eth0

    #从 1 到 255 的任意唯一数字,用于区分在同一网络接口和地址族上的多个实例。
    #+ 同组的虚拟路由 ID 要相同。
    virtual_router_id 51

    #优先级
    priority 100

    #VRRP 广播间隔(单位为秒)。推荐使用默认值。
    advert_int 1

    #身份验证配置
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    #定义虚拟IP(VIP)
    virtual_ipaddress {
        #IP/掩码 dev 配置在哪个网卡
        192.168.200.16/24 dev eth1

        #IP/掩码 dev 配置在哪个网卡的哪个别名上
        192.168.200.17/24 dev label eth1:1                             
    }

    #定义执行的脚本
    track_script {
        #SCRIPT_NAME> 是 vrrp_script 定义的名称。
        <SCRIPT_NAME>
        <SCRIPT_NAME> weight <-253..253> [reverse|no_reverse]
    }

    #优先级较高的实例上线后通常会抢占优先级较低的实例。
    #+ 注意:为了使其正常工作,初始状态不得为 MASTER。

    #非抢占模式。
    nopreempt

    #抢占模式,默认值。
    preempt

    #抢占的时间间隔(单位为秒),即多长时间后再进行抢占。
    preempt_delay 300

    #状态切换为 master/backup/fault 时执行的脚本。
    notify_master /path/to_master.sh [username [groupname]]
    notify_backup /path/to_backup.sh [username [groupname]]
    notify_fault "/path/fault.sh VG_1" [username [groupname]]

    #关闭时执行的信号或脚本。
    notify_stop <STRING>|<QUOTED-STRING> [username [groupname]]
}

想要更加详细了解权重和优先级的关系,可以参考另外的文档:keepalived 中关于 weight 和 preempt_delay 的实验

相关标签: Keepalived