深入浅出 -- 系统架构之负载均衡Nginx实现高可用
一、Nginx的高可用
线上如果采用单个节点的方式部署Nginx,难免会出现天灾人祸,比如系统异常、程序宕机、服务器断电、机房爆炸、地球毁灭....哈哈哈,夸张了。但实际生产环境中确实存在隐患问题,由于Nginx作为整个系统的网关层接入外部流量,所以一旦Nginx宕机,最终就会导致整个系统不可用,这无疑对于用户的体验感是极差的,因此也得保障Nginx高可用的特性。
接下来则会通过
keepalived的VIP机制,实现Nginx的高可用。VIP并不是只会员的意思,而是指Virtual IP,即虚拟IP。
keepalived在之前单体架构开发时,是一个用的较为频繁的高可用技术,比如MySQL、Redis、MQ、Proxy、Tomcat等各处都会通过keepalived提供的VIP机制,实现单节点应用的高可用。
Keepalived+重启脚本+双机热备搭建
具体青请参考,在上篇《深入浅出 -- 系统架构之Keepalived搭建双机热备》中通过keepalived如何搭建了主从双机热备。
Nginx高可用性测试
经过上述步骤后,keepalived的VIP机制已经搭建成功,在上个阶段中主要做了几件事:
- 一、为部署
Nginx的机器挂载了VIP。 - 二、通过
keepalived搭建了主从双机热备。 - 三、通过
keepalived实现了Nginx宕机重启。
由于前面没有域名的原因,因此最初server_name配置的是当前机器的IP,所以需稍微更改一下nginx.conf的配置:
sever{listen 80;# 这里从机器的本地IP改为虚拟IPserver_name 192.168.12.111;# 如果这里配置的是域名,那么则将域名的映射配置改为虚拟IP
}
最后来实验一下效果:

在上述过程中,首先分别启动了
keepalived、nginx服务,然后通过手动停止nginx的方式模拟了Nginx宕机情况,过了片刻后再次查询后台进程,我们会发现nginx依旧存活。
从这个过程中不难发现,keepalived已经为我们实现了Nginx宕机后自动重启的功能,那么接着再模拟一下服务器出现故障时的情况:

在上述过程中,我们通过手动关闭
keepalived服务模拟了机器断电、硬件损坏等情况(因为机器断电等情况=主机中的keepalived进程消失),然后再次查询了一下本机的IP信息,很明显会看到VIP消失了!
现在再切换到另外一台机器:192.168.12.130来看看情况:

