使用Nginx进行负载均衡

news2024/11/17 10:36:47

什么是负载均衡

Nginx是一个高性能的开源反向代理服务器,也可以用作负载均衡器。通过Nginx的负载均衡功能,可以将流量分发到多台后端服务器上,实现负载均衡,提高系统的性能、可用性和稳定性。

如下图所示:
在这里插入图片描述

Nginx负载均衡策略

Nginx内置负载均衡主要分为以下种类

轮询

轮询简单理解就是将请求在机器之间进行平均分配,在轮询这种方式中,也有分为两类轮询策略
1、普通轮询
可以理解为各个服务器的权重占比都为1,请求会轮流进入这些服务器
2、权重轮询
在轮询基础上分配服务器的权重占比。比如服务器1配置2,服务器2配置1,那么最终请求分配到两台机器的数量会趋近于服务器1:服务器2=2:1
具体配置方式如下



http {
	# 普通轮询配置
    # 定义转发分配规则
    upstream myapp1 {
        server srv1.com; # 要转发到的服务器,如ip、ip:端口号、域名、域名:端口号
        server srv2.com:8088;
        server 192.168.0.100:8088;
    }
	# 权重轮询配置
    # 定义转发分配规则
	upstream myapp1 {
		server srv1.com weight=1; # 该台服务器接受1/6的请求量
		server srv2.com:8088 weight=2; # 该台服务器接受2/6的请求量
		server 192.168.0.100:8088 weight=3; # 该台服务器接受3/6的请求量;
}


    server {
        listen 80; # nginx监听的端口

        location / {
        	# 使用myapp1分配规则,即刚自定义添加的upstream节点
        	# 将所有请求转发到myapp1服务器组中配置的某一台服务器上
            proxy_pass http://myapp1; 
        }
    }
}

iphash
对客户的请求的IP进行hash操作,根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的
这个方法确保了相同的客户端的请求一直发送到相同的服务器,这样每个访客都固定访问一个后端服务器。如用户需要分片上传文件到服务器下,然后再由服务器将分片合并,这时如果用户的请求到达了不同的服务器,那么分片将存储于不同的服务器目录中,导致无法将分片合并,该场景则需要使用ip hash策略。
需要注意的是,ip_hash不能与backup同时使用,另外当有服务器需要剔除,必须手动down掉,此模式适合有状态服务,比如session。
具体配置方式如下:

# 定义转发分配规则
upstream myapp1 {
	ip_hash; # #保证每个请求固定访问一个后端服务器
	server srv1.com;
	server srv2.com:8088;
	server 192.168.0.100:8088;
}

最少连接
轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果,适合请求处理时间长短不一造成服务器过载的情况。
具体配置方式如下:

# 定义转发分配规则
upstream myapp1 {
	least_conn; # 把请求分派给连接数最少的服务器
	server srv1.com;
	server srv2.com:8088;
	server 192.168.0.100:8088;
}

Nginx安装

具体可以看我之前的一篇文档:Nginx安装以及卸载教程

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

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

相关文章

snowny-小诺框架-标签tabs消失不见

可能是由于,在配置菜单时,排序数字过小造成的,将排序数字改成大于0的数字就好使了。

ChatGPT浪潮来袭!谁先掌握,谁将领先!

任正非在接受采访时说 今后职场上只有两种人, 一种是熟练使用AI的人, 另一种是创造AI工具的人。 虽然这个现实听起来有些夸张的残酷, 但这就是我们必须面对的事实 📆 对于我们普通人来说,我们需要努力成为能够掌握…

ip广播智慧工地广播喊话号角 IP网络号角在塔吊中应用 通过寻呼话筒预案广播

ip广播智慧工地广播喊话号角 IP网络号角在塔吊中应用 通过寻呼话筒预案广播 SV-704XT是深圳锐科达电子有限公司的一款壁挂式网络有源号角,具有10/100M以太网接口,可将网络音源通过自带的功放和号角喇叭输出播放,可达到功率50W。SV-704XT内置有…

【绩效管理】某连锁购物中心绩效考核体系搭建咨询项目

随着企业规模的扩大,员工数量不断增加,与之相关的人事管理工作的复杂性也随之增大。但是由于行业的特点,该购物中心的人员整体素质偏低,且自成立以来,该中心重经营轻管理,其人力资源管理水平也有待提升。在…

基于SpringMVC+JSP实现的亚盛汽车配件销售业绩管理统

