Keepalived 在不同场景下的高可用方案设计与最佳实践

news2025/5/25 23:06:08

一、Keepalived 典型应用场景深度解析

1. Web 服务器集群:统一入口与故障容错
1.1 场景需求
  • 核心目标:为多台 Web 服务器提供统一 VIP 入口,隐藏后端节点细节,实现故障透明切换。

  • 挑战

    • 确保用户请求在主节点故障时自动转发到备份节点。

    • 避免会话丢失(如用户登录状态),需结合会话共享(如 Redis)或粘性会话(Sticky Session)。

1.2 架构设计
  • 组件说明

    • Keepalived 节点:2 台服务器(MASTER/BACKUP)共享 VIP 192.168.1.254

    • Web 服务器:Nginx 或 Tomcat 集群,部署相同应用程序,共享静态资源(如 NFS)或使用对象存储(如 S3)。

1.3 配置要点
vrrp_instance WEB_VIP {
  state MASTER
  interface eth0
  virtual_router_id 50
  priority 100
  virtual_ipaddress {
    192.168.1.254/24 dev eth0
  }
  track_script {
    check_web_service  # 检测 Web 服务端口(80/443)
  }
}

track_script {
  check_web_service {
    script "/etc/keepalived/check_nginx.sh"  # 检测 Nginx 进程
    interval 2
    weight -20
  }
}
1.4 优化方案
  • 粘性会话实现:在 Nginx 中配置 ip_hash 策略,确保同一客户端 IP 的请求始终路由到同一后端服务器:
upstream web_backend {
  ip_hash;
  server 192.168.1.101:80;
  server 192.168.1.102:80;
}
  • 静态资源优化:使用 CDN 缓存静态文件(如图片、CSS),减少后端服务器压力,提升故障切换时的响应速度。
2. 数据库集群:主从复制与故障切换
2.1 场景需求
  • 核心目标:在 MySQL/PostgreSQL 主从集群中,通过 Keepalived 实现主库故障时的自动切换,确保业务连续性。

  • 挑战

    • 避免脑裂(Split-Brain)导致数据不一致。

    • 确保切换后从库已完成数据同步,避免数据丢失。

2.2 架构设计(以 PostgreSQL 为例)
  • 组件说明

    • 主库(MASTER):提供读写服务,VIP 绑定在主库节点。

    • 从库(BACKUP):实时复制主库数据,主库故障时提升为新主库。

    • repmgr:配合 Keepalived 实现主从切换逻辑(如流复制状态检测)。

2.3 配置要点
vrrp_instance DB_VIP {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 100
  virtual_ipaddress {
    192.168.1.254/24 dev eth0
  }
  track_script {
    check_postgres_master  # 检测主库复制状态
  }
}

track_script {
  check_postgres_master {
    script "/etc/keepalived/check_pg_master.sh"
    interval 2
    weight -50  # 优先级大幅降低,确保快速切换
  }
}

检测脚本示例(判断主库是否允许写入):

#!/bin/bash
# /etc/keepalived/check_pg_master.sh
is_master=$(sudo -u postgres psql -tAc "SELECT pg_is_in_recovery();")
if [ "$is_master" = "f" ]; then
  exit 0  # 是主库,状态正常
else
  exit 1  # 非主库,触发故障转移
fi
2.4 最佳实践
  • 切换流程优化
  1. Keepalived 检测到主库故障,降低优先级并触发选举。

  2. 备份节点接管 VIP,通过 repmgr 提升为新主库。

  3. 原主库恢复后,作为从库重新加入集群(非抢占模式)。

  • 数据一致性保障:使用 synchronous_commit 确保主从数据强一致(适用于金融场景):
# postgresql.conf
synchronous_commit = on
synchronous_standby_names = '*'
3. 负载均衡器高可用:保障流量入口稳定
3.1 场景需求
  • 核心目标:为 HAProxy、Nginx 等负载均衡器节点提供高可用性,避免单点故障导致的流量中断。

  • 挑战

    • 确保负载均衡配置在节点间同步(如 HAProxy 的 config sync)。

    • 快速检测负载均衡器进程故障(如进程崩溃或配置错误)。

3.2 架构设计(以 HAProxy 为例)
  • 组件说明

    • 负载均衡节点:2 台服务器运行 HAProxy,共享 VIP 192.168.1.254

    • 后端服务器:应用服务器集群,由 HAProxy 进行流量分发。

3.3 配置要点
vrrp_instance LB_VIP {
  state MASTER
  interface eth0
  virtual_router_id 52
  priority 100
  virtual_ipaddress {
    192.168.1.254/24 dev eth0
  }
  track_script {
    check_haproxy_process  # 检测 HAProxy 进程存活
  }
}

track_script {
  check_haproxy_process {
    script "/etc/keepalived/check_haproxy.sh"
    interval 1
    weight -30
  }
}

