Nginx负载均衡原理及应用实践

Nginx负载均衡原理及应用实践

逻辑架构图

Nginx负载均衡的逻辑架构图如下图所示:

Nginx负载均衡逻辑架构图

负载均衡配置

Nginx负载均衡服务器清单:

服务器名称

IP

说明

Load Balance Server

10.0.0.10

Nginx负载均衡服务器

Web Server 1

10.0.0.20

Web应用服务器

Web Server 2

10.0.0.21

Web应用服务器

负载均衡服务器Nginx.conf配置如下:

worker_process 1;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream www_pools { # 定义Web服务池server 10.0.0.20:80 weight = 1;server 10.0.0.21:80 weight = 1;}server { # 定义负载均衡虚拟主机listen 80;server_name www.test.com; # 根据实际域名填写location / {proxy_pass http://www_pools; # 访问www.test.com,请求转发给www_pools中的节点}}}

重启Nginx服务:

nginx -s reload

至此,已经完成了一个简单的负载均衡集群网络的配置,当用户输入网址http://www.test.com/访问负载均衡服务器时,负载均衡会根据设置的负载均衡算法将访问请求分发到Web Server 1和Web Server 2两个节点。

负载均衡核心组件

upstream 模块

模块简介

Nginx负载均衡功能依赖于ngx_http_upstream_module模块,所支持的代理方式包括proxy_pass、fastcgi_pass、memcached_pass。

模块语法

示例1:基本upstream配置

upstream www_pools { # upstream关键词必须有,www_pools为集群组名称,自定义server 10.0.0.20:80 weight=5; # server固定关键词,后接域名或IP,端口不指定默认80server 10.0.0.21:80 weight=10; # weight表示权重,权重越大被分配几率越大}

示例2:较完整的upstream配置

upstream web_pools {server 10.0.0.5;server 10.0.0.6:80 weight=1 max_fails=1 fail_timeout=10s;server 10.0.0.10:80 weight=2 max_fails=2 fail_timeout=20s backup;}

示例3:使用域名及socket的upstream配置

upstream backend {server backend1.example.com weight=5;server backend2.example.com:8080;server unix:/tmp/backend3; # 指定socket文件server backup1.example.com:8080 backup;server backup2.example.com:8080 backup; #backup表示备份服务器,其他指定服务器都不可用时启动}

相关参数

upstream模块内部server标签参数说明

Server标签

参数说明

server 10.0.0.10:80

节点地址可以是IP或者域名,端口不写则默认为80端口

weight=1

服务器权重,默认值为1。权重越大表示接收请求比例越大

max_fails=1

Nginx尝试连接后端主机节点失败的次数

backup

热备配置参数,当前面激活的节点都失败后会自动启动热备节点。注意:当负载调度算法为ip_hash时,状态不能是weight和backup。

fail_timeout=10s

在max_fails定义的失败次数后,距离下次检查的间隔时间,默认是10s。

down

标志着该节点永远不可用,这个参数可配合ip_hash使用。

http_proxy_module模块

proxy_pass指令属于ngx_http_proxy_module模块,此模块可以将请求转发到另一台服务器。 在实际的反向代理工作中,会通过location功能匹配指定的URI,然后把接收到的符合匹配URI的请求通过proxy_pass抛给定义好的upstream节点池。

常见的使用案例:

(1)将匹配URI为name的请求抛给http://127.0.0.1/remote:

location /name/ {proxy_pass http://127.0.0.1/remote/;}

(2)将匹配URI为name的请求应用指定的rewrite规则,然后抛给http://127.0.0.1:

location /name/ {rewrite /name/([^/]+) /users?name=$1 break;proxy_pass http://127.0.0.1;}

负载均衡调度算法

调度算法一般可以分为两类:

静态调度算法: 负载均衡器根据自身设定的规则进行分配,不考虑后端节点服务器的情况。比如rr、wrr、ip_hash都属于静态调度算法。

动态调度算法: 负载均衡器会根据后端服务器当前状况来决定是否分发请求。比如least_conn、fair等都属于动态调度算法。

rr轮询算法

按照客户端请求顺序把客户端请求逐一分配给不同的后端节点,若后端节点宕机,则会被自动从节点池中剔除。

wrr权重轮询算法

在rr轮询算法的基础上加上权重,即权重轮询算法。权重和用户访问量成正比,权重值越大,被转发的请求也就越多。

ip_hash算法

每个请求按照客户端IP的hash结果分配,当新的请求到达时,先讲起客户端的IP通过哈希算法哈希出一个值,相同的哈希值会被分配到同一台节点服务器。

该调度算法可以解决动态网页的session共享问题。

fair算法

根据后端节点服务器的响应时间来分配请求,响应时间短的有限分配。

Nginx本身不支持fair调度算法,如果要使用该算法,必须下载upstream_fair模块。

least_conn算法

根据后端节点的连接数来决定分配情况,哪个节点连接数少就分给哪个节点。

url_hash算法

根据访问URL的hash结果来分配请求,让每个URL定向到同一个后端服务器。

Nginx本身不支持url_hash的,如果需要使用该算法,必须安装Nginx的hash模块软件包。

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年7月13日 09:20
下一篇 2022年7月13日 09:21

相关推荐

  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 闲鱼无货源怎么赚钱(闲鱼无货源卖什么好)

    如今电商平台开店,无货源模式已经成为大家最普遍的开店方式了,而其中闲鱼无货源就是不少人的首选。闲鱼无货源是一个很适合普通人操作的暴利项目,如果你没有知识,技能,经验,资源,就先从闲…

    2022年11月25日
  • 百度关键词快速排名的4大原理解析(百度怎么刷关键词)

    近期百度公告惊雷算法2.0,升级之快还是第一次吧,看来百度对于刷点击行为是零容忍了。之前尹华峰SEO技术博客介绍过一篇如何使用刷点击工具,其实市面上有很多这类SEO快速排名的软件,…

    2022年11月25日
  • 锐龙97900x参数规格跑分评测 锐龙97900x属于什么档次

    锐龙9 7900X是锐龙7000系列处理器中性能顶尖的型号之一,它采用了这一代标配的zen4架构和5nm制程工艺,那么它具体的参数跑分如何,在电脑上世纪发挥怎么样呢,下面就来看看锐…

    2022年11月24日
  • vivox90pro配置参数跑分详情 vivox90pro是什么屏幕

    vivox90pro参数配置详情怎么样?vivo手机在昨晚举行了X90系列发布会,有普通款、pro款以及pro+款三个版本,那么vivox90pro具体配置怎么样呢?下面就让小编为…

    2022年11月23日
  • 大疆发布DJI O3 Air Unit图传解决方案 售价1499元

    大疆日前发布了最新的DJI O3 Air Unit 数字图传解决方案,该方案将DJI O3+ 图传与1/1.7 英寸影像传感器相机模块集于一身,具有高画质、低延时、远距离等特点。 …

    2022年11月23日
  • vivox90参数配置详情 vivox90处理器功耗跑分介绍

    vivox90参数配置详情怎么样?vivo手机在昨晚举行了X90系列发布会,有普通款、pro款以及pro+款三个版本,那么vivox90具体配置怎么样呢?下面就让小编为大家介绍一下…

    2022年11月23日
  • ftp端口号(ftp端口号可以自定义吗)

    FTP端口号是21在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户但是,这个账户有个特点,就是其只能够访问自己的主目录服务器通过这种方式来保障FTP服务上其他…

    2022年11月21日
  • seo宣传推广(SEO推广)

    今天小编给各位分享seo宣传推广的知识,其中也会对SEO推广进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! 如何做seo网络推广? 做网络推广的方法: 1、…

    2022年11月20日
  • 绘制高质量的业务流程图的5个步骤详解(业务逻辑流程图解析)

    在日常工作中,产品经理需要经常和业务流程图打交道。对于新手产品经理来说,业务流程图也是必须掌握的基本功之一。但是绘制流程图并不是一件简单的事情,本文作者从自身工作实践出发,结合相关…

    2022年11月20日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息