当前位置: 首页 > news >正文

【Nginx + Keepalived 实现高可用的负载均衡架构】

使用 Nginx + Keepalived 可以实现高可用的负载均衡架构,确保在某个 Nginx 节点故障时,自动将流量转移到备用节点。以下是详细的实现步骤:


1. 架构概述

  • Nginx:作为负载均衡器,将流量分发到后端服务器。
  • Keepalived:实现虚拟 IP(VIP)的故障转移,确保高可用性。
  • VIP(Virtual IP):客户端通过该 IP 访问服务,Keepalived 负责将 VIP 绑定到主节点或备用节点。

2. 环境准备

  • 两台服务器(主节点和备用节点),均安装 Nginx 和 Keepalived。
  • 确保两台服务器之间可以互相通信。
  • 确保 VIP 未被其他服务占用。

3. 安装 Nginx

在两台服务器上安装 Nginx:

# Ubuntu/Debian
sudo apt update
sudo apt install nginx# CentOS/RHEL
sudo yum install nginx

启动并启用 Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

4. 安装 Keepalived

在两台服务器上安装 Keepalived:

# Ubuntu/Debian
sudo apt install keepalived# CentOS/RHEL
sudo yum install keepalived

启动并启用 Keepalived:

sudo systemctl start keepalived
sudo systemctl enable keepalived

5. 配置 Keepalived

5.1 主节点配置

编辑 /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {state MASTER           # 主节点interface eth0         # 网卡名称(根据实际情况修改)virtual_router_id 51   # 虚拟路由 ID,主备节点必须相同priority 100           # 优先级,主节点高于备用节点advert_int 1           # 检查间隔(秒)authentication {auth_type PASSauth_pass 1234     # 认证密码,主备节点必须相同}virtual_ipaddress {192.168.1.100      # 虚拟 IP(VIP)}
}

5.2 备用节点配置

编辑 /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {state BACKUP           # 备用节点interface eth0         # 网卡名称(根据实际情况修改)virtual_router_id 51   # 虚拟路由 ID,主备节点必须相同priority 90            # 优先级,低于主节点advert_int 1           # 检查间隔(秒)authentication {auth_type PASSauth_pass 1234     # 认证密码,主备节点必须相同}virtual_ipaddress {192.168.1.100      # 虚拟 IP(VIP)}
}

6. 配置 Nginx

在两台服务器上配置 Nginx,确保负载均衡功能正常。例如:

