首页
/ Keepalived与HAProxy高可用配置实践与常见问题解析

Keepalived与HAProxy高可用配置实践与常见问题解析

2025-06-15 02:54:06作者:郦嵘贵Just

前言

在企业级应用部署中,高可用性(High Availability)是系统设计的重要考量因素。本文将以Keepalived和HAProxy的集成配置为例,深入探讨如何构建高可用的负载均衡解决方案,并针对实际部署中遇到的典型问题进行技术解析。

核心组件介绍

Keepalived

Keepalived是一个基于VRRP协议实现的高可用解决方案,主要用于实现IP地址的自动转移和服务的故障切换。其核心功能包括:

  • 通过VRRP协议实现虚拟IP地址的自动转移
  • 提供健康检查机制监控服务状态
  • 支持主备和主主两种高可用模式

HAProxy

HAProxy是一款高性能的TCP/HTTP负载均衡器,具有以下特点:

  • 支持四层(TCP)和七层(HTTP)负载均衡
  • 提供丰富的健康检查机制
  • 高性能、低资源消耗

典型配置方案

基础架构设计

典型的Keepalived+HAProxy高可用架构包含以下要素:

  1. 两台服务器分别部署Keepalived和HAProxy
  2. 配置共享的虚拟IP(VIP)
  3. 通过Keepalived监控HAProxy状态
  4. 实现VIP的自动故障切换

配置示例

Keepalived主节点配置

global_defs {
    script_user root
    enable_script_security
}

vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    interface enp1s0
    state MASTER
    priority 100
    virtual_router_id 51
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        10.114.16.72/24
    }
    unicast_src_ip 10.114.16.50
    unicast_peer {
        10.114.16.64
    }
    track_script {
        chk_haproxy
    }
    notify_master "/etc/keepalived/start_haproxy.sh"
}

HAProxy基础配置

frontend postgres_frontend
    bind *:5000
    default_backend postgres_backend

backend postgres_backend
    server pg1 10.114.16.70:5432 check
    server pg2 10.114.16.68:5432 check

关键问题与解决方案

1. VIP转移失效问题

现象:当主节点HAProxy服务停止后,VIP未按预期转移到备用节点。

原因分析

  • 优先级计算错误:主节点优先级降低后仍高于备用节点
  • 健康检查脚本逻辑缺陷
  • 服务启动/停止脚本配置不当

解决方案

  1. 确保健康检查脚本正确反映服务状态
  2. 合理设置权重值,确保故障时优先级能正确降级
  3. 避免在notify脚本中自动启停HAProxy服务

2. 多IP访问问题

现象:客户端可以通过物理IP和VIP访问服务。

原因分析

  • HAProxy绑定设置为*:5000,监听所有接口
  • 缺乏访问控制机制

解决方案

  1. 使用防火墙规则限制访问
# 只允许通过VIP访问5000端口
iptables -A INPUT -p tcp --dport 5000 -d 10.114.16.72 -j ACCEPT
iptables -A INPUT -p tcp --dport 5000 -j DROP
  1. 或使用HAProxy的ACL进行访问控制

3. 服务状态同步问题

最佳实践

  • 保持两节点HAProxy配置完全一致
  • 使用配置管理工具同步配置文件
  • 实现配置变更的自动化部署

性能优化建议

  1. VRRP参数调优

    • 合理设置advert_int(广告间隔)
    • 启用vrrp_garp_master_refresh
  2. HAProxy性能优化

    • 调整maxconn值
    • 启用连接复用
    • 优化健康检查间隔
  3. 网络优化

    • 启用TCP快速打开
    • 调整内核网络参数

监控与维护

  1. 监控指标

    • Keepalived:VIP状态、节点角色切换次数
    • HAProxy:连接数、响应时间、后端服务器状态
  2. 日志分析

    • 定期检查Keepalived日志中的状态切换记录
    • 监控HAProxy的健康检查失败事件
  3. 维护操作

    • 变更前进行配置检查
    • 采用滚动更新策略
    • 维护窗口内禁用自动故障切换

总结

Keepalived与HAProxy的组合为企业提供了可靠的高可用负载均衡解决方案。通过本文的配置示例和问题分析,技术人员可以更好地理解两者的集成工作原理,并在实际部署中避免常见陷阱。关键是要确保健康检查机制可靠、优先级设置合理,并建立完善的监控体系,这样才能构建真正高可用的服务架构。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
858
511
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
258
298
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
332
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
22
5