Nginx: 高可用和与虚拟路由冗余协议VRRP原理

news2024/12/24 10:02:16

Nginx 服务的高可用


1 )服务可用

  • 假定是这样一个最传统的一个CS模式的一个客户服务器模式
    • 这里有用户和一台服务器
    • 服务器可能是mysql, 也可能是webserver, 或其他服务器
  • 想实现服务可用的一个三要素
    • 1.1 ) server 需要公网的ip地址以及申请一个域名
    • 1.2 ) 需要服务软件和相关端口
    • 1.3 ) 存在对应的数据,如:
      • webserver需要css, html, js 等
      • sqlserver需要库和表

2 ) Nginx 高可用

  • 我的客户端通过互联网去访问远端的Nginx服务器
  • Nginx 服务器肯定是需要具备上面服务可用的三要素
    • Nginx有一个合法的公网ip地址和域名
    • Nginx软件可用,并且80,443等端口正常
    • Nginx资源文件访问正常
  • 如果这台Nginx在运行的过程中,并发量很大,存在服务器掉电等等一些不可控的故障,要实现我的业务连续性的这种高可用,应如何?
  • 保证Nginx宕机后,转移到另外一台Nginx服务器上,并且把IP地址配置到备用的Nginx上,同时启动相关端口,以及相同的数据文件,这样高可用就实现了
  • 这个难点在如何去保证现在Nginx上所配置的面向公网的这个IP地址能够实现在Nginx宕掉之后去自动的转移到另外一台Nginx上
  • 这个需要VRRP的虚拟路由冗余协议,本身能够解决这个问题
    • 能够实现宕机时将IP地址,从一台服务器自动的去转移到另外一台服务器上
    • 同时在这两台服务器之间,是有心跳信息监控的
    • 保证IP地址,总是能够配置到一台存活的Nginx服务器上
    • 从而去实现Nginx服务的高可用

3 )VRRP 原理

  • IP地址是如何实现在多台服务器之间进行转移的是比较难实现的
  • 在这里有一个叫VRRP协议本身它就是为解决这样一个问题而生

