文章目录
- Keepalived的安装和配置详解
- 1. 简介
- 2. 安装
- 3. 配置⽂件
- 3.1 全局配置
- 3.2 VRRPD 配置
- 3.3 LVS 配置
- 3.4 健康检测
- 3.4.1 TCP_CHECK检测方式
- 3.4.2 HTTP_GET 和 SSL_GET 检测方式
- 3.4.3 MISC_CHECK检测方式
- 3.5 总结
- 4. 简单案例参考
Keepalived的安装和配置详解
1. 简介
Keepalived是Linux下一个轻量级的高可用解决方案
2. 安装
官网地址:https://www.keepalived.org/
yum install -y gcc gcc-c++ wget popt-devel openssl openssl-devel
yum install -y libnl libnl-devel libnl3 libnl3-devel
yum install -y libnfnetlink-devel
./configure --sysconf=/etc
make
make install
3. 配置⽂件
配置文件主要分为三大部分
- 全局配置(Global Configuration)
- VRRPD配置
- LVS配置
3.1 全局配置
! Configuration File for keepalived
global_defs {
notification_email {
dba.gao@gmail.com
ixdba@163.com
}
notification_email_from Keepalived@localhost
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
全局配置以 global_defs
作为标识,在 global_defs
区域内的都是全局配置选项,其中:
参数 | 说明 |
notification_email | 用于设置报警邮件地址,可以设置多个,每行一个。注意,如果要开启邮件报警,需要开启本机的 |
notification_email_from | 用于设置邮件的发送地址。 |
smtp_server | 用于设置邮件的 |
smtp_connect_timeout | 用于设置连接 |
router_id | 表示运行 |
3.2 VRRPD 配置
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 151
priority 100
advert_int 1
track_interface {
eth0
eth1
}
authentication {
auth_type PASS
auth_pass qwaszx
}
virtual_ipaddress {
192.168.200.16
192.168.200.17 dev eth1
192.168.200.18 dev eth2
}
nopreempt
preemtp_delay 300
notify_master "/etc/keepalived/master.sh "
notify_backup "/etc/keepalived/backup.sh"
notify_fault "/etc/keepalived/fault.sh"
}
参数 | 说明 |
vrrp_instance | 是 |
state | 用于指定 |
interface | 用于指定 |
virtual_router_id | 是虚拟路由标识,这个标识是一个数字,同一个 |
priority | 用于定义节点优先级,数字越大表示节点的优先级就越高。在一个 |
advert_int | 用于设定 |
track_interface | 用于设置一些额外的网络监控接口,其中任何一个网络接口出现故障, |
authentication | 用于设定节点间通信验证类型和密码,验证类型主要有 |
virtual_ipaddress | 用于设置虚拟 |
nopreempt | 设置的是高可用集群中的不抢占功能。在一个 |
preemtp_delay | 用于设置切换的延时时间,单位是秒。有时候系统启动或重启之后网络需要经过一段时间才能正常工作,在这种情况下进行发生主备切换是没必要的,此选项就是用来设置这种情况发生的时间间隔。在此时间内发生的故障将不会进行切换,而如果超过 |
notify_master | 指定当 |
notify_backup | 指定当 |
notify_fault | 指定当 |
notify_stop | 指定当 |
3.3 LVS 配置
virtual_server 192.168.12.200 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
persistence_granularity <NETMASK>
protocol TCP
sorry_server <IPADDR> <PORT>
}
参数 | 说明 |
virtual_server | 设置虚拟服务器的开始,后面跟虚拟 IP 地址和服务端口,IP 与端口之间用空格隔开。 |
delay_loop | 设置健康检查的时间间隔,单位是秒。 |
lb_algo | 设置负载调度算法,可用的调度算法有 |
lb_kind | 设置 |
persistence_timeout | 会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的 |
persistence_granularity | 此选项是配合 |
protocol | 指定转发协议类型,有 |
ha_suspend | 节点状态从 |
sorry_server | 相当于一个备用节点,在所有 |
real_server 192.168.12.132 80 {
weight 3
inhibit_on_failure
notify_up <STRING> | <QUOTED-STRING>
notify_down <STRING> | <QUOTED-STRING>
}
参数 | 说明 |
real_server | 是 |
weight | 用来配置 |
inhibit_on_failure | 表示在检测到 |
notify_up | 此选项与上面介绍过的 |
notify_down | 表示在检测到 |
3.4 健康检测
健康检测段允许多种检查方式,常见的有 HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK
。
3.4.1 TCP_CHECK检测方式
示例:
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
参数 | 说明 |
connect_port | 健康检查的端口,如果无指定,默认是 |
connect_timeout | 表示无响应超时时间,单位是秒,这里是3秒超时。 |
nb_get_retry | 表示重试次数,这里是3次。 |
delay_before_retry | 表示重试间隔,这里是间隔3秒。 |
3.4.2 HTTP_GET 和 SSL_GET 检测方式
示例:
HTTP_GET |SSL_GET {
url {
path /index.html
digest e6c271eb5f017f280cf97ec2f51b02d3
status_code 200
}
connect_port 80
bindto 192.168.12.80
connect_timeout 3
nb_get_retry 3
delay_before_retry 2
}
参数 | 说明 |
url | 用来指定 |
path | 后跟详细的 |
digest |
|
status_code | 指定HTTP检查返回正常状态码的类型,一般是200。 |
bindto | 表示通过此地址来发送请求对服务器进行健康检查。 |
3.4.3 MISC_CHECK检测方式
示例:
MISC_CHECK
{
misc_path /usr/local/bin/script.sh
misc_timeout 5
! misc_dynamic
}
MISC
健康检查方式可以通过执行一个外部程序来判断 real server
节点的服务状态,使用非常灵活。以下是常用的几个选项的含义。
参数 | 说明 |
misc_path | 用来指定一个外部程序或者一个脚本路径。 |
misc_timeout | 设定执行脚本的超时时间。 |
misc_dynamic | 表示是否启用动态调整 |
3.5 总结
在默认情况下,Keepalived
在启动时会查找 /etc/Keepalived/Keepalived.conf
配置文件,如果配置文件放在其他路径下,通过 Keepalived -f
参数指定配置文件的路径即可。在配置 Keepalived.conf
时,需要特别注意配置文件的语法格式,因为 Keepalived
在启动时并不检测配置文件的正确性,即使没有配置文件,Keepalived
也照样能够启动,所以一定要保证配置文件正确。