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

LVS+Keepalived高可用集群搭建

一、核心原理与技术理论

LVS架构解析

  1. DR模式工作流程

    • 客户端请求发送到VIP

    • Director通过IPVS进行流量分发

    • 真实服务器直接响应客户端(不经过Director)

    • ARP抑制确保真实服务器不暴露MAC地址

  2. 关键组件协作

 

Keepalived高可用机制

  • VRRP协议实现主备心跳检测(默认端口112)

  • 优先级机制(priority值决定主备角色)

  • 毫秒级故障转移(VIP漂移+IPVS服务接管)

二、背景需求与实现目标

行业痛点

  1. 单点故障导致服务中断

  2. 硬件负载均衡设备成本高昂

  3. 突发流量冲击单机性能瓶颈

解决方案优势

  • 零成本:开源软件构建企业级高可用

  • 高性能:DR模式吞吐量可达10Gbps+

  • 无缝切换:故障转移用户无感知

  • 灵活扩展:支持动态添加后端服务器

三、详细部署步骤

1. 环境准备

角色要求
Director节点2台(主备配置相同)
Real Server≥2台(部署相同服务)
VIP与物理IP同网段

2. Director节点配置

  1. 安装必要软件:

    yum install keepalived ipvsadm -y
  2. 配置Keepalived:

    1. 编辑配置文件:vi /etc/keepalived/keepalived.conf

    2. 主节点配置:

      vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 150advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100  # VIP地址}
      }

      备份节点配置(差异部分):

      state BACKUP
      priority 100
  3. 配置LVS服务:

    virtual_server 192.168.1.100 80 {delay_loop 3lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.1.20 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3}}real_server 192.168.1.21 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3}}
    }
  4. 启动服务:

    systemctl start keepalived
    systemctl enable keepalived

3. 真实服务器配置

  1. 配置ARP抑制:
    1. 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
  2. 绑定VIP到本地回环:
    1. ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up
  3. 添加路由记录:
    1. route add -host 192.168.1.100 dev lo:0


 

四、典型问题排查指南

问题1:VIP无法访问

排查步骤

  1. 检查VIP绑定状态:

    1. ip addr show ens33
  2. 验证防火墙设置:

    1. firewall-cmd --list-ports
  3. 检查真实服务器ARP抑制:

    1. sysctl -a | grep arp_ignore
问题2:主备切换失败

解决方案

  1. 检查VRRP通信:

    1. tcpdump -i ens33 vrrp
  2. 确认配置一致性:

    1. virtual_router_id值

    2. 认证密码

    3. 网卡名称

问题3:真实服务器状态异常

处理流程

  1. 手动测试服务连通性:

    1. curl -I http://真实服务器IP
  2. 检查健康检查配置:

    1. connect_timeout值

    2. nb_get_retry重试次数

    3. 端口设置是否正确

 


 

五、实践总结与优化建议

核心价值验证

  • 支撑10万+QPS高并发场景

  • 故障切换时间<1秒

  • 硬件成本节约90%+

最佳实践总结

  1. 调度算法选择:

    • 小规模集群:轮询(rr)

    • 异构服务器:加权最小连接(wlc)

    • 会话保持:源地址哈希(sh)

  2. 安全加固措施:

    • vrrp_strict  # 启用VRRP安全模式
      enable_script_security
  3. 监控方案:

    • 实时流量统计:ipvsadm -Ln --stats

    • 存活状态检测:systemctl status keepalived

    • Prometheus监控集成

架构演进建议

  1. 容器化部署:将LVS+Keepalived打包为Docker镜像

  2. 多云部署:跨云厂商实现异地高可用

  3. 自动化扩缩容:根据流量自动增减Real Server

 

实战经验
在电商大促场景中,通过以下优化实现50万QPS:

  1. 调度算法从rr改为wlc

  2. 增加健康检查频率:delay_loop 1

  3. 开启内核参数:net.ipv4.vs.conn_reuse_mode=0

最终效果验证

[root@director ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.100:80 wlc-> 192.168.1.20:80             Route   3      1256       8742-> 192.168.1.21:80             Route   2      942        6218

 

http://www.lqws.cn/news/573031.html

相关文章:

  • Re:从0开始的 空闲磁盘块管理(考研向)
  • TCP/IP模型、OSI模型与C# Socket编程详解
  • SpringSecurity6-oauth2-三方gitee授权-授权码模式
  • JavaScript中的回调函数详解
  • 【鸿蒙中级】
  • 微信小程序接入腾讯云短信验证码流程
  • window11 本地安装 MySQL8.0
  • 【QT】第一个QT程序 || 对象树 || 编码时的注意事项
  • 运维基础-MYSQL数据库-笔记
  • stm32 USART串口协议与外设(程序)——江协教程踩坑经验分享
  • Java面试宝典:基础六
  • MCU、LIN收发器与LIN总线是如何进行交互的?
  • stm32之测量周期
  • WPF学习笔记(13)列表框控件ListBox与数据模板
  • 开发中bs,cs都是什么意思
  • 视频跳帧播放器设计与实现
  • [Linux] PXE
  • HttpServletRequest
  • OpenCV 4.10.0 移植
  • Spring Cloud:服务监控与追踪的高级实践
  • C++ 第四阶段 STL 容器 - 第一讲:详解 std::vector
  • 5 c++核心——文件操作
  • restful规范
  • Oauth2 自定义设置token过期时间
  • HarmonyOS 公共事件机制介绍以及多进程之间的通信实现(9000字详解)
  • 【网络】:DNS协议、ICMP协议、NAT技术
  • MongoDB06 - MongoDB 地理空间
  • vllm部署私有智谱大模型
  • 疏通经脉: Bridge 联通逻辑层和渲染层
  • 模拟多维物理过程与基于云的数值分析-AI云计算数值分析和代码验证