您好,登录后才能下订单哦!
# LINUX中Keepalive+LVS主从DR负载均衡实现详解
## 一、前言
在现代互联网架构中,高可用性和负载均衡是保证服务稳定性的关键技术。Linux Virtual Server(LVS)配合Keepalived实现的主从DR(Direct Routing)模式,是构建高性能、高可用服务集群的经典方案。本文将深入探讨该技术的实现原理和详细配置步骤。
## 二、核心组件介绍
### 2.1 LVS基础架构
LVS是由章文嵩博士开发的Linux内核级负载均衡解决方案,包含三个核心组件:
1. **负载调度器(Load Balancer)**:运行ipvs内核模块的前端服务器
2. **真实服务器(Real Server)**:实际提供服务的后端节点
3. **共享存储**:为集群提供一致的数据服务
### 2.2 DR模式工作原理
DR(直接路由)模式的特点:
- 请求流量通过调度器转发
- 响应数据直接从Real Server返回客户端
- 需要配置VIP(Virtual IP)的ARP抑制
数据流向示意图:
```mermaid
sequenceDiagram
Client->>Director: 请求包(VIP)
Director->>RealServer: 转发请求(目标MAC修改)
RealServer-->>Client: 直接响应(VIP)
Keepalived主要提供两大功能: 1. 健康检查:实时监控Real Server状态 2. VRRP协议实现:主备节点自动切换
角色 | IP配置 | 主机名 |
---|---|---|
主调度器 | DIP:192.168.1.10 | lvs-master |
从调度器 | DIP:192.168.1.11 | lvs-backup |
Real Server 1 | RIP:192.168.1.20 | web-node1 |
Real Server 2 | RIP:192.168.1.21 | web-node2 |
VIP | 192.168.1.100 | - |
systemctl stop firewalld
setenforce 0
安装必要软件包
yum install -y keepalived ipvsadm
内核参数调整
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
Keepalived主配置文件(/etc/keepalived/keepalived.conf) “`conf global_defs { router_id LVS_DEVEL }
vrrp_instance VI_1 { state MASTER # 备机改为BACKUP interface eth0 virtual_router_id 51 priority 100 # 备机设置较低优先级 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100⁄24 dev eth0 } }
virtual_server 192.168.1.100 80 { delay_loop 6 lb_algo wrr # 加权轮询算法 lb_kind DR # DR模式 persistence_timeout 50 protocol TCP
real_server 192.168.1.20 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.21 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
### 4.2 Real Server配置
1. 配置VIP和ARP抑制
```bash
# 创建VIP配置脚本
cat > /etc/init.d/lvs-dr <<EOF
#!/bin/bash
VIP=192.168.1.100
case "\$1" in
start)
echo "Start LVS of DR Mode"
/sbin/ifconfig lo:0 \$VIP broadcast \$VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: \$0 {start|stop}"
exit 1
esac
EOF
chmod +x /etc/init.d/lvs-dr
service lvs-dr start
yum install -y nginx
echo "Welcome to $(hostname)" > /usr/share/nginx/html/index.html
systemctl start nginx
检查VIP绑定
# 在主调度器执行
ip addr show eth0
查看LVS规则
ipvsadm -Ln
测试负载均衡
for i in {1..10}; do curl 192.168.1.100; done
模拟主调度器故障
# 在主调度器执行
systemctl stop keepalived
观察VIP漂移
# 在备机查看VIP绑定
ip addr show eth0
real_server 192.168.1.20 80 {
weight 1
HTTP_GET {
url {
path /health
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 2
}
}
virtual_server 192.168.1.100 80 {
persistence_timeout 3600 # 会话保持1小时
persistence_granularity 255.255.255.0
}
VIP无法访问
主备切换异常
负载不均衡
# 查看实时连接
ipvsadm -lcn
# 检查VRRP状态
journalctl -u keepalived -f
# 网络连通性测试
tcpdump -i eth0 vrrp
通过本文的详细配置指南,我们实现了基于Keepalived+LVS的DR模式负载均衡集群。该方案具有以下优势:
实际生产环境中,建议结合监控系统(如Prometheus)对集群状态进行实时监控,并定期进行故障演练,确保系统可靠性。
”`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。