一、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_interface | for the LVS sync_daemon to run on |
| virtual_router_id | 虚拟路由器ID,vrrp路由器id,用来标识此数据包报告状态的虚拟路由器。 |
| priority | 实例优先级,优先级高的会竞选为master |
| advert_int | vrrp广播包时间,默认为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_algo | lvs调度算法 |
| lb_kind | lvs转发规则 |
| 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