四、nginx负载均衡[轮询]

news2025/2/21 22:06:03

一、负载均衡

解释:负载均衡分为两部分(应用集群和负载均衡器)。应用集群:将同一应用部署到多台机器上,组成处理集群,接收负载均衡设备分发的请求,进行处理并返回响应的数据。负载均衡器:将用户访问的请求根据对应的负载均衡算法,分发到集群中的一台服务器进行处理。

图示:
在这里插入图片描述

好处:解决服务器的高并发压力,提高应用程序的处理性能。提供故障转移,实现高可用。通过添加或减少服务器数量,增强网站的可扩展性。在负载均衡器上进行过滤,可以提高系统的安全性

二、负载均衡算法

参数:

状态概述
down当前的server暂时不参与负载均衡
backup预留的备份服务器
max_fails允许请求失败的次数
fail_timeout经过max_fails失败后, 服务暂停时间
max_conns限制最大的接收连接数

例子:

upstream gao{
	server 127.0.0.1:12346 down;#表示这台服务器不参与负载均衡
	server 127.0.0.1:12347 backup;#当作备份服务器,也就是其它不能使用时其才会被使用
	server 127.0.0.1:12348 max_conns=1000;#表示这台服务器同时活动连接的最大数量是1000
	server 127.0.0.1:12349 max_fails=3 fail_timeout=15;(这两个参数配合使用)#当这台服务器服务失败3次后将暂停15秒才再做尝试
	server 127.0.0.1:12350;
}

1.轮询

