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 ...
 
随机推荐
- NC17059 队列Q
			
NC17059 队列Q 题目 题目描述 ZZT 创造了一个队列 Q.这个队列包含了 N 个元素,队列中的第 i 个元素用 \(Q_i\) 表示.Q1 表示队头元素,\(Q_N\) 表示队尾元素.队列中 ...
 - CF484A Bits
			
CF484A Bits 题目 https://codeforces.com/problemset/problem/484/A 题解 思路 知识点:贪心,位运算. 每位独立考虑,要使 \(1\) 的数量 ...
 - nexus 配置文件到本地maven本地仓库 失败
			
Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on p ...
 - c++小游戏———扫雷
			
大家好,我是芝麻狐! 这是我自制的小游戏,目前仅支持devc++. 如果你没有c++软件, 请打开网站GDB online Debugger | Compiler - Code, Compile, R ...
 - ACWing94.递归实现指数型枚举
			
https://www.acwing.com/problem/content/description/94/ 题面 \92. 递归实现指数型枚举 从 1∼n 这 n 个整数中随机选取任意多个,输出所有 ...
 - 三万字盘点Spring/Boot的那些常用扩展点
			
大家好,我是三友. Spring对于每个Java后端程序员来说肯定不陌生,日常开发和面试必备的.本文就来盘点Spring/SpringBoot常见的扩展点,同时也来看看常见的开源框架是如何基于这些扩展 ...
 - python打开文件、文件夹窗口、终端窗口
			
简介 在一些项目中,我们会需要在生成完文件后打开某些文件或者文件夹窗口,这就需要使用到内置的文件打开方式了. 打开文件或文件夹 Windows import os import subprocess ...
 - Mybatis的使用(2)
			
1 :模糊查询 #{}占位符和¥{}的区别 #{}占位符:传参大部分用#{}传参,它的底层是PreparedStatement对象,是安全的数据库访问,它能够防止sql注入 1.1:如果parmete ...
 - docker Compose 部署springboot+vue前端端分离项目
			
温馨提示:如果有自己的服务器最好不过了,这样部署网项目就可以上线了.没有的话,只能使用localhost 本机访问啦,记得替换 ngixn 中的ip地址.域名为localhost. (一) 准备工作 ...
 - Vs 快捷键---探索不一样的编程
			
前言:现在很多工具都支持各式各样的快捷键,vs作为后起之秀,多功能的快捷键自然是必不可少的, 而且针对单行操作的快捷键是无需选中整行的,只需要光标停留在所操作的代码上面即可. 1.注释:CTRL+K+ ...