Nginx加Keepalived实现高可用

news/2025/2/22 9:19:22/文章来源:https://www.cnblogs.com/lihi9998/p/18730561

Nginx结合Keepalived实现高可用是一种流行的网络服务解决方案,旨在通过构建冗余和故障转移机制来减少单点故障带来的风险,确保服务的持续运行。以下是一步步指南,它将帮助我们理解整个设置的原理和具体配置过程。

原理简介

Nginx是一种高性能的Web服务器和反向代理服务器,能够处理大量的并发连接,而Keepalived则是一款基于VRRP(虚拟路由器冗余协议)协议的软件,用于IP地址的热备份。结合使用这两种技术可以实现无缝的故障切换和负载均衡。

基本概念涉及主备架构,其中两台或多台服务器配置为一主多备。在主服务器工作正常时,它处理所有请求;如果主服务器出现故障,备用服务器将接管IP地址和服务,继续提供服务,从而实现高可用性。

步骤解析

  1. 基础配置

    • 首先要有两台服务器,它们应当配置好Nginx服务,并确保Nginx在这些节点上工作正常。
  2. 安装Keepalived

    • 在每个Nginx服务器上安装Keepalived。可以使用包管理器来安装,例如Debian/Ubuntu上的 apt-get install keepalived命令,或CentOS上的 yum install keepalived
  3. 配置Keepalived

    • 主服务器和备用服务器的Keepalived配置会有所不同。配置文件通常位于 /etc/keepalived/keepalived.conf
    • 在主服务器上,将其配置为VRRP的MASTER,并设置一个较高的优先级。
    • 在备用服务器上,配置为VRRP的BACKUP,并设置一个较低的优先级。
    • 指定一个虚拟IP(VIP)地址,这个VIP将在主服务器和备用服务器之间漂移。
    • 设置VRRP实例以及相关的健康检查脚本,这些脚本用于检测Nginx服务状态,以便Keepalived可以在故障情况下自动切换。
  4. 脚本配置

    • 创建健康检查脚本,确保在Nginx服务停止运行时Keepalived能够察觉这一情况。
    • 脚本会定期检查本地的Nginx进程或者通过发送请求到Nginx,看是否可以得到响应。
  5. 启动服务

    • 对Keepalived进行配置后,启动服务,并确保它可以在系统启动时自动运行。
  6. 测试验证

    • 在主服务器上制造故障场景,看看备用服务器是否能够接管服务。通常这一过程应涉及到暂停主服务器上的Keepalived服务或者直接重启主服务器。
    • 检查VIP是否已成功移至备用服务器,并且服务是否还在继续工作。
  7. 日常运维

    • 进行日常监控和日志审查,以确保系统工作正常,同时为不断优化配置留出空间。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4. MySQL 逻辑架构说明

4. MySQL 逻辑架构说明 @目录4. MySQL 逻辑架构说明1. 逻辑架构剖析1.1 服务器处理客户端请求1.2 Connectors(连接器)1.3 第1层:连接层1.4 第2层:服务层1.5 第3层:引擎层1.6 存储层2. SQL执行流程2.1 MySQL 中的 SQL 执行流程2.2 MySQL8中SQL执行原理最后:1. 逻辑架构剖析…

无线充电

https://baijiahao.baidu.com/s?id=1809048563048631142&wfr=spider&for=pc 工信部放宽无线充电设备频率和功率限制,安卓厂商或加大无线充电功率,苹果则因Qi2.0标准频率与航空无线电导航业务冲突而调整。无线充电技术发展迅速,但仍需解决充电发热等问题。咱也就是说…

陪玩平台搭建,利用Redis实现多级缓存

陪玩平台搭建,利用Redis实现多级缓存如何使用redis6客户端缓存前置条件: redis服务端版本必须是>=6。lettuce版本>=6 目前java的redis客户端找了一圈,貌似只有lettuce 6支持,其他客户端估计后期会支持1、项目中pom引入lettuce GAV<dependency><groupId>i…

《DeepSeek中小学生/家长使用手册》让因材施教不再是选择题!

最近有受到粉丝私信如何在小初高的学习中使用DeepSeek来提供成绩;确实,随着教育改革的推进,学习内容日益丰富且难度加大,许多家长在辅导孩子和沟通交流方面感到困扰。无论是学生还是家长,找到合适的学习与辅导方式至关重要。尽管市面上有多种培训机构和学习工具可供选择,…

读DAMA数据管理知识体系指南01数据管理(上)

数据管理对企业至关重要,需规划、协作和领导力,确保数据质量和隐私,支撑企业决策和运营,数据是组织资产,需全生命周期管理,高质量数据带来竞争优势。1. 数据管理 1.1. 数据是一种至关重要的企业资产1.1.1. 数据和信息能使他们洞察顾客、产品和服务,帮助企业创新并实现其…

推荐几款开源且免费的 .NET MAUI 组件库

前言 今天大姚给大家推荐 3 款开源且免费的 .NET MAUI 组件库。 .NET MAUI介绍 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。.…

dotnet 在 VisualStudio 一键 F5 启动调试 Roslyn 分析器项目

本文将告诉大家如何在 VisualStudio 里面,一键使用习惯的 F5 键进行快速构建和启动调试 Roslyn 分析器项目在 dotnet 里面编写的 SourceGenerator 源代码生成器,或者是分析器时,可能编写的逻辑比较复杂,期望制作一个项目进行调试。或者是原本分析器能够跑得好好的,莫名就在…

dotnet OpenXML 已知问题 设置 0x0001 等 XML 不合法字符给到标题将在保存时抛出异常

本文记录 OpenXML 的已知问题,在 `PackageProperties.Title` 等属性上设置字符串包含如 Unicode 编码为 0x0001 等 XML 不合法字符,将在保存写入文件时,抛出 ArgumentException 异常此问题报告给了官方: https://github.com/dotnet/Open-XML-SDK/issues/1874 最简复现代码:…

区块链模型原理入门学习1——简易模型

区块链模型原理入门学习1——简易模型 最近抽空学习一下区块链的设计原理,正在搭建一个非常简易的模型,上生产的模型肯定复杂的多,不过学习还是由简入难,逐步深入才行,一口吃不成胖子。我使用的是C#编写的。区块链的特点:1.分布式记账,去中心化。2.挖矿是按照平台规则通…

python小技巧 收集

2的三次方:2**37除以3的整数商:7//3

VUE3 + Vite 编译部署后不报错,但显示空白页面

1、在 vite.config.js 中添加(ts版本则为 vite.config.ts)base: ./ 2、将路由模式改为 hash 模式history: createWebHashHistory() 3、注意检查路由文件需要由函数导入 (我的是未使用箭头函数导入,本地运行正常,但部署后无法正确加载路由,也不报错,找死人。。。)

今日排错

上图错误的解决办法:application.yml中的mybatis plus配置中去掉configlocation即可。