Keepalived是一个用于实现高可用性和负载均衡的软件,常用于配置主备服务器或虚拟 IP 地址的故障切换
常规配置
global_defs
global_defs包含全局定义的配置项
router_id
:定义 Keepalived 实例的唯一标识符
notification_email
:定义在故障切换或状态变化时接收通知的电子邮件地址
notification_email_from
:定义发送通知的电子邮件地址
smtp_server
:指定用于发送电子邮件通知的 SMTP 服务器的地址
smtp_connect_timeout
:定义连接到 SMTP 服务器的超时时间
router_id
和 notification_email
是全局定义的必需配置项,而其他配置项是可选的,根据需要进行配置
vrrp_instance
vrrp_instance定义一个 VRRP(Virtual Router Redundancy Protocol)实例,用于配置主备服务器或虚拟 IP 地址的故障切换
state
:指定服务器的状态,可以是 MASTER
、BACKUP
或 FAULT
interface
:指定用于 VRRP 实例的网络接口
virtual_router_id
:定义 VRRP 路由器的唯一标识符
priority
:指定服务器的优先级,用于选举 MASTER 服务器
advert_int
:定义 VRRP 广告间隔,即发送 VRRP 通告的时间间隔
authentication
:指定 VRRP 通信的认证密码
virtual_ipaddress
:定义虚拟 IP 地址,当服务器处于 MASTER 状态时,该地址将被分配给服务器
virtual_server
virtual_server用于配置负载均衡的虚拟服务器
delay_loop
:定义检查服务器健康状态的时间间隔
lb_algo
:定义负载均衡算法,例如 rr
(轮询)或 wrr
(加权轮询)
lb_kind
:定义负载均衡类型,例如 NAT
(网络地址转换)或 DR
(直接路由)
real_server
:定义真实服务器的 IP 地址和端口
配置示例
配置主服务器(MASTER)和备份服务器(BACKUP)的 Keepalived 实例,当主服务器无法正常工作时,备份服务器将接管虚拟 IP 地址并成为活动服务器
Master(主服务器)配置文件
! 全局定义
global_defs {
router_id keepalived_example
}
! VRRP 实例 - 主服务器
vrrp_instance VI_1 {
state MASTER
interface ens3
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass example_password
}
virtual_ipaddress {
10.191.18.211
}
}
Slave(备份服务器)配置文件
! 全局定义
global_defs {
router_id keepalived_example
}
! VRRP 实例 - 备份服务器
vrrp_instance VI_1 {
state BACKUP
interface ens3
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass example_password
}
virtual_ipaddress {
10.191.18.211
}
}
在主服务器的配置文件中,state
设置为 MASTER
,priority
设置为较高的值(例如100),表示它是主服务器,并具有更高的优先级
在备份服务器的配置文件中,state
设置为 BACKUP
,priority
设置为较低的值(例如90),表示它是备份服务器,并具有较低的优先级