0

0

Linux服务器高可用教程_HAProxyKeepalived实战案例

舞姬之光

舞姬之光

发布时间:2026-01-01 18:52:31

|

243人浏览过

|

来源于php中文网

原创

HAProxy+Keepalived是Linux下成熟轻量的高可用方案,核心在于配置清晰、故障响应快、切换无感知;HAProxy通过global/defaults/frontend/backend四段实现七层流量分发,Keepalived通过VRRP协议实现VIP主备漂移,需注意防火墙、SELinux、mcast_src_ip及日志配置等细节。

linux服务器高可用教程_haproxykeepalived实战案例

用 HAProxy 做七层负载均衡,再配 Keepalived 实现主备自动切换,是 Linux 环境下最成熟、最轻量的高可用方案之一。核心不在于组件多高级,而在于配置逻辑清晰、故障响应快、切换无感知。

HAProxy 配置要点:聚焦业务流量分发

HAProxy 负责把用户请求按规则转发给后端真实服务器(如 Web 服务)。关键不是堆参数,而是理清四块结构:

  • global:设日志地址(如 log 127.0.0.1 local3 info)、最大连接数(maxconn 4096)、运行用户(user haproxy)和后台模式(daemon
  • defaults:定义通用行为,比如健康检查失败次数(retries 3)、超时时间(timeout connect 5000mstimeout client 60s)、重试转发(option redispatch
  • frontend:监听入口,如 bind *:80,配合 ACL 实现基于域名或路径的路由(例:acl bbs hdr_dom(host) -i bbs.example.comuse_backend bbs_pool if bbs
  • backend:定义真实服务器池,启用健康检查(check inter 2000 rise 2 fall 3),支持轮询(balance roundrobin)或最小连接(leastconn)等算法

Keepalived 配置要点:确保 VIP 可靠漂移

Keepalived 通过 VRRP 协议让两台 HAProxy 服务器共享一个虚拟 IP(VIP),主节点挂了,VIP 自动切到备节点。重点看三处:

Ex驾校预约小程序
Ex驾校预约小程序

传统驾校预约方式步骤繁琐,效率低下,随着移动互联网科技和5G的革新,驾校考试领域迫切需要更加简洁、高效的预约方式,便捷人们的生活。因此设计基于微信小程序的驾校预约系统,改进传统驾校预约方式,实现高效的驾校学校预约。 采用腾讯提供的小程序云开发解决方案,无须服务器和域名。驾校预约管理:开始/截止时间/人数均可灵活设置,可以自定义客户预约填写的数据项驾校预约凭证:支持线下到场后校验签到/核销/二维码自

下载
  • router_id:每台机器必须唯一,如 LVS_MASTERLVS_BACKUP
  • vrrp_instance:主节点设 state MASTER、高优先级(如 priority 100);备节点设 state BACKUP、低优先级(如 priority 90);禁用抢占(nopreempt)可避免频繁来回切
  • virtual_ipaddress:写明 VIP,如 192.168.2.62/24 dev eth0;确保该网段能被客户端直连(云环境需额外申请弹性 IP 或开启辅助 IP 权限)

协同工作与验证方式

HAProxy 和 Keepalived 不是简单装上就跑通,必须确认它们真正联动:

  • 两台服务器都启动 HAProxy(systemctl start haproxy),再启动 Keepalived(systemctl start keepalived
  • 在主节点执行 ip addr show eth0,应看到 VIP;在备节点不应出现;手动停主节点的 Keepalived,VIP 应 2 秒内出现在备节点
  • 浏览器curl http://[VIP] 访问,反复刷新,观察后端服务器响应内容是否轮换(如返回 web1/web2);同时访问 http://[VIP]/haproxy?stats 查看实时状态页(需配 stats auth
  • 模拟后端宕机:停掉一台 Web 服务,HAProxy 日志应报 Server xxx is DOWN,流量自动切到剩余节点,不影响用户访问

常见踩坑提醒

实际部署中,这几个细节最容易导致“看着配对了,但就是不生效”:

  • 防火墙没关或没放行 VRRP 组播(协议号 112)和 HAProxy 端口(如 80、1080),CentOS 7+ 默认用 firewalld,执行 firewall-cmd --permanent --add-port=80/tcp 并重载
  • SELinux 开启状态下,HAProxy 无法绑定非标准端口或访问网络,临时关闭验证:setenforce 0;长期方案是调整策略或设为 permissive
  • Keepalived 的 mcast_src_ip 必须填本机真实 IP(非 127.0.0.1),否则 VRRP 报文发不出去;两节点的 virtual_router_id 必须一致(如都为 51)
  • HAProxy 日志默认不输出到文件,需在 rsyslog 中显式配置 local3.* /var/log/haproxy.log 并重启 rsyslog 服务

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

713

2023.08.22

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

424

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

172

2023.10.30

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

371

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

563

2023.08.10

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

389

2023.08.14

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

270

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

386

2023.11.14

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

65

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.4万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号