解释:默认的均衡算法就是轮询,当请求来时,每个服务器都会处理一次,挨个进行,这个适合,服务器配置想近的情况下使用。(推荐使用的算法

# 定义一组服务器与均衡算法(默认就是轮询)
upstream gao{
	server 127.0.0.1:12346;
	server 127.0.0.1:12347;
}
server{
	listen 12346;
        location /{
		default_type text/plain;
		return 200 12346;
        }
}
server{
	listen 12347;
	location /{
                default_type text/plain;
                return 200 12347;
        }
}
# 负载均衡服务器
server {
	listen 8083;
	location /{
		proxy_pass http://gao;
	}
}

2.权重

解释:用来设置服务器的权重,默认为1,权重越大被分配到请求的几率越大,此策略比较适合服务器的硬件配置差别比较大的情况(推荐使用的算法

# 定义一组服务器与均衡算法
upstream gao{
	server 127.0.0.1:12346 weight=8;
	server 127.0.0.1:12347 weight=2;
}
server{
	listen 12346;
        location /{
		default_type text/plain;
		return 200 12346;
        }
}
server{
	listen 12347;
	location /{
                default_type text/plain;
                return 200 12347;
        }
}
# 负载均衡服务器
server {
	listen 8083;
	location /{
		proxy_pass http://gao;
	}
}

3.ip_hash

解释:当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上(也就是同一个ip发出的所有请求根据哈希计算后,只会让固定的一台服务器处理)。优点:这种方法适合session在服务器上的情况(如果用户请求不停由多个服务器处理可能会session状态不保存)
缺点:很可能造成流量倾斜,而且设置后端服务器权重等方法将不起作用

# 定义一组服务器与均衡算法
upstream gao{
	ip_hash;
	server 127.0.0.1:12346;
	server 127.0.0.1:12347;
}
server{
	listen 12346;
        location /{
		default_type text/plain;
		return 200 12346;
        }
}
server{
	listen 12347;
	location /{
                default_type text/plain;
                return 200 12347;
        }
}
# 负载均衡服务器
server {
	listen 8083;
	location /{
		proxy_pass http://gao;
	}
}

4.least_conn

解释:最少连接,把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。(可以使用weight

# 定义一组服务器与均衡算法
upstream gao{
	least_conn;
	server 127.0.0.1:12346 weight=2;
	server 127.0.0.1:12347 weight=1;
}
server{
	listen 12346;
        location /{
		default_type text/plain;
		return 200 12346;
        }
}
server{
	listen 12347;
	location /{
                default_type text/plain;
                return 200 12347;
        }
}
# 负载均衡服务器
server {
	listen 8083;
	location /{
		proxy_pass http://gao;
	}
}

5.url_hash

解释:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。

# 定义一组服务器与均衡算法
upstream gao{
	hash $request_uri;
	server 127.0.0.1:12346;
	server 127.0.0.1:12347;
}
server{
	listen 12346;
        location /{
		default_type text/plain;
		return 200 12346;
        }
}
server{
	listen 12347;
	location /{
                default_type text/plain;
                return 200 12347;
        }
}
# 负载均衡服务器
server {
	listen 8083;
	location /{
		proxy_pass http://gao;
	}
}

6.fair

解释:fair采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。那么如何使用第三方模块的fair负载均衡策略(需要自行安装)

# 定义一组服务器与均衡算法
upstream gao{
	fair;
	server 127.0.0.1:12346;
	server 127.0.0.1:12347;
}
server{
	listen 12346;
        location /{
		default_type text/plain;
		return 200 12346;
        }
}
server{
	listen 12347;
	location /{
                default_type text/plain;
                return 200 12347;
        }
}
# 负载均衡服务器
server {
	listen 8083;
	location /{
		proxy_pass http://gao;
	}
}

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

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

相关文章

C语言库函数— qsort () 详解

目录 1. qsort()函数简介 1.1 函数原型 1.2 函数参数 2. 比较函数简介 2. 1 比较函数参数 2.2 比较函数使用 3. qsort()函数使用 3.1 整形数组排序 3.2 字符数组排序 3.3 浮点型数组排序(double类型为例) 3. 4 字符串数组排序 3.5 结构体…

Spring Security(十八)--OAuth2:实现授权服务器(上)--环境准备以及骨架代码搭建

一、前言 本节大家如果一直从一开始看过来的话,就会巧妙发现我们将之前的实践代码全部连接起来,本节将会使用到之前的短信/验证码登录相关的逻辑代码,如果大家没有看的感兴趣可以回到https://editor.csdn.net/md/?articleId127617691先将这…

【pdf翻译中文】免费自用日语pdf转中文、韩语pdf转中文(也可以转英文)或者其他小语种法语、德语pdf转中文

不是很精确、有点慢,但是也够用,胜在免费free 效果图: 一些对比: 模型来自于: https://huggingface.co/models 文件目录 调用模型的代码: 运行此段代码,执行翻译 一些简单的设置在这里…

【LeetCode每日一题】——557.反转字符串中的单词 III

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 字符串 二【题目难度】 简单 三【题目编号】 557.反转字符串中的单词 III 四【题目描述】 给…

DPU1.1S—高性能、低功耗4口高速USB2.0HUB控制器芯片

DPU1.1S是一款高性能、低功耗4口高速 USB2.0 HUB 控制器,上行端口兼容高速 480MHz和全速12MHz两种模式,4个下行端口兼容高速480MHz、全速12MHz、低速1.5MHz三种模式。 DPU1.1S采用状态机单事务处理架构,而非单片机架构,多个事务缓…

沃通CA证书支持多所高校招投标文件电子签名

招投标电子化是国家大力推行的战略性工作,为贯彻落实电子招投标工作,各政企单位、高校均启动采购与招投标系统,自行组织的招标、单一来源等采购活动都通过该类系统在线进行。近期,沃通CA证书打通与多所高校采购与招投标系统的应用…

C语言深度解析:函数的形参和实参与传值和传址(多角度分析,让你有一种相见恨晚的感觉!!!!)

目录 一、前言 二、函数的形参和实参 🍑实参 🍎形参 🍇形参与实参之间的区别 🍐形参与实参之间的联系(重点!!!!) 三、函数的传值和传址(超…

[附源码]计算机毕业设计JAVA网上宠物商店

[附源码]计算机毕业设计JAVA网上宠物商店 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis M…

【html5期末大作业】基于HTML仿QQ音乐官网网站

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

Xcode 中设置APP的图标(Icon)和启动页面(Launch Screen)

设置图标(Icon) 首先,要准备4组图标(如果是发布在 iOS 平台上),这4组分别是 120 x 120 px,152 x 152 px,167 x 167 px,1024 x 1024 px 的尺寸,要 PNG 格式。…

使用EL表达式时,PropertyNotFoundException异常的解决过程

一. 业务场景 最近,杨哥的一个班级正在做基于JSPJSTL/EL Servlet JavaBean JDBC MySQL技术方案的阶段项目。其中有一个需求是根据多条件动态搜索商品信息,最终分页显示出商品列表。这个功能可以在dao层采用多分支条件组合,显示页面使用JST…

2022王道OS 1.3 操作系统运行环境

2022王道OS 1.3 操作系统运行环境 文章目录2022王道OS 1.3 操作系统运行环境1.3_1 操作系统的运行机制知识总览知识点预备知识:程序是如何运行的?两种程序:内核程序 VS 应用程序两种指令:特权指令 VS 非特权指令两种状态&#xff…

二、【React脚手架】组件化编码(TodoList案例)

文章目录1、组件化编码流程(通用)2、样式覆盖问题3、DEMO3.1、需要实现的效果3.2、前期须知3.3、项目结构3.4、CODE3.4.1、App.js3.4.2、App.css3.4.3、Header3.4.4、List3.4.5、Item3.4.6、Footer1、组件化编码流程(通用) 拆分组…

Python 面向对象简介

什么是面向对象? 面向对象是一种编程思想,在开发过程中关注的不是解决问题的步骤和过程,而是参与解决问题的对象和它们具备的行为。 01 面向过程和面向对象的区别 1、面向过程 面向过程在开发过程中关注的是解决问题的步骤和过程&#xf…

《计算机体系结构量化研究方法第六版》1.6 成本趋势

1.6.1 时间、产量和大众化的影响 即便没有技术进步,计算机组件的制造成本也会随着时间的推移而降低。这背后有着学习曲线的因素。 【学习曲线(from百度)】 学习曲线的定义为"在一定时间内获得的技能或知识的速率",又称…

2022王道OS 1.4 操作系统的体系结构 chap1回顾

2022王道OS 1.4 操作系统的体系结构 & chap1回顾 操作系统的体系结构 知识总览 操作系统的内核 时钟管理:利用时钟中断实现计时功能 原语:一种特殊的程序,具有原子性(一气呵成,不可被中断) 内核是操…

人工智能开启甲骨文整理研究新范式

编者按:在甲骨学研究中,甲骨“校重”整理是一项费事费力但又极其重要的基础性研究工作。微软亚洲研究院与首都师范大学甲骨文研究中心莫伯峰教授团队合作开发的甲骨文校重助手Diviner,第一次将自监督AI模型引入到甲骨文“校重”工作中&#x…

【Mysql】数据库的基本操作和表的基本操作

本章内容是,用sql语言实现对数据库的基本操作和表的基本操作 文章目录前言1. 数据库的基本操作1.1 创建数据库1.2 查看数据库1.3 选中数据库1.4 删除数据库2. 数据库基本数据类型3. 表的基本操作3.1 创建表3.2 显示数据库中的表3.3 查看表的构造3.4 删表4. 表的增删改查4.1 增加…

使用synchronized 加锁你加对了么?

本文讲解使用synchronized只是对synchronized的使用,底层原理将在后续文章 目录 从实际中理解共享带来的问题 Java代码实现共享带来的问题进行分析 临界区(Critical Section) 与 竞态条件(Race Condition) 临界区 竞态条件 synchronized解决方案 怎么理解synchronized中…

【web前端期末大作业】基于HTML+CSS+JavaScript实现代理商销售管理系统后台(8页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…