3.1 原理

  • 公司内网内,有很多员工都有自己对应的PC电脑
  • PC电脑想要通过一定的网关设备,gateway设备去访问对应的互联网
  • 不可能给每一台个人电脑都去申请一个公网的IP地址,公网IP地址是有是有成本的
  • 每一台PC电脑都去申请一个公网的IP地址,这个是不可能,也是不现实的
  • 因此,有这样一个解决方案,在我们的 gateway 上配置了两个IP地址
    • 里面有一个网卡会配置一个对应的内网内的一个IP地址
    • 这个内网IP地址,和我们所有PC上所配置的内网IP地址是在同一个网段的
    • 同时,gateway 还有另外一个网卡上配置一个公网的IP地址
    • 那 gateway 就能够实现和内网和公网相通
  • 这个时候PC电脑想要去访问公网或internet上的一些东西的时候
    • 比如说去浏览一些网页,查到一些文件的时候
    • 它可以将这个请求转发给这台 gateway
    • 之后,gateway可以将请求再通过另外一块网卡转发给 internet
    • 当报文回来的时候还是一样,也会首先到达gateway的一个公网的网卡上
    • 由 gateway再作为代理,去把这个数据报文传送给对应的PC电脑
    • 它整个过程是这样的
  • 对于我们这样一些网关设备,可能是路由器或者是其他一些设备,它都是一个单点的
  • 假如说,gateway网关设备宕掉后,其实内网内所有的PC都不能够再去访问对应的internet了
  • 这个时候,想要去解决网关设备(重要设备)的一个单点故障的时候,如何去解决呢?
  • 其实我们有这样一种思路, 可以给他找另外一台 gateway
  • 现在给了两台一模一样的设备,给这台设备也配置上一个对应的IP地址
    • 一个内网的IP地址,一个公网的IP地址
  • 但是有一个问题,因为我们这个 gateway 在这配置对应的内网的IP地址的时候
  • 内网的IP地址是不可以相同的,那对这种,如何去解决呢?
  • 不管在PC电脑上,需要去设置代理服务器的地址,还是通过广播的形式去请求对应gateway的IP地址
  • 不管哪一种方式来说,这个IP地址它只能有一个
  • 如何去实现两台gateway,对所有的PC电脑都有一个IP地址
  • 其实VRRP本身就能去实现这样一个功能, 两台gateway都有各自的IP地址但不提供给PC
  • 这两台 gateway 正常情况下只有一台是提供服务的,一个是master(提供服务),另一个是backup
  • 还有一个另外的IP地址,称之为 虚IP, 即:VIP, 比如:
    • VIP: 192.168.1.1
    • master gateway: 192.168.1.2
    • backup gateway: 192.168.1.3
  • 因为这个VIP它是可以在我们两个网关设备之间进行漂移的
  • 某一时刻,我的master的gateway在提供服务的时候,其实这个VIP地址是配置到对应的 master gateway上的
  • 其实这个VIP是真正对外提供服务的,也就是说,所有的PC电脑想要访问的时候,都需要将代理设置为对应的VIP
  • 但是这一切,他们之间,这个VIP在master和backup之间进行自动转移, 对我们的PC来说是透明的
  • 因此, 有这样一个场景,比如说在某一时刻,有两台网关设备,这个backup的网关设备,对外是不提供服务的
  • 某一个时刻,master的gateway 挂掉之后,这个VIP才会自动去漂移到我们这个对应的backup的gateway上
  • 这里,还有一个 vmark,为什么会有vmark这样一个地址呢?
  • 其实, 这个VIP地址是配置在我们的 master gateway上的。
  • MAC地址(物理地址)是跟网卡绑定的, 不同的网卡的MAC 地址肯定是不一样
  • 假如说VIP在这一时刻是配置在 master gateway上的
  • 这个时候,我对应的PC电脑去和 VIP 通信的时候,它会发ARP请求
  • 同时它得到的会是这个master gateway上的对应网卡的一个 MAC 地址信息
  • 这个时候, 我的master有故障, VIP转移到backup上,备用的网关上对应的网卡MAC地址
  • 肯定跟master的MAC地址,是不一样的,所以,在这需要有一个 VMAC
  • 也就是说, 这个VIP和VMAC,它对于所有的客户端来说都是一样的
  • 它是能够实现对应的 master和gateway上进行正确转移的
  • 整个过程是这样的
    • 在某一个时刻,我们的VIP和我们的VMAC都会配置到我们的master gateway上
    • 假如说,master gateway 在某一个时刻故障当掉了
    • 这个时候, VIP和VMAC 会一同的转移到 backup gateway 这个设备上
  • 对整个过程来说,master getway 和 backup gateway 两个配合的是天衣无缝的, 对外,他们就是一个整体
  • VRRP本身就是实现了这样一个能力,总结一下
    • 虚拟网关:有一个master和多个backup组成
    • Master 网关:实际承载报文转发的节点,主节点
    • Backup 网关:主节点故障号转移节点,备用节点
    • 虚拟IP地址:虚拟网关对外提供服务的IP地址
    • IP地址拥有者:真实提供服务的节点,通常为主节点
    • 虚拟MAC地址:回应 ARP 请求时使用虚拟MAC地址
    • master故障后,需要转移到哪一台backup,优先级如何定
    • 非抢占式:master挂掉又恢复,backup一直提供服务,不会回到master上
    • 抢占式:master修复上线后,从backup再次回到master
  • VRRP 原理是为了 KeepAlived 软件提供理论支持的
  • KeepAlived 软件实现了VRRP原理

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

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

相关文章

Vue3 进阶教程:一文详解 el-table 组件的二次封装技巧!

开发后台管理系统,在业务上接触的最多就是表单(输入)和表格(输出)了。对于使用 Vue 框架进行开发的同学来说,组件库 Element 是肯定会接触的,而其中的 el-table 和 el-form 更是管理系统中的常客…

华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体验跃级、面向中小企业和开发者打造的高品价比云服务产品。Flexus云服务器X实例是新一代面向中小企业…

MES系统如何实现产品追溯功能

MES系统(Manufacturing Execution System,制造执行系统)的产品追溯功能是现代制造业中不可或缺的一部分,它通过记录和分析生产过程中产生的数据,实现了对产品、原材料、设备等信息的追踪和溯源。以下是对MES系统产品追…

网络安全的历史

如今,网络安全几乎成为各大公司和利益相关者关注的焦点。但在早期,网络安全的概念非常模糊。 直到多年以后,由于网络攻击和危险实体威胁的频繁发生,网络安全的发展才受到重视。这些措施的发展成为了网络安全的演变。 网络安全起…

基于django框架下个人着装助理系统/基于python的服装服装搭配系统

摘要 随着科学技术的发展和人们生活质量的改善,人们对于着装的要求也会越来越高。为了能够更好的管理着装,个人着装助理系统被开发处理方便人们对着装的管理。 本个人着装助理系统采用编程语言Python,开源框架Django实现系统的架构&#xff…