检测脚本示例(确保 HAProxy 主进程存在):

#!/bin/bash
# /etc/keepalived/check_haproxy.sh
if ! pgrep -f "haproxy -f /etc/haproxy/haproxy.cfg" >/dev/null; then
  # 尝试重启 HAProxy
  systemctl restart haproxy
  sleep 2
  if ! pgrep -f "haproxy -f /etc/haproxy/haproxy.cfg" >/dev/null; then
    exit 1  # 重启失败,触发故障转移
  fi
fi
exit 0
3.4 高级特性应用
  • 配置同步:使用 rsyncgit 实时同步负载均衡配置文件:
# 主节点配置变更后自动同步到备份节点
rsync -avz /etc/haproxy/haproxy.cfg backup_node:/etc/haproxy/
  • 动态后端管理:通过 HAProxy 的 stats socket 接口动态添加 / 删除后端服务器,配合 Keepalived 健康检查实现自动扩缩容。

二、跨场景通用最佳实践

1. 多数据中心容灾
  • 场景:主数据中心与灾备中心通过专线连接,Keepalived 组跨中心部署。

  • 配置要点

    • 主中心节点优先级 100,灾备中心节点优先级 90

    • 启用 nopreempt 模式,避免主中心网络波动导致频繁切换。

2. 云原生场景适配
  • 容器化部署:使用 keepalived-vip 插件在 Kubernetes 中实现 VIP 动态分配,配合 StatefulSet 管理有状态节点。

  • 公有云负载均衡:在 AWS/GCP 中,Keepalived 与弹性 IP(EIP)结合,实现虚拟机实例的高可用。

3. 性能与成本平衡
  • 低成本方案:在测试环境或中小规模集群中,可将 Keepalived 与业务进程部署在同一节点,减少硬件成本。

  • 性能监控:通过 Prometheus 采集 Keepalived 指标(如切换次数、延迟),设置告警阈值(如切换时间超过 5 秒)。

三、总结:选择 Keepalived 的核心场景

Keepalived 通过轻量级配置实现网络层高可用,尤其适合以下场景:

  1. 需要统一入口的无状态服务:如 Web 服务器、API 网关,通过 VIP 提供稳定访问地址。

  2. 主从架构的有状态服务:如数据库、缓存集群,结合复制机制实现故障切换。

  3. 基础设施组件冗余:如负载均衡器、DNS 服务器,保障流量路由稳定。

与云原生方案(如 Kubernetes 服务)相比,Keepalived 在传统数据中心和混合云场景中仍具有部署简单、兼容性强的优势。通过合理设计配置与检测逻辑,可在不同场景下发挥其高可用性价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2385673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

注册并创建一个微信小程序

目录 (一)前往微信公众平台,并注册一个微信小程序账号 (二)配置微信小程序 (三)创建微信小程序项目 1.流程 1.1获取小程序ID 1.2下载微信开发者工具 1.3安装微信开发者工具 2.创建项目…

计算机网络——每一层的用到的设备及其作用

计算机网络基础 OSI参考模型TCP/IP协议族集线器(Hub)交换机(Switch)路由器(Router)功能特点无线路由器(家庭宽带)光猫功能 网关(Gateway)功能应用场景特点 IP…

【Web前端】JavaScript入门与基础(一)

JavaScript简介 JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”,指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序的“脚本”。 JavaScript 是一种嵌入式(embedded)语言。它本身提供的核心语法不算…

前端大文件上传性能优化实战:分片上传分析与实战

前端文件分片是大文件上传场景中的重要优化手段,其必要性和优势主要体现在以下几个方面: 一、必要性分析 1. 突破浏览器/服务器限制 浏览器限制:部分浏览器对单次上传文件大小有限制(如早期IE限制4GB) 服务器限制&a…

Linux服务器配置深度学习环境(Pytorch+Anaconda极简版)

