keepalived的高可用和负载均衡

一、Keepalived 核心概述

Keepalived 是一款基于 LVS(Linux Virtual Server)和 VRRP(虚拟路由冗余协议)的开源软件,核心作用有两个:高可用(HA)负载均衡(LB),常用来保障服务器集群的稳定性,避免单点故障,同时优化请求分发,提升服务响应效率。

核心特性:轻量、配置简单、无需额外硬件支持,依赖网络层(VRRP)和传输层(TCP/IP)协议,可与 Nginx、Apache 等Web服务器配合使用,适用于中小规模集群场景。

二、高可用(HA)核心原理与实例

2.1 高可用核心逻辑

高可用的核心是 消除单点故障,通过 VRRP 协议实现两台(或多台)服务器的主从切换。VRRP 会在集群中选举一台"主服务器(Master)",其余为"备份服务器(Backup)",所有服务器共享一个虚拟IP(VIP),客户端通过VIP访问服务。

工作机制:主服务器正常运行时,会周期性向备份服务器发送"心跳包"(默认每1秒一次);若备份服务器长时间(默认3秒)未收到心跳包,判定主服务器故障,自动将VIP切换到备份服务器,实现"无缝切换",客户端无感知。

2.2 高可用实例(双机热备)

场景:搭建两台Web服务器(Nginx),通过Keepalived实现双机热备,确保Web服务不中断。

环境准备(两台服务器,系统CentOS 7):

  • 主服务器(Master):IP 192.168.1.100,安装 Nginx + Keepalived

  • 备份服务器(Backup):IP 192.168.1.101,安装 Nginx + Keepalived

  • 虚拟IP(VIP):192.168.1.200(客户端访问地址)

实例流程:

  1. 初始状态:主服务器(192.168.1.100)正常运行,持有VIP(192.168.1.200),Nginx提供Web服务,客户端通过VIP访问主服务器。

  2. 故障触发:人为停止主服务器的Nginx服务或直接关闭主服务器,主服务器停止发送心跳包。

  3. 切换过程:备份服务器(192.168.1.101)超过3秒未收到心跳,判定主服务器故障,自动接管VIP(192.168.1.200),启动自身Nginx服务。

  4. 故障恢复:主服务器修复后重新启动,会自动发送心跳包,此时备份服务器检测到主服务器恢复,会主动释放VIP,主服务器重新接管VIP,恢复主从状态(默认主服务器优先级更高)。

关键说明:Keepalived 不仅能检测服务器本身的存活,还能检测服务(如Nginx、MySQL)的状态,若服务故障,也会触发主从切换(需配置服务检测脚本)。

三、负载均衡(LB)核心原理与实例

3.1 负载均衡核心逻辑

Keepalived 本身不直接实现负载均衡,而是 结合 LVS 实现四层负载均衡(基于IP和端口,如TCP、UDP),将客户端请求分发到后端多台应用服务器,实现负载分担,提升服务并发能力。

核心概念:

  • 调度器(Director):运行Keepalived的服务器,接收客户端请求,通过调度算法分发到后端服务器。

  • 后端服务器(Real Server):实际提供应用服务的服务器(如Web、MySQL)。

  • 调度算法:默认轮询(RR),还有加权轮询(WRR)、最小连接数(LC)等,可根据后端服务器性能调整。

3.2 负载均衡实例(LVS+Keepalived)

场景:搭建1台调度器(Keepalived+LVS),2台后端Web服务器,实现客户端请求的负载分发,同时通过Keepalived保障调度器的高可用(避免调度器单点故障)。

环境准备(4台服务器,系统CentOS 7):

  • 调度器1(Master):IP 192.168.1.100,安装 Keepalived + LVS

  • 调度器2(Backup):IP 192.168.1.101,安装 Keepalived + LVS(保障调度器高可用)

  • 后端服务器1:IP 192.168.1.102,安装 Nginx(Web服务,页面内容为"Server A")

  • 后端服务器2:IP 192.168.1.103,安装 Nginx(Web服务,页面内容为"Server B")

  • 虚拟IP(VIP):192.168.1.200(客户端访问地址)

