keepalived配置文件详解

一、keepalived配置文件主要分为三个部分

全局配置
虚拟服务器配置
vrrp实例配置

二、配置详解

1. 全局配置

1.1 配置参数

global_defs {
    notification_email {
        email
        email
    }
    notification_email_from email
    smtp_server host
    smtp_connect_timeout num
    lvs_id string
}

1.2 参数说明

关键字    定义
notification_email     keepalived发生切换时,需要发送的邮件地址,一行一个
notification_email_from    发件人
smtp_server    stmp服务器地址
smtp_connect_timeout    smtp超时时间
lvs_id string    LVS名字
————–

2. VRRP实例

2.1 配置参数

vrrp_sync_group string {
    group {
        string
        string
    }
    notify_master /path_to_script/script_master.sh
        (or notify_master “ /path_to_script/script_master.sh <arg_list>”)
    notify_backup /path_to_script/script_backup.sh
        (or notify_backup “/path_to_script/script_backup.sh <arg_list>”)
    notify_fault /path_to_script/script_fault.sh
        (or notify_fault “ /path_to_script/script_fault.sh <arg_list>”)
}
vrrp_instance string {
    state MASTER|BACKUP
    interface string
    mcast_src_ip @IP
    lvs_sync_daemon_interface string
    virtual_router_id num
    priority num
    advert_int num
    smtp_alert
    authentication {
        auth_type PASS|AH
        auth_pass string
    }
    virtual_ipaddress { # Block limited to 20 IP addresses
        @IP
        @IP
        @IP
    }
    virtual_ipaddress_excluded { # Unlimited IP addresses
        @IP
        @IP
        @IP
    }
    notify_master /path_to_script/script_master.sh
        (or notify_master “ /path_to_script/script_master.sh <arg_list>”)
    notify_backup /path_to_script/script_backup.sh
        (or notify_backup “ /path_to_script/script_backup.sh <arg_list>”)
    notify_fault /path_to_script/script_fault.sh
        (or notify_fault “ /path_to_script/script_fault.sh <arg_list>”)
}

2.2 参数说明

notify_master /path_to_script/script_master.sh
notify_backup /path_to_script/script_backup.sh
notify_fault /path_to_script/script_fault.sh
同全局配置的一样

关键字    定义
标识VRRP同步实例组用来定义vrrp_intance组,实现vrrp_intance组内成功动作一致。
vrrp_sync_group两个vrrp_instance同属于一个vrrp_rsync_group,那么其中一个vrrp_instance发生故障切换时,
另一个vrrp_instance也会跟着切换(即使这个instance没有发生故障)。
group括号里面的为vrrp_intance实例名
notify_master切换到master时,执行的脚本
notify_backup切换到backup时,执行的脚本
notify_fault故障时执行的脚本
vrrp_instance用于标识一个VRRP实例定义块
state指定实例是master,还是backup。
interface指定实例使用的网卡
mcast_src_ip指定vrrp广播的发送地址,默认使用primary ip
lvs_sync_daemon_interface不明白这个参数做什么的,引用官方解释specify the network interface
lvs_sync_daemon_interfacefor the LVS sync_daemon to run on
virtual_router_id虚拟路由器ID,vrrp路由器id,用来标识此数据包报告状态的虚拟路由器。
priority实例优先级,优先级高的会竞选为master
advert_intvrrp广播包时间,默认为1秒
smtp_alert激活master状态转换的通知
authentication设置认证
auth_type认证方式
auth_pass认证密码
virtual_ipaddress虚拟路由器IP地址,一行一个
virtual_ipaddress_excluded发送vrrp协议包里不包含的IP地址,为了减少回应VRRP包的个数。
virtual_ipaddress_excluded在网卡上绑定的IP地址比较多的时候使用。
—————

3. 虚拟服务器配置

3.1 配置参数

virtual_server (@IP PORT)|(fwmark num) {
    delay_loop num
    lb_algo rr|wrr|lc|wlc|sh|dh|lblc
    lb_kind NAT|DR|TUN
    (nat_mask @IP)
    persistence_timeout num
    persistence_granularity @IP
    virtualhost string
    protocol TCP|UDP

    sorry_server @IP PORT
    real_server @IP PORT {
        weight num
        TCP_CHECK {
            connect_port num
            connect_timeout num
        }
    }
    real_server @IP PORT {
        weight num
        MISC_CHECK {
            misc_path /path_to_script/script.sh
            (or misc_path “ /path_to_script/script.sh <arg_list>”)
        }
    }
}
real_server @IP PORT {
    weight num
    HTTP_GET|SSL_GET {
        url { # You can add multiple url block
            path alphanum
            digest alphanum
        }
        connect_port num
        connect_timeout num
        retry num
        delay_before_retry num
    }
}

3.2 参数详解

关键字    定义
virtual_server虚拟服务器定义块
delay_loop健康检测间隔时间,单位为秒
lb_algolvs调度算法
lb_kindlvs转发规则
persistence_timeout永久链接的超时时间
persistence_granularity会话保持粒度,ipvsadm中的-M参数,默认是0xffffffff,即根据每个客户端做会话保持。
virtualhost暂不清楚功能,引用官方内容:specify a HTTP virtualhost to use for HTTP
protocol指定协议类型
sorry_server当所有real server宕掉时,sorry server顶替。
real_server真实服务器
weight权重,默认为1,0为失效
TCP_CHECK使用TCP连接检查实际服务器可用性
connect_port在指定的TCP端口上连接远程服务器
connect_timeout连接超时时间,单位为秒
MISC_CHECK使用用户定义的脚本检查真实的服务器可用性
misc_path脚本路径,需要已绝对路径运行
HTTP_GET使用HTTP GET请求检查真实的服务器可用性
SSL_GET使用SSL GET请求检查真实的服务器可用性
url标识一个url定义块
path指定url路径
digest指定特定url路径的摘要
retry最大重试次数
delay_before_retry两次检测间隔的时间

三、参考资料

1. 官方文档

http://www.keepalived.org/doc/configuration_synopsis.html

2. 参考博客

https://blog.csdn.net/jibcy/article/details/7826158

https://my.oschina.net/ydsakyclguozi/blog/515200

http://outofmemory.cn/wiki/keepalived-configuration

http://www.bubuko.com/infodetail-677344.html

Previous Post

keepalived安装

Next Post

keepalived命令详解

Related Posts