Keepalived
什么是 Keepalived
Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)实现的高可用解决方案,主要用于防止单点故障。
主要功能
高可用性(HA)
- 通过 VRRP 协议实现主备切换
- 提供虚拟 IP(VIP)漂移功能
- 支持健康检查
负载均衡
- 可以作为 LVS 的管理工具
- 自动管理 LVS 规则
工作原理
主服务器(MASTER) 备服务器(BACKUP)
| |
|<------- VRRP 心跳 ------->|
| |
VIP: 192.168.1.100 等待接管
配置示例
# /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER # 主节点
interface eth0 # 网络接口
virtual_router_id 51 # 虚拟路由器ID
priority 100 # 优先级
advert_int 1 # 心跳间隔
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.1.100 # 虚拟IP
}
}
LVS (Linux Virtual Server)
什么是 LVS
LVS 是 Linux 内核中的负载均衡解决方案,通过 IPVS(IP Virtual Server)模块实现四层负载均衡。
工作模式
DR 模式(Direct Routing)
客户端 --> Director --> Real Server | | |<-- 直接响应 --|
- 性能最好
- Director 和 Real Server 必须在同一网段
- 响应数据直接返回给客户端
NAT 模式(Network Address Translation)
客户端 <--> Director <--> Real Server
- 所有流量都经过 Director
- 支持端口映射
- Director 成为瓶颈
TUN 模式(IP Tunneling)
客户端 --> Director --隧道--> Real Server | | |<---- 直接响应 ------|
- 支持跨网段
- 需要 Real Server 支持隧道
调度算法
- 轮询(rr):依次分配
- 加权轮询(wrr):根据权重分配
- 最少连接(lc):选择连接数最少的服务器
- 加权最少连接(wlc):默认算法
- 源地址哈希(sh):相同 IP 分配到同一服务器
LVS 配置示例
# 添加虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s wlc
# 添加真实服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -g -w 1
# 查看配置
ipvsadm -Ln
Keepalived + LVS 集成
架构示例
VIP: 192.168.1.100
|
+------------------+------------------+
| |
Director1(主) Director2(备)
Keepalived Keepalived
LVS/IPVS LVS/IPVS
| |
+----------+----------+ |
| | | |
RealServer1 RealServer2 RealServer3 -----+
集成配置示例
# Keepalived 配置中包含 LVS 配置
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wlc # 调度算法
lb_kind DR # 工作模式
protocol TCP
real_server 192.168.1.10 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.1.11 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
应用场景
Keepalived 适用场景
- 数据库主从切换(MySQL、PostgreSQL)
- Web 服务高可用
- 任何需要 IP 漂移的场景
LVS 适用场景
- 大流量网站负载均衡
- 四层负载均衡需求
- 对性能要求极高的场景
优缺点对比
Keepalived:
- 优点:配置简单、支持健康检查、可管理 LVS
- 缺点:仅提供高可用,负载均衡依赖 LVS
LVS:
- 优点:性能极高、稳定可靠、内核级别
- 缺点:仅四层负载、配置相对复杂、功能单一
这两个工具经常配合使用,Keepalived 负责高可用和健康检查,LVS 负责实际的负载均衡,形成一个完整的高可用负载均衡解决方案。