Nginx 负载均衡及其高可用

优质博文:IT-BLOG-CN

负载均衡(Load Balance): 意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其他任务服务器等,从而共同完成工作任务。负载均衡建立在现有的网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的宽带、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

一、配置负载均衡

当网站访问量非常大时,一台服务器已经不够用了(因为网站越来越慢)。于是将相同的应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。架构图:Web层的负载均衡通过Nginx来实现,服务层的负载均衡一般通过zookeeper来实现。

【1】配置conf/nginx.conf文件,将多个Tomcat地址配置在upstream属性中:

#可以用于配置负载均衡
upstream proxy_test {
	server 192.168.88.130:8080;
	server 192.168.88.130:8989;
}

server {
	listen       80;
	server_name  virtual.test.com;

	location / {
		#通过反向代理,将请求转发给配置的负载均衡中
		proxy_pass   http://proxy_test;
		index  index.html;
	}
}

【2】通过访问http://virtual.test.com/虚拟域名(需要配置本机的HOSTS文件),测试Nginx的负载均衡。

● 第一次请求,结果展示:

● 第二次请求,结果展示:

二、属性值配置

配置中weightmax_failsfail_timeout等可选属性值配置

upstream proxy_test {
	server 192.168.88.130:8080 weight=1 max_fails=2 fail_timeout=10s;
	server 192.168.88.130:8989 weight=2 max_fails=2 fail_timeout=10s;
}

  ● weightweigth参数表示权值,权值越高被分配到的几率越大(例如:上述中的权重分配,通常访问8989两次后才会访问一次8080,从而实现对于性能好的服务器理应承担更多的压力)。
  ● max_failsfail_timeout:用于判断后端节点状态(例如:如上配置表明如果后端节点10秒内出现2次不可用情况,判定节点不可用。判定不可用后10秒内请求不会转发到此节点,直到10秒后重新检测节点健康情况)既在单位周期为fail_timeout设置的时间,中达到max_fails次数,这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。如果成功,将恢复之前的轮询方式,如果不可用将在下一个周期(fail_timeout)再试一次。默认:fail_timeout10s,max_fails1次。在两个节点都可用的情况下,突然有一个节点挂掉,客户端请求过来后哪怕请求到了不可用的节点,此次请求也不会失败,因为Nginx会把此次请求转发到另外一个可用节点,再把结果返回给客户端。当一个节点挂掉,Nginx不知道节点是否恢复的时候,会把客户端的请求同时转发到两个节点,判断节点健康情况。

三、高可用

Nginx作为负载均衡器,所有的请求都到Nginx,可见Nginx处于非常重点的位置,如果Nginx服务器宕机后端web服务将无法提供服务,影响严重。

为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用Hight Availabillty监控系统,通过传送诸如 I am alive这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供负载均衡服务;当备份管理器又从主服务器接收到I am alive这样的信息时,它就释放服务IP地址,这样主服务器就开始再次提供负载均衡服务。可以通过如下技术实现检测功能:

keepalived:用于集群管理,保证集群搞可用的一个服务软件,用来防止单点故障。Keepalived的作用是检测Web服务器的状态,如果有一台服务器死机或工作出现故障,Keepalived的作用是检测到,并将有故障的web服务器从系统中剔除,当web服务器正常工作后Keepalived自动将 web服务器加入到服务器群中,这些工作自动完成,无需人工干涉,需要人工做的是修复故障的web服务器。keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backupmaster上面有一个对外提供服务的vipVIP = Virtual IPAddress,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为 master宕掉了,这时就需要根据VRRP的优先级来选举一个backupmaster。这样的话就可以保证路由器的高可用了。

keepalived主要有三个模块,分别是corecheckVRRPcore模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试官问 : SimpleDateFormat 不是线程安全的,你有了解过吗?

前言 金三银四又有战况: 我们的看官,不能白白牺牲! 现在,立刻,马上,跟我开始复现 ! 开始看我源码分析! 开始了解怎么解决! 正文 复现代码 多线程操作使用SimpleDateForma…

ChatGPT的平替来了?一文总结 ChatGPT 的开源平替,你值得拥有

文章目录【AIGC精选】总结 ChatGPT 的开源平替,你值得拥有1.斯坦福发布 Alpaca 7B,性能匹敌 GPT-3.52.弥补斯坦福 Alpaca 中文短板,中文大模型 BELLE 开源3.国产AI大模型 ChatGLM-6B 开启内测4.中文 Alpaca 模型 Luotuo 开源5. ChatGPT 最强竞…

计算机网络第一章(概述)【湖科大教书匠】

1. 各种网络 网络(Network)由若干**结点(Node)和连接这些结点的链路(Link)**组成多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(互连网)。因此,互联网是"网络的网络(Network of Networks)"**因特…

Mybatis的二级缓存

缓存的概述和分类 概述 缓存就是一块内存空间.保存临时数据 为什么使用缓存 将数据源(数据库或者文件)中的数据读取出来存放到缓存中,再次获取的时候 ,直接从缓存中获取,可以减少和数据库交互的次数,这样可以提升程序的性能! 缓存的适用情况 …