分类任务实现模型集成代码模版

分类任务实现模型(投票式)集成代码模版 简介 本实验使用上一博客的深度学习分类模型训练代码模板-CSDN博客,自定义投票式集成,手动实现模型集成(投票法)的代码。最后通过tensorboard进行可视化&#xff0…

Java之初始泛型

1 包装类 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型。 1.1 基本数据类型和对应的包装类 基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoub…

RAG最佳实践:用 ElasticSearch 打造AI搜索系统与RAG 应用全流程详解!

前面一篇文章《RAG 向量数据库:掌握 Elasticsearch 作为向量数据库的终极指南》中,介绍了使用ElasticSerach作为向量数据的安装和使用指南。 今天这篇文章将介绍如何使用 Elasticsearch 搭建AI搜索系统和RAG应用系统。 Elasticsearch 搭建 AI 搜索系统 在 Elasticsearch 中…

游泳耳机哪个牌子的好?四大口碑精品游泳耳机专业推荐!

在追求健康生活的同时,游泳成为了许多人选择的锻炼方式。它不仅能够帮助人们塑造身材,还能有效缓解压力。而在游泳过程中,音乐的陪伴无疑能让人更加享受这段时光。因此,一款适合游泳时使用的耳机,成为了游泳爱好者们不…

java程序CUP持续飙高

1.top 2.定位进程中使用CPU最高的线程 top -Hp 70688 3.将线程ID转为十六进制 printf "0x%x\n" 28760 4.jstack工具跟踪堆栈定位代码 jstack 70688 | grep 0x7058 -A 10

尺度和位置敏感的红外小目标检测

Infrared Small Target Detection with Scale and Location Sensitivity 在本文中,着重于以更有效的损失和更简单的模型结构来提升检测性能。 问题一 红外小目标检测(IRSTD)一直由基于深度学习的方法主导。然而,这些方法主要集中…

python-春游

[题目描述] 老师带领同学们春游。已知班上有 N 位同学,每位同学有从 0 到 N−1 的唯一编号。到了集合时间,老师确认是否所有同学都到达了集合地点,就让同学们报出自己的编号。到达的同学都会报出自己的编号,不会报出别人的编号&am…

单链表应用

基于单链表实现通讯录项目 //Contact.c #define _CRT_SECURE_NO_WARNINGS 1 #include"contact.h" #include"list.h"//初始化通讯录 void InitContact(contact** con) {con NULL;} //添加通讯录数据 void AddContact(contact** con) {PeoInfo info;printf…

无主灯设计:吊顶之问与光影艺术的探索

在现代家居设计中,照明不仅仅是为了满足基本的照明需求,更是一种艺术和情感的表达。随着无主灯设计越来越受到人们的青睐,许多业主开始考虑一个问题:进行无主灯设计时,是否一定需要吊顶呢?本文将深入探讨这…

2017年系统架构师案例分析试题五

目录 案例 【题目】 【问题 1】(5 分) 【问题 2】(16 分) 【问题 3】(4 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】答案 相关推荐 案例 阅读以下关于 Web 系统架构设计的叙述,在答题纸上回答问题 1 至问题 3。 【题目】 某电子商务企业因发…

小波神经网络的时间序列的短时交通流量预测

小波神经网络的时间序列的短时交通流量预测 通过小波分析进行负荷序列分 解, 获得不同频率负荷分量规律 ; 由粒子群算法进行粒子群适应度排序 , 提升算法收敛速度和收敛能力 ; 为避免算法陷入局部 收敛性, 引入混沌理论来增强全局搜索能力 。 预测结果

linux 系统如何进行nfs(第五节)

网上的截图: 自己的操作: 首先是 在虚拟机中的操作。 然后是在开发板上的操作。 已经是没有问题了。

AI绘画【Stable Diffusion】抽卡必备!时间管理大师Agent Scheduler插件,一键设置任务,让你的休息时间充分利用起来!

大家好,我是灵魂画师向阳 相信大家在玩 Stable Diffusion 的时候一直有一个痛点,每次出图抽卡时都只能等待上一次抽卡结束,才能继续下一次抽卡; 特别是当我们想抽大量的卡来测试不同的模型,不同的参数的效果时&#…

大学生社团管理系统

一、项目概述 Hi,大家好,今天分享的项目是《大学生社团管理系统》。 随着校园文化的不断丰富,大学里各种社团越来越多,社团活动也越来越频繁,社团管理就显得繁琐,传统的人工管理方式比较麻烦,…