keepalived的高可用和负载均衡
一、Keepalived 核心概述Keepalived 是一款基于 LVSLinux Virtual Server和 VRRP虚拟路由冗余协议的开源软件核心作用有两个高可用HA和负载均衡LB常用来保障服务器集群的稳定性避免单点故障同时优化请求分发提升服务响应效率。核心特性轻量、配置简单、无需额外硬件支持依赖网络层VRRP和传输层TCP/IP协议可与 Nginx、Apache 等Web服务器配合使用适用于中小规模集群场景。二、高可用HA核心原理与实例2.1 高可用核心逻辑高可用的核心是消除单点故障通过 VRRP 协议实现两台或多台服务器的主从切换。VRRP 会在集群中选举一台“主服务器Master”其余为“备份服务器Backup”所有服务器共享一个虚拟IPVIP客户端通过VIP访问服务。工作机制主服务器正常运行时会周期性向备份服务器发送“心跳包”默认每1秒一次若备份服务器长时间默认3秒未收到心跳包判定主服务器故障自动将VIP切换到备份服务器实现“无缝切换”客户端无感知。2.2 高可用实例双机热备场景搭建两台Web服务器Nginx通过Keepalived实现双机热备确保Web服务不中断。环境准备两台服务器系统CentOS 7主服务器MasterIP 192.168.1.100安装 Nginx Keepalived备份服务器BackupIP 192.168.1.101安装 Nginx Keepalived虚拟IPVIP192.168.1.200客户端访问地址实例流程初始状态主服务器192.168.1.100正常运行持有VIP192.168.1.200Nginx提供Web服务客户端通过VIP访问主服务器。故障触发人为停止主服务器的Nginx服务或直接关闭主服务器主服务器停止发送心跳包。切换过程备份服务器192.168.1.101超过3秒未收到心跳判定主服务器故障自动接管VIP192.168.1.200启动自身Nginx服务。故障恢复主服务器修复后重新启动会自动发送心跳包此时备份服务器检测到主服务器恢复会主动释放VIP主服务器重新接管VIP恢复主从状态默认主服务器优先级更高。关键说明Keepalived 不仅能检测服务器本身的存活还能检测服务如Nginx、MySQL的状态若服务故障也会触发主从切换需配置服务检测脚本。三、负载均衡LB核心原理与实例3.1 负载均衡核心逻辑Keepalived 本身不直接实现负载均衡而是结合 LVS 实现四层负载均衡基于IP和端口如TCP、UDP将客户端请求分发到后端多台应用服务器实现负载分担提升服务并发能力。核心概念调度器Director运行Keepalived的服务器接收客户端请求通过调度算法分发到后端服务器。后端服务器Real Server实际提供应用服务的服务器如Web、MySQL。调度算法默认轮询RR还有加权轮询WRR、最小连接数LC等可根据后端服务器性能调整。3.2 负载均衡实例LVSKeepalived场景搭建1台调度器KeepalivedLVS2台后端Web服务器实现客户端请求的负载分发同时通过Keepalived保障调度器的高可用避免调度器单点故障。环境准备4台服务器系统CentOS 7调度器1MasterIP 192.168.1.100安装 Keepalived LVS调度器2BackupIP 192.168.1.101安装 Keepalived LVS保障调度器高可用后端服务器1IP 192.168.1.102安装 NginxWeb服务页面内容为“Server A”后端服务器2IP 192.168.1.103安装 NginxWeb服务页面内容为“Server B”虚拟IPVIP192.168.1.200客户端访问地址实例流程初始状态调度器1Master持有VIPLVS配置轮询算法后端两台Web服务器正常运行。请求分发客户端通过VIP192.168.1.200访问Web服务调度器1接收请求后按轮询算法将第一个请求分发到后端1192.168.1.102第二个请求分发到后端2192.168.1.103依次循环。调度器故障停止调度器1的Keepalived服务调度器2Backup未收到心跳接管VIP继续通过LVS分发请求客户端访问不受影响。后端服务器故障若后端1192.168.1.102故障LVS会检测到后端服务不可用自动将所有请求分发到后端2192.168.1.103待后端1修复后自动恢复轮询分发。关键说明四层负载均衡LVS的优势是性能高基于内核层转发适合高并发场景缺点是不支持七层协议如HTTP、HTTPS的解析若需七层负载均衡可配合Nginx实现Keepalived保障Nginx高可用Nginx实现七层负载。四、高可用与负载均衡的结合场景实战常用实际生产环境中Keepalived 常同时实现“调度器高可用”和“后端负载均衡”架构如下客户端 → VIPKeepalived 虚拟IP→ 主调度器KeepalivedLVS→ 后端服务器集群多台应用服务器备份调度器实时监控主调度器后端服务器集群通过LVS实现负载分担双重保障服务的稳定性和高并发能力。举例某小型电商网站采用“2台调度器KeepalivedLVS 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服务、数据库服务等各类场景。