Nginx几种负载均衡方式介绍
Nginx几种负载均衡方式介绍
前言
负载均衡就是Nginx将请求分摊到不同的服务器中,保证服务的可用性,缓解服务压力,保证服务的响应速度,即使某一个应用服务不可用,也可以保证业务的正常进行,并且方便对服务器进行扩容缩容。负载均衡软件有很多,例如LVS、HAProxy等,今天我们仅讲解Nginx负载均衡常见的几种策略。

负载均衡策略
轮询(Nginx自带、默认)
该策略是Nginx默认的负载均衡策略,每一个客户端请求按时间顺序轮流分配到不同的服务器上,如果后端服务不可以用,会自动过滤掉。
upstream my_test_server {
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
weight 权重(Nginx自带)
weight代表权重的意思,用于指定轮询的几率,默认权重都是1,可以手动设置调整,权重越高,被分配的次数越多,weight权重和访问比例是成正比的,用于解决后端服务器性能不均衡时,调整访问比例。
upstream my_test_server {
server 192.168.0.100:8080 weight=1;
server 192.168.0.101:8080 weight=2;
server 192.168.0.102:8080 weight=3;
}
ip_hash(Nginx自带)
ip_hash是将每个请求按照访问ip的hash结果进行分配,这种方式可以保证同一个用户会固定访问一个后端服务器。优点:可以保证session会话,解决服务器之间session不能共享的问题。
upstream my_test_server {
ip_hash;
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
least_conn(Nginx自带)
将请求转发给连接数较少的后端服务器。每个后端服务器配置可能不同,处理的请求也有可能不同,对于处理的请求有快有慢,least_conn是根据后端服务器的连接情况,动态的选择连接数量较少的一台服务器来处理当前的请求。
upstream my_test_server {
least_conn;
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
fair(第三方)
fair是按照服务器端的响应时间来分配请求,响应时间短的服务器优先分配。第三方的负载均衡策略需要安装第三方的插件。
upstream my_test_server {
fair;
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
url_hash(第三方)
url_hash是根据url的hash结果进行分配请求,每一个url会固定到同一个服务器上,配合缓存使用,可以减少不必要的下载和资源时间的浪费。每次同一个url请求到达同一个服务器上,第一次加载后放入缓存,后面再次请求,直接取缓存资源。如果不采用url_hash,可能会导致请求到达不同的服务器,资源出现重新加载的情况。第三方的负载均衡策略需要安装第三方的插件。
upstream my_test_server {
hash $request_uri;
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
配置
在conf文件中配置上述负载均衡配置后,需要在server块中进行配置使用。
upstream my_test_server {
ip_hash;
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass htttp://my_test_server;
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
如有侵权请立即与我们联系,我们将及时处理,联系邮箱:865934097@qq.com。
原文链接:https://monkey.blog.xpyvip.top/archives/nginx-fu-zai-jun-heng
Nginx几种负载均衡方式介绍的更多相关文章
- LVS-三种负载均衡方式比较
1.什么是LVS? 首 先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和 基于内容请求分发技术.调度器具 ...
- LVS:三种负载均衡方式比较
[转自http://soft.chinabyte.com/25/13169025.shtml] 1.什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西, ...
- LVS(Linus Virtual Server):三种负载均衡方式比较+另三种负载均衡方式
还有个姊妹篇也可以参考这个文章:六大Web负载均衡原理与实现 什么是LVS (Linux Virtual Server)? 首先简单介绍一下LVS (Linux Virtual Server)到底 ...
- LVS:三种负载均衡方式比较+另三种负载均衡方式
转:http://blog.csdn.net/u013256816/article/details/50705578 什么是LVS? 首先简单介绍一下LVS (Linux Virtual Serv ...
- Nginx几种负载均衡算法及配置实例
本文装载自: https://yq.aliyun.com/articles/114683 Nginx负载均衡(工作在七层"应用层")功能主要是通过upstream模块实现,Ngin ...
- nginx如何实现负载均衡以及实现方式
什么是ngnix? Nginx是一个http服务器.是一个使用c语言开发的高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.nginx能够支撑5万并发链接,并且cpu ...
- [转帖]Nginx 的 TCP 负载均衡介绍
Nginx 的 TCP 负载均衡介绍 https://www.cnblogs.com/felixzh/ 前几天同事问 nginx的代理 当时以为只有http的 现在看起来还有tcp的可以使用tcp 代 ...
- octavia的实现与分析(一)·openstack负载均衡的现状与发展以及lvs,Nginx,Haproxy三种负载均衡机制的基本架构和对比
[负载均衡] 大量用户发起请求的情况下,服务器负载过高,导致部分请求无法被响应或者及时响应. 负载均衡根据一定的算法将请求分发到不同的后端,保证所有的请求都可以被正常的下发并返回. [主流实现-LVS ...
- openstack octavia的实现与分析(一)openstack负载均衡的现状与发展以及lvs,Nginx,Haproxy三种负载均衡机制的基本架构和对比
[负载均衡] 大量用户发起请求的情况下,服务器负载过高,导致部分请求无法被响应或者及时响应. 负载均衡根据一定的算法将请求分发到不同的后端,保证所有的请求都可以被正常的下发并返回. [主流实现-LVS ...
随机推荐
- 记一次排查线上MySQL死锁过程,不能只会curd,还要知道加锁原理
昨晚我正在床上睡得着着的,突然来了一条短信. 啥,线上MySQL死锁了,我赶紧登录线上系统,查看业务日志. 能清楚看到是这条insert语句发生了死锁. MySQL如果检测到两个事务发生了死锁,会回滚 ...
- Spring框架系列(10) - Spring AOP实现原理详解之AOP代理的创建
上文我们介绍了Spring AOP原理解析的切面实现过程(将切面类的所有切面方法根据使用的注解生成对应Advice,并将Advice连同切入点匹配器和切面类等信息一并封装到Advisor).本文在此基 ...
- Zabbix 5.0:通过LLD方式自动化监控阿里云RDS
Blog:博客园 个人 之前做了RDS监控,由于 RDS 实例梳理增多,手动添加的方式已经不够效率,故改为LLD(Low-level discovery)方式做监控. 什么是LLD LLD(Low-l ...
- 常用的函数式接口_Predicate接口_默认方法and和Predicate接口练习_集合接口筛选
默认方法:and 既然是条件判断,就会存在与.或.非三种常见的逻辑关系.其中将两个Preadicate条件使用"与"逻辑连接起来实现"并且"的效果时,可以使用d ...
- logstash在windows系统下的安装与使用
前言: Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到 Elasticsearch. ES官网:https://www.elastic.co/p ...
- AOV网的实现(数据结构)
#include <stdio.h> #include <stdlib.h> #include <string.h>//我这里的头以及尾巴与书上的不一样. int ...
- python3学习笔记之字符串
字符串 1.一个个字符组成的有序的序列,是字符的集合: 2.使用单引号.双引号.三引号引住的字符序列 3.字符串是不可变对象 4.python3起,字符串就是Unicode类型: 字符串特殊举例: 不 ...
- 主线程和创建多线程程序的第一种方式_创建Thread类的子类
/** * 主线程:执行主方法的线程(main) * 单线程程序:在java程序中只有一个线程 * 执行从main方法开始,从上倒下依次执行 */ public class Demo01MainThr ...
- 2511-Druid监控功能的深入使用与配置-如何记录监控数据(基于logback)
Druid的监控很强大,但可惜的是监控数据是存在内存中的,需求就是定时把监控数据记录下来,以日志文件的形式或者数据库入库. 记录两种方式: 数据库入库 logback形式记录 原理(重点) 如果仅仅想 ...
- 国产钡铼分布式IO模块如何与西门子PLC Profinet通讯
1.准备IO模块:耦合器BL200PN.数字量输出模块M2082.数字量输入M1081.模拟量输入模块M3401.模拟量输出M4043. 编辑搜图 请点击输入图片描述(最多18字) 2.BL200P ...