当前位置: 首页 > news >正文

Keepalived 多节点负载均衡配置

Keepalived 多节点负载均衡配置指南

架构说明

网络架构图

Internet|| (访问 192.168.1.100)|
┌─────────────────┐    ┌─────────────────┐
│  负载均衡器1     │    │  负载均衡器2     │
│  (Master)       │    │  (Backup)       │
│  192.168.1.1    │    │  192.168.1.2    │
│  VIP: 192.168.1.100 │  │  VIP: 192.168.1.100 │
└─────────────────┘    └─────────────────┘│                       │└───────────┬───────────┘│┌────────────────┼────────────────┐│                │                │
┌─────────┐    ┌─────────┐    ┌─────────┐
│真实服务器1│    │真实服务器2│    │真实服务器3│
│192.168.1.10│    │192.168.1.11│    │192.168.1.12│
│  (Web服务) │    │  (Web服务) │    │  (Web服务) │
└─────────┘    └─────────┘    └─────────┘

工作原理

  • VIP (192.168.1.100): 虚拟IP地址,在负载均衡器之间浮动
  • VRRP: 虚拟路由冗余协议,实现主备切换
  • LVS: Linux虚拟服务器,实现负载均衡
  • DR模式: 直接路由模式,真实服务器直接响应客户端

服务器角色分配

负载均衡器 (2台)

服务器IP地址角色优先级说明
服务器1192.168.1.1Master100主负载均衡器
服务器2192.168.1.2Backup90备负载均衡器
VIP192.168.1.100浮动IP-对外服务地址

真实服务器 (3台)

服务器IP地址服务权重说明
服务器3192.168.1.10Web服务1真实服务器1
服务器4192.168.1.11Web服务1真实服务器2
服务器5192.168.1.12Web服务1真实服务器3

安装配置方案

负载均衡器安装要求

  • 软件: Keepalived + ipvsadm
  • 功能: VRRP高可用 + LVS负载均衡 + 健康检查
  • 配置: 主备节点配置基本相同,优先级不同

真实服务器安装要求

  • 软件: 只需要Web服务 (Nginx/Apache等)
  • 功能: 配置VIP到lo接口 + ARP参数
  • 注意: 不需要安装Keepalived

详细配置步骤

1. 负载均衡器安装 (服务器1和服务器2)