实例流程:

  1. 初始状态:调度器1(Master)持有VIP,LVS配置轮询算法,后端两台Web服务器正常运行。

  2. 请求分发:客户端通过VIP(192.168.1.200)访问Web服务,调度器1接收请求后,按轮询算法将第一个请求分发到后端1(192.168.1.102),第二个请求分发到后端2(192.168.1.103),依次循环。

  3. 调度器故障:停止调度器1的Keepalived服务,调度器2(Backup)未收到心跳,接管VIP,继续通过LVS分发请求,客户端访问不受影响。

  4. 后端服务器故障:若后端1(192.168.1.102)故障,LVS会检测到后端服务不可用,自动将所有请求分发到后端2(192.168.1.103);待后端1修复后,自动恢复轮询分发。

关键说明:四层负载均衡(LVS)的优势是性能高(基于内核层转发),适合高并发场景;缺点是不支持七层协议(如HTTP、HTTPS)的解析,若需七层负载均衡,可配合Nginx实现(Keepalived保障Nginx高可用,Nginx实现七层负载)。

四、高可用与负载均衡的结合场景(实战常用)

实际生产环境中,Keepalived 常同时实现"调度器高可用"和"后端负载均衡",架构如下:

客户端 → VIP(Keepalived 虚拟IP)→ 主调度器(Keepalived+LVS)→ 后端服务器集群(多台应用服务器)

备份调度器实时监控主调度器,后端服务器集群通过LVS实现负载分担,双重保障服务的稳定性和高并发能力。

举例:某小型电商网站,采用"2台调度器(Keepalived+LVS)+ 4台Web服务器(Nginx)+ 2台MySQL服务器(主从)"架构,其中:

  • Keepalived 保障调度器和MySQL主从的高可用,避免单点故障;

  • LVS 实现Web服务器的负载均衡,将用户请求分发到4台Web服务器,提升页面加载速度;

  • 即使其中1台调度器、1台Web服务器故障,服务仍能正常运行,客户端无感知。

五、常见问题与注意事项

  • VIP冲突:确保集群中只有主服务器持有VIP,备份服务器仅在主服务器故障时接管,避免多台服务器同时绑定VIP导致网络异常。

  • 心跳包配置:心跳包的发送间隔和超时时间需合理配置(默认即可),间隔过短会增加网络负担,过长会导致切换延迟。

  • 服务检测:必须配置服务检测脚本(如检测Nginx、MySQL是否运行),否则仅检测服务器存活,服务故障时不会触发切换。

  • 后端服务器一致性:后端服务器的应用服务(如Web页面、接口)需保持一致,避免负载分发后客户端看到不同内容。

六、核心总结

  1. Keepalived 的核心价值:解决单点故障(高可用)、分担服务器压力(负载均衡),是服务器集群稳定性的"守护者"。

  2. 高可用依赖 VRRP 协议,实现主从切换;负载均衡依赖 LVS 协议,实现请求分发,二者可单独使用,也可结合使用。

  3. 实战中,常与 Nginx、MySQL 等服务配合,搭建高可用、高并发的集群架构,适用于Web服务、数据库服务等各类场景。

相关推荐
ldj20208 天前
Keepalived 备机解决proxysql单点故障
keepalived
小百菜12 天前
Keepalived + Nginx 实现高可用
nginx·keepalived
Brandon汐13 天前
HAProxy+Keepalived+MariaDB+tomcat+Prometheus+Grafana高可用部署
云原生·tomcat·grafana·prometheus·mariadb·keepalived·haproxy
cyber_两只龙宝25 天前
【Keepalived】抢占模式、延迟抢占模式与非抢占模式详解
linux·运维·服务器·keepalived
nzxzn2 个月前
Keepalived 核心知识点
运维·keepalived
feng68_2 个月前
Keepalived基础实现
运维·服务器·keepalived
cyber_两只龙宝2 个月前
Keepalived+LVS--实现IPVS的高可用+高性能的双主双业务架构详细配置流程及解析
linux·运维·集群·lvs·高性能·keepalived·高可用
71ber2 个月前
RHCSE 实战笔记:Keepalived 企业级高可用集群深度解析
linux·服务器·keepalived
SakitamaX2 个月前
KEEPALIVED介绍与实验与介绍
运维·keepalived