http {upstream backend {server 192.168.1.101;  # 后端服务器 1server 192.168.1.102;  # 后端服务器 2}server {listen 80;location / {proxy_pass http://backend;}}
}

7. 启动服务

7.1 启动 Keepalived

在主节点和备用节点上启动 Keepalived:

sudo systemctl restart keepalived

7.2 检查 VIP 绑定

在主节点上检查 VIP 是否绑定:

ip addr show eth0

输出示例:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000inet 192.168.1.100/32 scope global eth0valid_lft forever preferred_lft forever

8. 测试故障转移

8.1 停止主节点的 Keepalived

在主节点上停止 Keepalived:

sudo systemctl stop keepalived

8.2 检查备用节点的 VIP

在备用节点上检查 VIP 是否绑定:

ip addr show eth0

8.3 恢复主节点

在主节点上重新启动 Keepalived:

sudo systemctl start keepalived

VIP 应重新绑定到主节点。


9. 日志与监控

9.1 查看 Keepalived 日志

journalctl -u keepalived

9.2 监控 Nginx 状态

确保 Nginx 正常运行:

systemctl status nginx

10. 总结

通过 Nginx + Keepalived 实现故障自动转移的步骤如下:

  1. 在两台服务器上安装 Nginx 和 Keepalived。
  2. 配置 Keepalived 的主备节点,设置 VIP。
  3. 配置 Nginx 实现负载均衡。
  4. 测试故障转移功能,确保高可用性。

这种架构可以确保在单点故障时,服务仍然可用,适合生产环境中的高可用需求。

相关文章:

【Nginx + Keepalived 实现高可用的负载均衡架构】

使用 Nginx Keepalived 可以实现高可用的负载均衡架构&#xff0c;确保在某个 Nginx 节点故障时&#xff0c;自动将流量转移到备用节点。以下是详细的实现步骤&#xff1a; 1. 架构概述 Nginx&#xff1a;作为负载均衡器&#xff0c;将流量分发到后端服务器。Keepalived&…...

使用外骨骼灵活远程控制协作机器人案例

外骨骼控制器采用可调节结构&#xff0c;简化了机器人编程&#xff0c;使协作机器人 FR3 的远程控制变得容易。 一、引言 在开发机器人手臂或双臂系统的应用程序时&#xff0c;经常会遇到以下挑战&#xff1a; 1. 使用拖动和示教进行定位的困难&#xff1a;拖动和示教功能通常…...

Centos Stream 10 根目录下的文件夹结构

/ ├── bin -> usr/bin ├── boot ├── dev ├── etc ├── home ├── lib -> usr/lib ├── lib64 -> usr/lib64 ├── lostfound ├── media ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin -> usr/sbin ├── srv ├─…...

python连点器

要实现一个用于抖音点赞的鼠标连点工具&#xff0c;可以通过编程或现有软件实现。以下是两种常见方法&#xff08;但请注意&#xff1a;频繁自动化操作可能违反平台规则&#xff0c;需谨慎使用&#xff09;&#xff1a; 方法 1&#xff1a;使用现成工具&#xff08;如 AutoClic…...

STM32G474--Whetstone程序移植(单精度)笔记

1 准备基本工程代码 参考这篇笔记从我的仓库中选择合适的基本工程&#xff0c;进行程序移植。这里我用的是stm32g474的基本工程。 使用git clone一个指定文件或者目录 2 移植程序 2.1 修改Whetstone.c 主要修改原本变量定义的类型&#xff0c;以及函数接口全部更换为单精度…...

Spring Boot 3.4 中 MockMvcTester 的新特性解析

引言 在 Spring Boot 3.4 版本中&#xff0c;引入了一个全新的 MockMvcTester 类&#xff0c;使 MockMvc 测试可以直接支持 AssertJ 断言。本文将深入探讨这一新特性&#xff0c;分析它如何优化 MockMvc 测试并提升测试的可读性。 Spring MVC 示例 为了演示 MockMvcTester 的…...

java 读取sq3所有表数据到objectNode

1.实现效果&#xff1a;将sq3中所有表的所有字段读到objectNode 对象中&#xff0c;兼容后期表字段增删情况&#xff0c;数据组织形式如下图所示&#xff1a; 代码截图&#xff1a; 代码如下&#xff1a; package com.xxx.check.util;import java.sql.*; import java.util.Arr…...

网络计算机的五个组成部分

单个计算机是无法进行通信的。所以需要借助网络。 下面介绍一些在网络里常见的设备。 一、服务器 服务器是在网络环境中提供计算能力并运行软件应用程序的特定IT设备 它在网络中为其他客户机&#xff08;如个人计算机、智能手机、ATM机等终端设备&#xff09;提供计算或者应用…...

jakarta EE学习笔记-个人笔记

WebServlet注解&#xff1a;声明一个类为Servlet Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface WebServlet {// 指定Servlet的影子String name() default ""; // 匹配地址映射(URL)String[] value() default {};// …...

vue3-响应式 toRefs

在Vue 3中&#xff0c;toRefs是一个非常有用的组合式API&#xff08;Composition API&#xff09;函数&#xff0c;它主要用于将响应式对象&#xff08;通常是由reactive创建的对象&#xff09;转换为单独的响应式引用对象。这样做的好处是可以将这些响应式引用解构出来&#x…...

学习threejs,使用Lensflare模拟镜头眩光

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.Lensflare 二、&…...

redis高级数据结构布隆过滤器

文章目录 背景什么是布隆过滤器Redis 中的布隆过滤器布隆过滤器使用注意事项实现原理空间占用估计 背景 我们在使用新闻客户端看新闻时&#xff0c;它会给我们不停地推荐新的内容&#xff0c;它每次推荐时要去重&#xff0c;去掉那些已经看过的内容。问题来了&#xff0c;新闻…...

mysql 5.7安装

基础环境&#xff1a;centos7.9 创建日志存放目录 mkdir -p /opt/supervisor/log安装相关工具 yum install -y perl net-tools numactl gcc python-devel配置yum源 sudo vim /etc/yum.repos.d/mysql-community.repo [mysql-connectors-community] nameMySQL Connectors Com…...

Golang:精通sync/atomic 包的Atomic 操作

在本指南中&#xff0c;我们将探索sync/atomic包的细节&#xff0c;展示如何编写更安全、更高效的并发代码。无论你是经验丰富的Gopher还是刚刚起步&#xff0c;你都会发现有价值的见解来提升Go编程技能。让我们一起开启原子运算的力量吧&#xff01; 理解Go中的原子操作 在快…...

微信小程序如何使用decimal计算金额

第三方库地址&#xff1a;GitHub - MikeMcl/decimal.js: An arbitrary-precision Decimal type for JavaScript 之前都是api接口走后端计算&#xff0c;偶尔发现这个库也不错&#xff0c;计算简单&#xff0c;目前发现比较准确 上代码 导入js import Decimal from ../../uti…...

最新Modular公司之MAX和Mojo作者 克里斯·拉特纳简介

Chris Lattner&#xff08;克里斯拉特纳&#xff09; 是一位著名的计算机科学家和软件工程师&#xff0c;以其在编程语言、编译器技术和软件开发工具领域的贡献而闻名。以下是关于他的详细介绍&#xff1a; 1. 主要成就 &#xff08;1&#xff09;LLVM 项目的创始人 Chris La…...

Redis数据库篇 -- Pipeline

一. 什么是Pipeline 在传统的请求-响应模式中&#xff0c;客户端与服务器之间的通信流程如下&#xff1a; 客户端发送一个命令到服务器。服务器接收命令并执行。服务器将执行结果返回给客户端。客户端接收结果后&#xff0c;发送下一个命令 在这种传统的模式下&#xff0c;…...

爬虫自动化(DrissionPage)

目录 ?一.介绍: 下载DrissionPage,还是我们熟悉的pip&#xff1a; 环境准备&#xff1a; ?二.基本代码&#xff1a; 它对于的导包和类使用&#xff1a; 窗口的设置&#xff1a; 和获取的页面的滑动&#xff1a; 3.进一步认识DrissionPage&#xff1a; 浏览器可以多开…...

常见string库中的函数(C语言超详细)

文章目录 strcspnstrcpystrncpystrcatstrncatstrcmpstrncmpstrchrstrrchrstrstrstrtokstrlenstrnlen strcspn 原型: size_t strcspn(const char *str1, const char *str2);功能&#xff1a; strcspn 会扫描 str1&#xff0c;并返回一个整数&#xff0c;表示 str1 中第一个匹配…...

单例模式几种实现

静态内部类holder实现&#xff08;推荐&#xff09; public class UniqueIdGenerator {public static final UniqueIdGenerator INSTANCE Holder.INSTANCE;// Private holder class for lazy initializationprivate static class Holder {static final UniqueIdGenerator INS…...

AvrLib-fork:面向AVR的C++14零开销硬件抽象库

1. 项目概述AvrLib-fork 是一个面向 AVR 微控制器平台的高度类型安全、现代 C&#xff08;C14 兼容&#xff09;嵌入式库&#xff0c;专为 PlatformIO 生态系统深度优化设计。它并非 Arduino Core 的简单封装&#xff0c;而是一套从底层硬件抽象出发、以零开销抽象&#xff08;…...

OpenClaw备份恢复指南:ollama-QwQ-32B模型与技能迁移方案

OpenClaw备份恢复指南&#xff1a;ollama-QwQ-32B模型与技能迁移方案 1. 为什么需要备份恢复方案 上周我的主力开发机突然硬盘故障&#xff0c;导致整个OpenClaw环境丢失。最痛苦的不是重装软件&#xff0c;而是那些精心调教过的技能配置和任务历史记录全部归零。这次经历让我…...

轻松破解游戏资源加密难题:RPG Maker Decrypter使用指南

轻松破解游戏资源加密难题&#xff1a;RPG Maker Decrypter使用指南 【免费下载链接】RPGMakerDecrypter Tool for extracting RPG Maker XP, VX and VX Ace encrypted archives. 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerDecrypter 直面游戏资源解密痛点 …...

C#搞CV别再跪了!OpenCVSharp的SIFT/SURF实现:我熬3夜踩5个坑,吐血整理保姆级代码

&#x1f32a;️ 一、先泼冰水&#xff1a;SIFT/SURF的“专利坟场”&#xff0c;别往里跳&#xff01;&#xff08;血泪预警&#xff09; ⚠️ 重点敲黑板&#xff1a; SURF已凉透&#xff1a;OpenCV 4.5.0 彻底移除&#xff01;别再搜“怎么用SURF”&#xff0c;纯属浪费生命&…...

用74ls10和74ls20与非门搭建四人表决器:从真值表到电路图的完整设计流程

用74LS10和74LS20与非门搭建四人表决器&#xff1a;从真值表到电路图的完整设计流程 在数字电路设计中&#xff0c;表决器是一个经典的教学案例&#xff0c;它不仅能帮助理解组合逻辑电路的基本原理&#xff0c;还能锻炼从理论到实践的完整设计能力。本文将手把手带你用74LS10…...

毕业季、返修季、投稿季:SCI论文润色,到底能不能提高接收率?

“SCI论文如果先润色&#xff0c;再投稿&#xff0c;是不是更容易被接收&#xff1f;”这个问题&#xff0c;真的每年到了这个时间点都会高频出现。尤其是3月底到4月初&#xff0c;很多同学刚从基金申请、毕业论文、返修修改的高压节奏里缓过来&#xff0c;马上又进入下一轮“赶…...

手把手教你用Python+AI大模型,把Yapi接口文档变成自动化测试脚本(附避坑指南)

用Python与大模型实现Yapi接口自动化测试的工程化实践 在中小型技术团队中&#xff0c;接口测试往往是质量保障的薄弱环节。传统手工编写测试用例的方式不仅耗时耗力&#xff0c;更难以应对快速迭代的开发节奏。本文将分享如何利用Python生态与AI大模型能力&#xff0c;将Yapi平…...

Axure RP全版本界面本地化:从问题诊断到安全部署的完整指南

Axure RP全版本界面本地化&#xff1a;从问题诊断到安全部署的完整指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn …...

OpenOCD配置文件进阶指南:手把手教你定制STM32F0x的swj-dp.tcl脚本

OpenOCD深度定制&#xff1a;STM32F0x调试接口脚本开发实战 嵌入式开发中&#xff0c;调试工具的灵活配置往往决定着开发效率。对于STM32F0x系列芯片而言&#xff0c;OpenOCD作为开源调试工具链的核心组件&#xff0c;其配置文件的可定制性为开发者提供了极大的灵活性。本文将深…...

PathOfBuilding:颠覆式离线构筑计算器如何精准解决流放之路角色规划难题

PathOfBuilding&#xff1a;颠覆式离线构筑计算器如何精准解决流放之路角色规划难题 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/gh_mirrors/pat/PathOfBuilding 在《流放之路》的复杂世界中&#xff0c;…...