前言: 最近做横向需要使用实验室服务器跑模型,之前用师兄的账号登录服务器跑yolo,3张3090一轮14秒,我本地一张4080laptop要40秒,效率还是快很多,(这么算一张4080桌面版居然算力能比肩3090&#…

超低延迟音视频直播技术的未来发展与创新

引言 音视频直播技术正在深刻改变着我们的生活和工作方式,尤其是在教育、医疗、安防、娱乐等行业。无论是全球性的体育赛事、远程医疗、在线教育,还是智慧安防、智能家居等应用场景,都离不开音视频技术的支持。为了应对越来越高的需求&#x…

Java 内存模型(JMM)深度解析:理解多线程内存可见性问题

Java 内存模型(JMM)深度解析:理解多线程内存可见性问题 在 Java 编程中,多线程的运用能够显著提升程序的执行效率,但与此同时,多线程环境下的一些问题也逐渐凸显。其中,内存可见性问题是一个关…

转移dp简单数学数论

1.转移dp问题 昨天的练习赛上有一个很好玩的起终点问题,第一时间给出bfs的写法。 但是写到后面发现不行,还得是的dp转移的写法才能完美的解决这道题目。 每个格子可以经过可以不经过,因此它的状态空间是2^(n*m)&…

动静态库--

目录 一 静态库 1. 创建静态库 2. 使用静态库 2.1 第一种 2.2 第二种 二 动态库 1. 创建动态库 2. 使用动态库 三 静态库 VS 动态库 四 动态库加载 1. 可执行文件加载 2. 动态库加载 一 静态库 Linux静态库:.a结尾 Windows静态库:.lib结尾…

git clone时出现无法访问的问题

git clone时出现无法访问的问题 问题: 由于我的git之前设置了代理,然后在这次克隆时又没有打开代理 解决方案: 1、如果不需要代理,直接取消 Git 的代理设置: git config --global --unset http.proxy git config --gl…

文件系统·linux

目录 磁盘简介 Ext文件系统 块 分区 分组 inode 再谈inode 路径解析 路径缓存 再再看inode 挂载 小知识 磁盘简介 磁盘:一个机械设备,用于储存数据。 未被打开的文件都是存在磁盘上的,被打开的加载到内存中。 扇区:是…

【Matlab】雷达图/蛛网图

文章目录 一、简介二、安装三、示例四、所有参数说明 一、简介 雷达图(Radar Chart)又称蛛网图(Spider Chart)是一种常见的多维数据可视化手段,能够直观地对比多个指标并揭示其整体分布特征。 雷达图以中心点为原点&…

使用JProfiler进行Java应用性能分析

文章目录 一、基本概念 二、Windows系统中JProfiler的安装 1、下载exe文件 2、安装JProfiler 三、JProfiler的破解 四、IDEA中配置JProfiler 1、安装JProfiler插件 2、关联本地磁盘中JProfiler软件的执行文件 3、IDEA中启动JProfiler 五、监控本地主机中的Java应用 …

遥感解译项目Land-Cover-Semantic-Segmentation-PyTorch之一推理模型

文章目录 效果项目下载项目安装安装步骤1、安装环境2、新建虚拟环境和安装依赖测试模型效果效果 项目下载 项目地址 https://github.com/souvikmajumder26/Land-Cover-Semantic-Segmentation-PyTorch 可以直接通过git下载 git clone https://github.com/souvikmajumder26/Lan…

六、【前端启航篇】Vue3 项目初始化与基础布局:搭建美观易用的管理界面骨架

【前端启航篇】Vue3 项目初始化与基础布局:搭建美观易用的管理界面骨架 前言技术选型回顾与准备准备工作第一步:进入前端项目并安装 Element Plus第二步:在 Vue3 项目中引入并配置 Element Plus第三步:设计基础页面布局组件第四步…

C++ 前缀和数组

一. 一维数组前缀和 1.1. 定义 前缀和算法通过预处理数组,计算从起始位置到每个位置的和,生成一个新的数组(前缀和数组)。利用该数组,可以快速计算任意区间的和,快速求出数组中某一段连续区间的和。 1.2. …

细胞冻存的注意事项,细胞冻存试剂有哪些品牌推荐

细胞冻存的原理 细胞冻存的基本原理是利用低温环境抑制细胞的新陈代谢,使细胞进入一种“休眠”状态。在低温条件下,细胞的生物活动几乎停止,从而实现长期保存。然而,细胞在冷冻过程中可能会因为细胞内外水分结冰形成冰晶而受损。…

快速上手Linux火墙管理

实验网络环境: 主机IP网络f1192.168.42.129/24NATf2(双网卡) 192.168.42.128/24 192.168.127.20/24 NAT HOST-NOLY f3192.168.127.30/24HOST-ONLY 一、iptables服务 1.启用iptables服务 2.语法格式及常用参数 语法格式:参数&…

[创业之路-375]:企业战略管理案例分析 - 华为科技巨擘的崛起:重构全球数字化底座的超级生命体

在人类文明从工业时代(机械、电气、自动化)迈向数字智能(硬件、软件、算法、虚拟、智能)时代的临界点上,一家中国企业正以令人震撼的姿态重塑全球科技版图。从通信网络的底层架构到智能终端的生态闭环,从芯…

AI基础知识(05):模型提示词、核心设计、高阶应用、效果增强

目录 一、核心设计原则 二、高阶应用场景 三、突破性技巧 以下是针对DeepSeek模型的提示词设计思路及典型应用场景示例,帮助挖掘其潜在能力: 一、核心设计原则 1. 需求明确化:用「角色定位任务目标输出格式」明确边界 例:作为历…