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:指定服务器的状态,可以是 MASTERBACKUP 或 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 设置为 MASTERpriority 设置为较高的值(例如100),表示它是主服务器,并具有更高的优先级

在备份服务器的配置文件中,state 设置为 BACKUPpriority 设置为较低的值(例如90),表示它是备份服务器,并具有较低的优先级