38-二叉树练习-LeetCode145二叉树的后序遍历

题目 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[3,2,1] 示例 2: 输入:root [] 输出:[] 示例 3: 输入:ro…

让chatGPT当我的老师如何? 通过和chatGPT交互式学习,了解在ES中,一条JSON数据是如何写到磁盘上的

最近一直有一个问题,如鲠在喉。争取早一天解决,早一天踏踏实实的睡觉。 问题是:在ES中,一条JSON数据是如何写入到磁盘上的? 如何解决这个问题?我想到了chatGPT,还有lucene的学习资料。这篇文章&…

【机器学习】决策树(理论)

决策树(理论) 目录一、何为决策树1、决策树的组成2、决策树的构建二、熵1、熵的作用2、熵的定义3、熵的计算4、条件熵的引入5、条件熵的计算三、划分选择1、信息增益( ID3 算法选用的评估标准)2、信息增益率( C4.5 算法…

DetectGPT:使用概率曲率的零样本机器生成文本检测

DetectGPT的目的是确定一段文本是否由特定的llm生成,例如GPT-3。为了对段落 x 进行分类,DetectGPT 首先使用通用的预训练模型(例如 T5)对段落 ~xi 生成较小的扰动。然后DetectGPT将原始样本x的对数概率与每个扰动样本~xi进行比较。…

Springboot 多线程分批切割处理 大数据量List集合 ,实用示例

前言 哲学提问镇贴: 不了解异步怎么使用的看官, 可阅: SpringBoot 最简单的使用异步线程案例 Async_小目标青年的博客-CSDN博客 Springboot Async异步扩展使用 结合 CompletableFuture_小目标青年的博客-CSDN博客 想了解更多关于批量list处…

25- 卷积神经网络(CNN)原理 (TensorFlow系列) (深度学习)

知识要点 卷积神经网络的几个主要结构: 卷积层(Convolutions): Valid :不填充,也就是最终大小为卷积后的大小. Same:输出大小与原图大小一致,那么N ​变成了​N2P. padding-零填充. 池化层(Subsampli…

《程序员面试金典(第6版)》面试题 08.08. 有重复字符串的排列组合(回溯算法,全排列问题)C++

题目描述 有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。 示例1: 输入:S “qqe” 输出:[“eqq”,“qeq”,“qqe”] 示例2: 输入:S “ab” 输出:[“ab”, “ba”] 提示: 字符都是英文字母。…

Mybatis持久层框架 | Lombok搭建

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Lombok Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,增强java的性能。不需要再写getter、setter或equals方法,只要…

自然语言大模型介绍

1 简介 最近一直被大语言模型刷屏。本文是周末技术分享会的提纲,总结了一些自然语言模型相关的重要技术,以及各个主流公司的研究方向和进展,和大家共同学习。 2 Transformer 目前的大模型基本都是Transformer及其变种。本部分将介绍Transf…

【WEB前端进阶之路】 HTML 全路线学习知识点梳理(上)

前言 HTML 是一切Web开发的基础,本文专门为小白整理,针对前端零基础的朋友们,手把手教你学习HTML,让你轻松迈入WEB开发的行列。 首先,感谢 橙子_ 在HTML学习以及本文编写过程中对我的帮助。 文章目录前言一.HTML简介1.…

【NLP经典论文阅读】Efficient Estimation of Word Representations in Vector Space(附代码)

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

二值mask转polygon/RLE (coco segment格式)

coco数据集annotation的segmentation并不是二值mask,而是polygon格式, 看一个annotation. {"segmentation": [[510.66,423.01,511.72,420.03,510.45......]], #两两组成(x,y)坐标,polygon格式"area": 702.1057499999998…

腾讯自研万亿级NLP大模型,自动生成和衍生广告文案

编者按:随着大数据与AI技术的不断发展,人们越来越看见AI大模型在数据理解、运算以及诸多泛化能力上的潜力,时下,大模型已然成为学术界与工业界探索的重点方向。然而,随着模型规模与容量的不断扩大,其所需训…

mac 把word公式默认字体Cambria Math换成LaTex字体以及带章节自动编号

word默认是Cambria Math,想用latex那种公式的字体,这里使用的是XITS Math字体 搜了很多地方,都是用ab Text这个方法先转成文本,再换字体,然后设置斜体 可是公式多起来的话这种办法很麻烦,而且一个公式里常…

PyTorch深度学习实战 | 典型卷积神经网络

在深度学习的发展过程中,出现了很多经典的卷积神经网络,它们对深度学习的学术研究和工业生产都起到了巨大的促进作用,如VGG、ResNet、Inception和DenseNet等,很多投入实用的卷积神经都是在它们的基础上进行改进的。初学者应从试验…

C语言实现堆

注:这里我们所实现的是大根堆(即父节点不小于子节点的堆) 目录 一,堆的介绍 二,堆结构的创建 三,接口实现 1,初始化与销毁 2,数据的插入与删除 3,其他接口 一&…