此刻我们会发现,在主机
192.168.12.129宕机后,VIP自动从主机飘移到了从机192.168.12.130上,而此时客户端的请求就最终会来到130这台机器的Nginx上。
最终,利用Keepalived对Nginx做了主从热备之后,无论是遇到线上宕机还是机房断电等各类故障时,都能够确保应用系统能够为用户提供7x24小时服务。
相关文章:
深入浅出 -- 系统架构之负载均衡Nginx实现高可用
一、Nginx的高可用 线上如果采用单个节点的方式部署Nginx,难免会出现天灾人祸,比如系统异常、程序宕机、服务器断电、机房爆炸、地球毁灭....哈哈哈,夸张了。但实际生产环境中确实存在隐患问题,由于Nginx作为整个系统的网关层接入…...
鲸鱼优化算法(Whale Optimization Algorithm)
注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 算法背景 鲸鱼优化算法(Whale Optimization Algorithm, WOA)是一种模拟鲸鱼捕食行为的优化算法。想象一下,你…...
C++内存管理new-delete大法及实现原理
目录 前言: 一:C语言中区域划分的回顾及各个变量存在的位置 1.经典例题 编辑2.C/C中内存区域的划分 二:C内存管理方式 new delete操作符 1.对于内置类型 2.对于自定义类型 三:operator new和operator delete函数 1…...
Spring WebFlux响应式实现WebFilter解决跨域问题
WebFilter 是 Spring Framework 中用于处理 Web 请求的过滤器接口,它是在基于 Servlet 3.0 规范的基础上,为了支持响应式编程模型而引入的。与传统的 Servlet 过滤器相似,WebFilter 也允许开发者对进入的请求和返回的响应进行拦截、修改或者增…...
第4章 Redis,一站式高性能存储方案,笔记问题
点赞具体要实现功能有哪些? 可以点赞的地方:对帖子点赞,对评论点赞点一次是点赞,再点一次是取消赞统计点赞的数量(计数,string),帖子被点赞的数量,某个用户被点赞的数量…...
UVA540 Team Queue 解题报告
UVA540 Team Queue 解题报告 题目链接 https://vjudge.net/problem/UVA-540 题目大意 有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到…...
基础贪心问题
1.部分背包问题 #include<iostream> #include<algorithm> using namespace std; const int N 110; double v[N], w[N]; pair<double, int> a[N]; int n, m;int main(){cin>>n>>m;double x, y;for(int i 0; i < n; i){cin>>v[i]>&g…...
day13 java final 类和对象的初始化执行顺序
final [面试题]请简述final关键字final修饰类(最终的类)-太监类:该类不能被继承。(比如:String StringBuilder,....) final修饰方法(最终的方法):不能被重写 final修饰的变量 :值不…...
蓝桥杯gcd汇总
gcd3014 问题描述 小明和小红是一对恋人,他们相爱已经三年了,在今年的七夕节,小明准备给小红一个特殊的礼物。他想要送给小红一些数字,让小红算出有多少对正整数 (a,b) 满足以下条件: clcm(a,b)−dgcd(a,b)x其中 c,…...
极市平台 | 综述:一文详解50多种多模态图像融合方法
本文来源公众号“极市平台”,仅用于学术分享,侵权删,干货满满。 原文链接:综述:一文详解50多种多模态图像融合方法 0 极市导读 本工作总结了50篇论文中Lidar和camera的多模态融合的一些概念方法。笔者结合原文以及自…...
数据结构系列-队列的结构和队列的实现
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 队列 队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除删除数据操作的特殊线性表,队列具有先进先出FIFO,…...
MySQL——查询数据的处理
一、并列 连接两个数据列的值,并进行输出的格式化处理(显示为一种统一的格式) concat( 列 1 格式化字 符 ) mysql> select concat(vend_name, vend_country) from vendors; --------------------------------- | concat(vend_name, ve…...
【机器学习300问】59、计算图是如何帮助人们理解反向传播的?
在学习神经网络的时候,势必会学到误差反向传播,它对于神经网络的意义极其重大,它是训练多层前馈神经网络的核心算法,也是机器学习和深度学习领域中最为重要的算法之一。要正确理解误差反向传播,不妨借助一个工具——计…...
ctfshow web入门 php特性 web108--web115
web108 ereg函数相当于而preg_match()函数 ereg函数的漏洞:00截断。%00截断及遇到%00则默认为字符串的结束 strrev函数就是把字符串倒过来 就是说intval处理倒过来的传参c0x36d(877)?ca%00778 web109 异常处理类 通过异常处理类Excepti…...
京东API接口采集商品详情数据(测试入口如下)
京东API接口采集商品详情数据 请求示例,API接口接入Anzexi58 在当今数字化时代,电商平台的API接口成为了获取商品详情数据的重要途径之一。作为中国最大的自营式电商企业,京东提供了丰富的API接口供开发者使用,以便获取京东平台上…...
Mac brew 安装软件
Mac brew 安装软件 homebrew 速度慢 将brew 切换到国内镜像源 # 速度一般 # 步骤一 cd "$(brew --repo)" git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git# 步骤二 cd "$(brew --repo)/Library/Taps/homebrew/homebr…...
【顶部距离计算】计算元素顶部与浏览器顶部的距离
在开发中,我们常常需要计算某个元素顶部与浏览器视口顶部的距离,只需要一个方法即可计算 解决:使用getBoundingClientRect()方法 代码示例: 接收一个参数element表示需要计算的元素 // 计算该元素的顶部距离浏览器的顶部距离 c…...
守护人类健康:人工智能赋能医疗领域创新应用
编者按:每年的4月7日是世界卫生日,又称世界健康日,旨在引起世界各国人民对卫生、健康工作的关注,提高人们对卫生领域的素质和认识,强调健康对于劳动创造和幸福生活的重要性。那么,如果医疗技术能够更加智能…...
linux常用指令(一)——cat、more、cp
cat命令: 用于查询看文件内容 语法:cat linux路径 参数必填,表示要查看文件的目录的路径,(相对,绝对,特殊路径符都可以使用) more命令: 用于查看文件内容,…...
基于RTThread的学习(三):正点原子潘多拉 QSPI 通信 W25Q128 实验
1、基于芯片创建工程 2、QSPI配置 2.1、RTThing_setting 设置组件 2.2、配置board.h 文件 2.3、cubemx生成QSPI的硬件初始化代码;HAL_QSPI_MapInit; 这里注意:你所买的开发板对应的qspi 连接的是否是cubemx 上边显示的,如果不是你需要将引脚…...
PHP中HTML标签过滤的5种有效方法
什么是XSS攻击? XSS(Cross-Site Scripting)攻击是指攻击者在网页中插入恶意脚本,当其他用户浏览该页面时,恶意脚本会被执行,从而盗取用户信息、会话令牌或进行其他恶意操作。 方法一:htmlspeci…...
深夜调车的时候突然发现,Apollo的泊车轨迹优化藏着不少“骚操作“。咱们今天不聊虚的,直接扒开代码看三个核心模块怎么打架...哦不,怎么配合的
apollo 泊车轨迹优化代码 hybridastariaps平滑优化obca平滑优化 第一个图是matlab绘制 后面的图是程序用sdl库绘制先看Hybrid A*这个愣头青。这货生成的轨迹就像刚拿驾照的新手,能避开障碍物但轨迹拧巴得很。看看它扩展节点的代码片段: Node3D* expand(…...
OpenClaw错误排查大全:Phi-3-vision-128k-instruct对接常见问题
OpenClaw错误排查大全:Phi-3-vision-128k-instruct对接常见问题 1. 问题背景与准备工具 上周在尝试用OpenClaw对接Phi-3-vision-128k-instruct模型时,我遇到了各种稀奇古怪的问题。从连接超时到图片解析失败,整个过程就像在玩技术版的"…...
域名 WHOIS 信息对于 SEO 优化有什么作用
域名 WHOIS 信息对于 SEO 优化有什么作用 在当今互联网时代,搜索引擎优化(SEO)已经成为了每个网站运营者必须掌握的技能之一。其中,域名 WHOIS 信息也扮演了一定的角色。许多人可能对这一点并不十分了解,本文将详细探…...
差分放大电路实战:从热电偶信号处理到医疗设备应用
差分放大电路实战:从热电偶信号处理到医疗设备应用 在工业测量和医疗电子领域,微弱信号的精确采集始终是工程师面临的挑战。想象一下:当热电偶输出的50μV温差信号淹没在2V的工频干扰中,或者心电图电极捕捉到的1mV心电信号与10V的…...
# 系列文10:突破Activiti限制!政务工作流任意流转,支持跳退
系列文10:突破Activiti限制!政务工作流任意流转,支持跳退回退 非科班野生程序员,深耕政务信息化20年,这套自研Java Web框架支撑过省级新农保、全国首例跨省医保结算等核心民生系统,18年稳定运行至今。本系…...
No data to show!vtune分析程序性能有结果无数据
使用vtune分析程序在保证程序复杂度能被采集数据,但是result页面没有数据显示,只有no data to show, the data is not sufficient.最后找到原因是使用的编译器vs的符号解释器与vtune有冲突,改用vs code成功出数据。为了让vtune成功显示数据用…...
PCBA加工中极性元件的识别与防错指南
1. 极性元件在PCBA加工中的重要性在PCBA(印刷电路板组装)加工过程中,极性元件就像电路中的"单行道"——方向错了,整个系统就会瘫痪。作为一名有十年经验的电子工程师,我见过太多因为极性元件反向导致的批量性…...
Matlab Simulink四分之一主动悬架:PID与模糊PID控制器在车身加速度上的对比研究
项目:Matlab Simulink四分之一主动悬架,针对车身加速度的PID和模糊Pid控制器对比 详情:根据汽车的半主动悬架系统,通过Simulink建立二自由度1/4车辆简化模型以及路面激励模型,以车身垂直加速度为控制对象,悬…...
STM32 OLED三级菜单框架设计与实现
1. STM32 OLED菜单界面框架设计概述在嵌入式设备开发中,人机交互界面是连接用户与硬件的重要桥梁。基于STM32微控制器和OLED显示屏构建的菜单系统,因其低成本、低功耗和高对比度显示特性,在工业控制、智能家居和便携设备等领域广泛应用。本文…...