采用技术 基于SpringSpringMVCMyBatis框架实现亚盛汽车配件销售业绩管理统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringMVCMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 员工端效果 进货信息 配件管理…

群晖 Synology Photos DSM7 自定义文件夹管理照片

背景 众所周知,目前群晖DSM7中使用Synology Photos做照片管理时,个人照片只能默认索引 /home/Photos 文件夹,但是如果个人照片很多或者用户很多时,共享文件夹/homes 所在的存储空间就会不够用 当然,如果你的存…

2024考研计算机考研复试-每日重点(第十九期)

公众号“准研计算机复试”,超全大佬复试资料,保姆级复试,80%的题目都是上岸大佬提供的。 研宝们,App更新啦! 操作系统: 10.★什么是中断? 中断是指计算机运行过程中,出现某些意外时…

智慧路灯杆如何提升智慧城市文旅形象

今年以来,全国多地城市凭借本地独特物产、独特旅游环境等亮点火爆出圈,为城市带来显著经济增长和形象提升。文旅经济作为高附加值产业,具有高收益、高潜力等特点,还有助于推动城市经济转型和可持续发展。 推动城市文旅经济发展&am…

基于C++的一种字符串切分方法及示例代码

一、概述 在 Java 和 python 中,都有实现字符串切分的方法, 如split() ,使用起来较为方便,但是在标准的 C 中,却没有内置的 split() 方法。 我们可以使用标准库中的一些函数和方法来实现字符串的切分,这里…

【报错 - npm包问题】 token.type.endsWith is not a function

将 babel-eslint 10.1.0版本,降为 8.2.2 npm install babel-eslint8.2.2 --save

数据结构02:线性表 顺序表习题01[C++]

图源:文心一言 考研笔记整理~🥝🥝 之前的博文链接在此:数据结构02:线性表[顺序表链表]_线性链表-CSDN博客~🥝🥝 本篇作为线性表的代码补充,供小伙伴们参考~🥝&#x1…

如何使用“Docker registry创建本地仓库,在服务器之间进行文件push和pull”?

1.1、在服务器1,运行registry docker run -d -p 5000:5000 -v ${PWD}/registry:/var/lib/registry --restart always --name registry registry:2.7.11.2、编辑/etc/docker/daemon.json 文件, 192.168.xxx.xxx 换成你自己 registry 服务的地址 sudo na…

Midjourney绘图欣赏系列【人物篇】(一)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不…

opencv-python连通域分割connectedComponents

文章目录 连通域简介绘图代码函数说明 连通域简介 所谓连通域,即Connected Component,是一组彼此相连的像素点的集合,这些像素点彼此之间可以假设一条互相链接的路径,路径上所有像素的灰度一致,或者符合某个特定的条件…

机器学习模型—随机森林

机器学习模型—随机森林 随机森林(Random Forest)是由斯坦福大学教授Tin Kam Ho在1995年提出的一种组合学习模型。它可以用于分类和回归任务,并在很多现实世界的问题中表现出优异的性能。 随机森林本质上是通过构建多颗决策树,然后将单个树的预测结果进行组合,从而获得更加准…

Python应用数值方法:工程与科学实践指南

信息技术时代的挑战与机遇 我们正处在一个信息技术高速发展的时代,这是一个科技与创新蓬勃发展的时代。大数据与人工智能的崛起,正以前所未有的速度推动着传统技术的智能化变革。这种变革不仅带来了前所未有的机遇,也对科学和工程技术人员的…

【编码魔法师系列_结构型5】外观模式(Facade Pattern)

学会设计模式,你就可以像拥有魔法一样,在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们(GoF)凝聚出来的最佳实践,可以提高代码的可读性、可维护性和可重用性,从而让我们的开发效率更高。通…

goctl-swagger 生成json接口文件

参考: GitHub - dyntrait/goctl-swagger: 通过 api 文件生成 swagger 文档 GitHub - Bluettipower/goctl-swagger 一:编译 执行go install 前一般需要设置环境,不然资源经常会下载不下载 go env -w GOPROXYhttps://goproxy.cn,direct 执行完 go in…

深入浅出落地应用分析:AI数字人「微软小冰」

hi,各位,今天要聊的是AI小冰,机缘巧合,投递了这家公司的产品,正好最近在看数字人相关的,就详细剖析下这款产品! 前言 小冰,全称为北京红棉小冰科技有限公司,前身为微软(亚洲)互联网工程院人工智能小冰团队,是微软全球最大的人工智能独立产品研发团队。作为微软全…

2024.3.13

1.设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace std;cl…