1.1 下载和编译安装
# 创建安装目录
mkdir -p /opt/keepalived
cd /opt/keepalived# 下载Keepalived
wget https://www.keepalived.org/software/keepalived-2.2.8.tar.gz
tar -zxvf keepalived-2.2.8.tar.gz
cd keepalived-2.2.8# 安装依赖 (CentOS/RHEL)
yum install -y gcc make openssl-devel libnl-devel popt-devel ipvsadm# 安装依赖 (Ubuntu/Debian)
# apt-get install -y gcc make libssl-dev libnl-3-dev libnl-genl-3-dev ipvsadm# 编译安装
./configure --prefix=/usr/local/keepalived
make && make install# 创建必要目录
mkdir -p /etc/keepalived /var/log/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
1.2 主节点配置 (服务器1 - Master)
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LVS_MASTERvrrp_garp_master_delay 1vrrp_garp_master_repeat 1
}# VRRP实例配置
vrrp_instance VI_1 {state MASTERinterface eth0                    # 修改为实际网卡名称virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100                 # 修改为实际VIP地址}
}# HTTP虚拟服务器配置
virtual_server 192.168.1.100 80 {delay_loop 6lb_algo rr                       # 轮询算法lb_kind DR                       # 直接路由模式persistence_timeout 50protocol TCP# 真实服务器1real_server 192.168.1.10 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}# 真实服务器2real_server 192.168.1.11 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}# 真实服务器3real_server 192.168.1.12 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}# HTTPS虚拟服务器配置 (可选)
virtual_server 192.168.1.100 443 {delay_loop 6lb_algo wrr                      # 加权轮询算法lb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.1.10 443 {weight 2TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.1.11 443 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.1.12 443 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
1.3 备节点配置 (服务器2 - Backup)
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LVS_BACKUPvrrp_garp_master_delay 1vrrp_garp_master_repeat 1
}# VRRP实例配置
vrrp_instance VI_1 {state BACKUPinterface eth0                    # 修改为实际网卡名称virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100                 # 修改为实际VIP地址}
}# 虚拟服务器配置(与Master相同)
virtual_server 192.168.1.100 80 {delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.1.10 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.1.11 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.1.12 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}# HTTPS虚拟服务器配置(与Master相同)
virtual_server 192.168.1.100 443 {delay_loop 6lb_algo wrrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.1.10 443 {weight 2TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.1.11 443 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.1.12 443 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

2. 真实服务器配置 (服务器3、4、5)

2.1 安装Web服务
# CentOS/RHEL
yum install -y nginx# Ubuntu/Debian
# apt-get install nginx# 启动Web服务
systemctl start nginx
systemctl enable nginx
2.2 配置ARP参数
# 配置ARP参数
cat >> /etc/sysctl.conf << EOF
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
EOF# 应用配置
sysctl -p
2.3 配置VIP到lo接口
# 添加VIP到lo接口
ip addr add 192.168.1.100/32 dev lo# 创建开机自启动脚本
cat > /etc/rc.local << 'EOF'
#!/bin/bash
# 添加VIP到lo接口
ip addr add 192.168.1.100/32 dev lo
EOF# 设置执行权限
chmod +x /etc/rc.local
2.4 创建测试页面
# 创建测试页面
echo "Server: $(hostname) - $(date)" > /usr/share/nginx/html/index.html

启动和管理

1. 创建systemd服务

# 在负载均衡器上创建服务文件
cat > /etc/systemd/system/keepalived.service << 'EOF'
[Unit]
Description=Keepalived
After=network.target[Service]
Type=forking
KillMode=process
PIDFile=/var/run/keepalived.pid
ExecStart=/usr/local/keepalived/sbin/keepalived -D
ExecReload=/bin/kill -HUP $MAINPID
Restart=always[Install]
WantedBy=multi-user.target
EOF

2. 启动服务

# 重新加载systemd
systemctl daemon-reload# 启动Keepalived
systemctl start keepalived# 设置开机自启
systemctl enable keepalived# 查看状态
systemctl status keepalived

验证和测试

1. 检查VIP绑定

# 在负载均衡器上检查VIP
ip addr show | grep 192.168.1.100# 在真实服务器上检查VIP
ip addr show lo | grep 192.168.1.100

2. 检查负载均衡

# 查看IPVS规则
ipvsadm -ln# 查看IPVS统计
ipvsadm -l --stats# 测试访问
curl -I http://192.168.1.100# 多次访问查看负载均衡效果
for i in {1..10}; doecho "请求 $i: $(curl -s http://192.168.1.100)"
done

3. 故障转移测试

3.1 测试主备切换
# 在主负载均衡器上停止Keepalived
systemctl stop keepalived# 检查备负载均衡器是否接管VIP
ip addr show | grep 192.168.1.100# 恢复主负载均衡器
systemctl start keepalived
3.2 测试真实服务器故障
# 停止某个真实服务器的Web服务
systemctl stop nginx# 检查IPVS是否自动剔除该服务器
ipvsadm -ln# 恢复Web服务
systemctl start nginx

故障排查

1. 查看日志

# 查看Keepalived日志
tail -f /var/log/keepalived/keepalived.log# 查看systemd日志
journalctl -u keepalived -f

2. 检查配置

# 检查配置文件语法
/usr/local/keepalived/sbin/keepalived -t# 查看VRRP状态
ip vrrp show

3. 网络连通性测试

# 测试真实服务器连通性
telnet 192.168.1.10 80
telnet 192.168.1.11 80
telnet 192.168.1.12 80# 测试VRRP协议
tcpdump -i eth0 vrrp

常用命令

Keepalived管理

# 启动服务
systemctl start keepalived# 停止服务
systemctl stop keepalived# 重启服务
systemctl restart keepalived# 查看状态
systemctl status keepalived# 查看配置
keepalived -t# 手动启动(调试模式)
/usr/local/keepalived/sbin/keepalived -D -d

IPVS管理

# 查看IPVS规则
ipvsadm -ln# 查看IPVS统计
ipvsadm -l --stats# 查看IPVS连接
ipvsadm -l --connection# 清空IPVS规则
ipvsadm -C

网络管理

# 查看VIP绑定
ip addr show | grep 192.168.1.100# 查看路由表
ip route show# 查看ARP表
arp -n

重要说明

安装总结

服务器类型需要安装的软件配置内容
负载均衡器 (2台)Keepalived + ipvsadmVRRP + LVS + 健康检查
真实服务器 (3台)Web服务 (Nginx/Apache)VIP配置 + ARP参数

网络要求

  • 网段: 所有服务器必须在同一网段 (192.168.1.0/24)
  • 连通性: 负载均衡器与真实服务器之间网络连通
  • 防火墙: 允许VRRP协议 (112) 和业务端口 (80/443)
  • 带宽: 确保网络带宽满足业务需求

配置要点

  • VIP管理: VIP只在负载均衡器之间浮动
  • 真实服务器: 需要配置VIP到lo接口以响应请求
  • 主备配置: 主备负载均衡器配置基本相同,只是优先级不同
  • 健康检查: 自动检测服务器状态,剔除故障节点

负载均衡算法

算法说明适用场景
rr轮询服务器性能相近
wrr加权轮询服务器性能不同
lc最少连接连接数差异大
wlc加权最少连接性能不同且连接数差异大
sh源地址哈希需要会话保持
dh目标地址哈希缓存服务器

扩展建议

  • 更多真实服务器: 可以添加更多真实服务器提高处理能力
  • 多个VIP: 可以配置多个VIP和端口支持不同服务
  • 权重调整: 根据服务器性能调整权重值
  • 复杂健康检查: 可以添加HTTP、HTTPS等更复杂的健康检查
  • 监控告警: 集成监控系统,及时发现问题

安全建议

  • 防火墙配置: 只开放必要的端口
  • 认证密码: 使用强密码进行VRRP认证
  • 日志监控: 定期检查日志文件
  • 备份配置: 定期备份配置文件

这个配置提供了完整的高可用负载均衡解决方案,确保服务的高可用性和可扩展性,适用于生产环境部署。

http://www.dtcms.com/a/524101.html

相关文章:

  • Windows下载安装配置rabbitmq
  • 了解前端连接 RabbitMQ 的方式
  • 【ROS2】ROS2+Qt6在编译时报错:target_link_libraries
  • 从0到1理解智能体模式
  • 怎么做家具定制网站qq自动发货平台网站怎么做
  • 微网站开发合同网站建设项目付款方式
  • HarmonyOS ArkUI框架中AceContainer类的成员变量定义
  • 数据结构——希尔排序
  • 分组卷积(Grouped Convolution)原理与应用详解
  • 【信道利用率】为什么卫星链路用 SW 协议效率低?ARQ 信道利用率公式 + 计算题全解!
  • 三极管MOS管
  • PHP拆分重组pdf,php拆分pdf指定页数,并合并成新pdf
  • 详解C语言数组
  • 鹤山做网站公司建设网站宣传
  • 微信网站开发视频教程开发一个小软件多少钱
  • 释放内存与加速推理:PyTorch的torch.no_grad()与torch.inference_mode()
  • 论文笔记(九十六)VGGT: Visual Geometry Grounded Transformer
  • 城市基础设施安全运行监管平台
  • 网络 UDP 和 TCP / IP详细介绍
  • 数据结构(8)
  • [cpprestsdk] ~异步流处理(eg`basic_istream`、`basic_ostream`、`streambuf`) 底层
  • Linux 查找符合条件的文档
  • ​九小场所 / 乡镇监督防火 ——1 个平台管水源 / 隐患,整改率提 80%
  • 郑州做网站找绝唯科技地方类门户网站
  • 哪里可以做免费的物流网站国外室内设计案例网站
  • 【Linux系统】从零掌握make与Makefile:高效自动化构建项目的工具
  • ML:Supervised/Unsupervised
  • 开发网站多少钱北京 工业网站建设公司排名
  • 【后端开发面试题】
  • 【coze】基础概念与使用