目录
一、核心概念
1. LVS(Linux Virtual Server)
2. Keepalived
二、高可用架构设计
1. 架构拓扑图
2. 工作流程
三、部署步骤(以 DR 模式为例)
1. 环境准备
2. 主 LVS 节点配置
(1)安装 Keepalived
(2)配置 Keepalived 主节点(/etc/keepalived/keepalived.conf)
(3)配置 LVS 内核参数(DR 模式需关闭 ARP 响应)
3. 备 LVS 节点配置
4. 后端服务器配置(以 Nginx 为例)
(1)绑定 VIP(lo 接口,避免响应 ARP 请求)
(2)关闭 IP 转发
(3)启动 Nginx 服务
四、验证与维护
1. 状态检查
2. 故障切换测试
五、注意事项
六、扩展场景
命令解析
全局配置部分
VRRP 实例配置
LVS 虚拟服务器配置
后端服务器配置
配置总结
客户端 <---- VIP ----> [主LVS+Keepalived] <---- 内网 ----> 后端服务器集群
└---- VIP ----> [备LVS+Keepalived]
角色 | IP 地址 | 软件组件 |
---|---|---|
主 LVS 节点 | 192.168.1.100 | LVS+Keepalived |
备 LVS 节点 | 192.168.1.101 | LVS+Keepalived |
虚拟 IP(VIP) | 192.168.1.200 | - |
后端服务器 1 | 192.168.1.110 | Nginx+Keepalived(健康检查) |
后端服务器 2 | 192.168.1.111 | Nginx+Keepalived(健康检查) |
yum install keepalived -y
global_defs {
router_id LVS_MASTER # 节点标识,主备需不同
}
vrrp_instance VI_1 {
state MASTER # 主节点状态(备节点为BACKUP)
interface eth0 # 绑定VIP的网卡
virtual_router_id 51 # VRRP组ID(主备需一致)
priority 100 # 优先级(备节点设为90)
advert_int 1 # 心跳间隔(秒)
authentication {
auth_type PASS
auth_pass 1111 # 认证密码(主备需一致)
}
virtual_ipaddress {
192.168.1.200/24 # 虚拟IP
}
}
# LVS健康检查(监控后端服务器)
virtual_server 192.168.1.200 80 {
delay_loop 6 # 健康检查间隔(秒)
lb_algo rr # 调度算法(轮询)
lb_kind DR # 工作模式(DR)
protocol TCP # 协议类型
# 后端服务器配置
real_server 192.168.1.110 80 {
weight 1 # 服务器权重
TCP_CHECK { # TCP健康检查
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.1.111 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
echo "1" > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
state BACKUP # 状态改为BACKUP
priority 90 # 优先级低于主节点
router_id LVS_BACKUP # 节点标识不同
ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.200
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "0" > /proc/sys/net/ipv4/ip_forward
yum install nginx -y
systemctl start nginx
systemctl status keepalived
# 主节点应显示"Master",备节点显示"Backup"
ip addr show eth0 | grep 192.168.1.200 # 主节点应存在VIP
ipvsadm -L -n # 应显示后端服务器列表
systemctl stop keepalived
delay_loop
)和重试次数,避免误判。global_defs {
router_id LVS_MASTER # 节点标识,主备需不同
}
global_defs
:定义全局参数
router_id
:标识 Keepalived 实例的唯一名称,主备节点必须不同,用于区分不同的 Keepalived 节点
vrrp_instance VI_1 {
state MASTER # 主节点状态(备节点为BACKUP)
interface eth0 # 绑定VIP的网卡
virtual_router_id 51 # VRRP组ID(主备需一致)
priority 100 # 优先级(备节点设为90)
advert_int 1 # 心跳间隔(秒)
authentication {
auth_type PASS
auth_pass 1111 # 认证密码(主备需一致)
}
virtual_ipaddress {
192.168.1.200/24 # 虚拟IP
}
}
vrrp_instance VI_1
:定义 VRRP 实例,名称为 VI_1state MASTER
:当前节点的初始状态,主节点为 MASTER,备节点为 BACKUPinterface eth0
:绑定虚拟 IP 的物理网卡virtual_router_id 51
:VRRP 组 ID,取值范围 1-255,主备节点必须相同priority 100
:节点优先级,数值越大优先级越高,主节点应高于备节点advert_int 1
:发送 VRRP 通告的时间间隔(心跳间隔)authentication
:VRRP 认证配置,防止非法节点加入
auth_type PASS
:密码认证方式auth_pass 1111
:认证密码,主备必须一致virtual_ipaddress
:定义虚拟 IP 地址,可配置多个virtual_server 192.168.1.200 80 {
delay_loop 6 # 健康检查间隔(秒)
lb_algo rr # 调度算法(轮询)
lb_kind DR # 工作模式(DR)
protocol TCP # 协议类型
virtual_server
:定义虚拟服务器,即负载均衡的 VIP 和端口delay_loop 6
:健康检查的时间间隔(秒)lb_algo rr
:负载均衡调度算法
lb_kind DR
:LVS 工作模式
protocol TCP
:使用 TCP 协议进行负载均衡 real_server 192.168.1.110 80 {
weight 1 # 服务器权重
TCP_CHECK { # TCP健康检查
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server
:定义真实服务器(后端服务器)的 IP 和端口weight 1
:服务器权重,数值越大被分配的请求越多TCP_CHECK
:TCP 健康检查配置
connect_port 80
:检查的端口connect_timeout 3
:连接超时时间(秒)retry 3
:重试次数delay_before_retry 3
:重试前的延迟时间(秒)这个配置文件实现了一个基于 DR 模式的 LVS 负载均衡器的高可用方案:
配置注意事项: