跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

基于 Nginx 与 Keepalived 构建高可用双机热备方案

Nginx 结合 Keepalived 可实现双机热备,确保服务高可用。通过编译安装 Keepalived、配置主备节点参数及优先级、编写 Nginx 进程监控脚本,能够完成基础架构搭建。测试阶段可通过停止主节点 Nginx 进程验证虚拟 IP 是否自动漂移至备节点,实现故障自动切换。

萤火微光发布于 2025/1/17更新于 2026/7/2035 浏览
基于 Nginx 与 Keepalived 构建高可用双机热备方案

Nginx + Keepalived 高可用部署指南

在生产环境中,单点故障往往意味着服务中断。利用 Keepalived 配合 Nginx,可以构建主备模式的热备集群,当主节点异常时,虚拟 IP(VIP)会自动漂移到备用节点,保障业务连续性。

环境准备与安装

编译安装 Keepalived 需要 OpenSSL 支持。在 CentOS 环境下,可执行以下命令获取源码并编译:

yum install -y openssl-devel wget
cd /tmp
wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
tar xzf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure && make && make install

安装完成后,需将启动脚本和配置文件复制到系统目录,并设置开机自启:

cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
chmod +x /etc/init.d/keepalived
chkconfig --add keepalived
chkconfig keepalived on
ln -s /usr/local/sbin/keepalived /usr/sbin/
mkdir -p /etc/keepalived

配置文件详解

Keepalived 的核心配置位于 /etc/keepalived/keepalived.conf。这里以主节点(Master)和备节点(Backup)为例,IP 规划如下:

  • 主节点:192.168.1.103
  • 备节点:192.168.1.101
  • 虚拟 IP:192.168.1.110

主节点配置

主节点优先级应高于备节点,同时开启 VRRP 脚本监控 Nginx 状态。

global_defs {
  notification_email { [email protected] }
  notification_email_from [email protected]
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id LVS_DEVEL
}

vrrp_script chk_nginx {
  script "/opt/nginx_pid.sh"
  interval 2
  weight 2
}

vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 51
  mcast_src_ip 192.168.1.103
  priority 102
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  track_script {
    chk_nginx
  }
  virtual_ipaddress {
    192.168.1.110
  }
}

备节点配置

备节点只需修改 state 为 BACKUP,priority 设为低于主节点的值(如 101),其余保持一致。

健康检查脚本

为了让 Keepalived 感知 Nginx 是否存活,我们需要编写一个监控脚本。当 Nginx 进程消失时,脚本会尝试重启;若重启失败,则降低 Keepalived 的权重或直接退出,触发 VIP 漂移。

vi /opt/nginx_pid.sh
#!/bin/bash
A=$(ps -C nginx --no-header | wc -l)
if [  -eq 0 ];
  /usr/local/nginx/sbin/nginx
   3
   [ $(ps -C nginx --no-header |  -l) -eq 0 ];
    killall keepalived
  

$A
then
sleep
if
wc
then
fi
fi

记得赋予执行权限:chmod +x /opt/nginx_pid.sh。

验证与测试

启动 Keepalived 后,使用 ip addr 查看虚拟 IP 绑定情况。正常情况下,只有主节点会显示 192.168.1.110。

模拟故障时,在主节点停止 Nginx 进程,观察几秒后,备节点应自动接管虚拟 IP,此时访问 VIP 依然能正常提供服务,从而实现无缝切换。

目录

  1. Nginx + Keepalived 高可用部署指南
  2. 环境准备与安装
  3. 配置文件详解
  4. 主节点配置
  5. 备节点配置
  6. 健康检查脚本
  7. 验证与测试
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python __init__.py 文件详解
  • C++ STL list 模拟实现:双向链表与迭代器封装
  • VSCode 中 Copilot 调用 Claude Agent 提示无效请求的解决方案
  • VSCode 中使用 Git 进行版本控制及同步至 Gitee
  • Python Web 框架对比与实战:Django、Flask 与 FastAPI
  • Android 设备 Termux 安装 llama.cpp 并启动 WebUI
  • Microsoft Visual C++ Redistributable 运行库安装与修复指南
  • 2024 第十六届蓝桥杯模拟赛第二期 Python 题解
  • IntelliJ IDEA 与 Git 本地及远程分支创建与合并指南
  • 树莓派 4 本地部署 ClawdBot:OCR/Whisper/vLLM 并发实战
  • 大模型幻觉问题治理:技术体系与工程实践
  • C++ 网络编程实战:基于 TCP 协议的简易计算器
  • MiniCPM-V-2_6 数字孪生:工厂实景图识别与 IoT 数据关联可视化
  • ROS 机器人开发实战:Linux 终端命令与基础环境搭建指南
  • WebRTC 远程屏幕共享:零配置实现浏览器直连桌面
  • Rust 内存管理与零成本抽象深度解析
  • 前端 math.js 快速上手入门教程
  • 算法实战:前缀和技巧解析——连续数组与矩阵区域和
  • C++ 引用、inline 与 nullptr 详解
  • RoboChallenge具身智能年报:4万次真机测试揭示模型真实能力与局限

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online