首页 > 系统相关 >nginx 常见的三种负载均衡策略

nginx 常见的三种负载均衡策略

时间:2023-08-22 09:46:10浏览次数:44  
标签:负载 127.0 0.1 ip server nginx 三种 upstream 服务器

我们日常中最常见的三种nginx的负载均衡策略应当为(轮询、权重、ip绑定),这其中的区别体现在upstream代码块中,以下是upstream代码块示例(轮询)。

upstream alias {
	server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}

upstream代码块中可以填服务部署的服务器列表,upstream后面的名称是自己填写,我个人倾向于称它为服务器别名,命名好之后可以直接在server代码块中调用。

轮询

顾名思义,轮询就是将请求轮流转发给所有的服务器。

upstream alias {
	server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}
server {
	listen       80;
	server_name  localhost;
	location / {
		proxy_pass http://alias;
	}
}

如上述代码所示,nginx要将请求转发至 127.0.0.1的8080和8081端口,第一次nginx随机选择一台服务器发送请求,第二次就会选择另外一台。ABABAB,如此循环。服务器性能服务相同时,通常都是采用此策略。

权重

将请求按照一定的比例转发给不同的服务器。

upstream alias {
	server 127.0.0.1:8080 weight=3;
	server 127.0.0.1:8081 weight=2;
}
server {
	listen       80;
	server_name  localhost;
	location / {
		proxy_pass http://alias;
	}
}

上述代码中,我们设置的权重是3和2,也就代表着请求将会以 3:2 的比例转发给两台服务器。值得一提的是,nginx的权重机制属于轮询权重,也就是先给A发3次请求,然后给B发2次请求。适用于性能不同的服务器,如A服务器性能较强,或者开启的服务较少,则可以将更多的请求转发给A服务器。

ip绑定

顾名思义,就是将请求方的ip和服务器进行绑定。

upstream alias {
	server 127.0.0.1:8080;
	server 127.0.0.1:8081;
	ip_hash;
}
server {
	listen       80;
	server_name  localhost;
	location / {
		proxy_pass http://alias;
	}
}

在upstream代码块里加上 ip_hash; 代码,即代表使用ip绑定策略。举个例子,当用户使用某一ip访问服务器,nginx将请求转发至8080,则代表该请求ip的后续所有请求都将会被转发至8080服务进行处理。
这种策略多用于带会话请求的场景,如用户的登录信息保存在session当中,如果换服务器则拿不到对应的session,会需要重新登录,使用ip_hash能保证用户请求的时同一台服务器。

总结:nginx的上述三种策略基本可以满足绝大部分应用场景,还有一些扩展的策略需要引入三方的一些类似于插件的东西,此处就不一一赘述。

原文链接:https://blog.csdn.net/qq_41137996/article/details/119867885

标签:负载,127.0,0.1,ip,server,nginx,三种,upstream,服务器
From: https://www.cnblogs.com/nuomibaibai/p/17647680.html

相关文章

  • Nginx概述_Nginx下载和安装
       ......
  • 微服务负载均衡器LoadBalancer
    1.什么是SpringCloudLoadBalancerSpringCloudLoadBalancer是SpringCloud官方自己提供的客户端负载均衡器,用来替代Ribbon。Spring官方提供了两种负载均衡的客户端:RestTemplateRestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服......
  • RunnerGo中WebSocket、Dubbo、TCP/IP三种协议接口测试详解
    大家好,RunnerGo作为一款一站式测试平台不断为用户提供更好的使用体验,最近得知RunnerGo新增对,WebSocket、Dubbo、TCP/IP,三种协议API的测试支持,本篇文章跟大家分享一下使用方法。WebSocket协议WebSocket是一种在单个TCP连接上进行全双工通信的API技术。相比于传统的HTTP请求,We......
  • RunnerGo中WebSocket、Dubbo、TCP/IP三种协议接口测试详解
    大家好,RunnerGo作为一款一站式测试平台不断为用户提供更好的使用体验,最近得知RunnerGo新增对,WebSocket、Dubbo、TCP/IP,三种协议API的测试支持,本篇文章跟大家分享一下使用方法。WebSocket协议WebSocket是一种在单个TCP连接上进行全双工通信的API技术。相比于传统的HTTP请......
  • Nginx Ingress Contoller 通过 Envoy 代理和 Jaeger 进行分布式追踪(二)
    1、概述在《应用程序通过Envoy代理和Jaeger进行分布式追踪(一)》一文中,我们详细介绍了单个应用程序如何通过Envoy和Jaeger实现链路追踪的过程。然而,单独追踪单个应用程序的链路在实际场景中往往显得不够有意义。因此,在本文中,我们将进一步扩展链路追踪范围,演示如何将Ng......
  • nginx 配置
    1、sudoapt-getupdate; 2、sudosuroot3、sudoapt-getinstallnginxsudoapt-getinstallvim 4、nginx-vservicenginxstart启动servicenginxrestartservicenginxstop 5、sudoapt-getinstallsystemdsystemctlstatusnginx......
  • EF的三种加载方式
    一、三种加载方式   延迟加载【LazyLoading】、饥饿加载【EagerLoading】、显式加载【ExplicitLoading】二、区别     2.1、延迟加载:        说明:和淘宝商品列表一样,下拉刷新,按需加载。        特点:关闭延迟加载后,查询主表......
  • Linux下MySql的三种安装方式:RPM 二进制包和源代码
    mysql的三种安装方式:RPM二进制包和源代码本次安装的系统平台为redhat5一、使用RPM包进行安装    首先可以从安装光盘中或者到mysql的网站上下载对应版本的rpm包如下:MySQL-server-community-5.1.38-0.rhel5.i386.rpmMySQL-client-community-5.1.38-0.rhel5.i386.rpm   ......
  • 轻松实现Apache,Tomcat集群和负载均衡
    环境说明      Apache :apache_2.0.55    1个       Tomcat: apache-tomcat-5.5.17(zip版)2个       mod_jk::mod_jk-apache-2.0.55.so 1个第一部分:负载均衡   负载均衡,就是apache将客户请求均衡的分给tomcat1,tomcat2....去处理  1.安......
  • LVS负载均衡之DR模式构建
    ※实验环境(1)系统:centos7.9(2)虚拟机:4台centos7.9,1台作为nfs共享服务器(NFS共享服务搭建步骤)一、负载调度器配置(1)关闭selinux、firewalld、NetworkManager#关闭selinuxsed-i's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config#关闭firewalldsystemctlstopfirewalld......