发布信息

nginx负载平衡的三种模式 (nginx负载均衡配置详解)

     2024-10-22 14:16:24     482

本文目录导航:

nginx负载平衡的三种模式

nginx负载平衡的三种模式包含轮询(round robin)、IP哈希(IP hash)以及起码衔接(least connections)。

1. 轮询(Round Robin):这是nginx自动的负载平衡模式。

当恳求来到时,nginx依照主机列表的顺序,将恳求依次调配到各个主机上。

当一切主机都已接纳到恳求后,nginx再次回到列表的起始位置,启动下一轮的调配。

这种模式繁难明了,实用于主机性能相近,且恳求散布平均的场景。

例如,咱们有三台主机A、B、C。

第一个恳求调配给A,第二个恳求调配给B,第三个恳求调配给C,第四个恳求再次调配给A,以此类推。

2. IP哈希(IP Hash):这种模式中,nginx会依据恳求的IP地址启动哈希计算,而后依据计算结果将恳求调配到特定的主机上。

这种模式保障了同一IP的恳求会被调配到同一台主机上,实用于须要会话坚持的场景,如电商网站。

例如,用户甲的IP地址为192.168.1.1,经哈希计算后被调配到主机A;用户乙的IP地址为192.168.1.2,经哈希计算后被调配到主机B。

那么,只需用户甲的IP地址不变,他的一切恳求都将被调配到主机A。

3. 起码衔接(Least Connections):nginx会实时统计每台主机的衔接数,而后将新恳求调配给以后衔接数起码的主机。

这种模式尽或许地平衡了各个主机的负载,实用于恳求解决期间长短不一,且主机性能有所差异的场景。

例如,主机A、B、C以后的衔接数区分为10、5、15,那么下一个恳求将被调配到主机B,由于它以后的衔接数起码。

以上三种模式各有实用场景,可以依据实践须要启动选用性能。

同时,nginx也允许自定义负载平衡战略,可以依据业务需求启动共性化定制。

经常使用Nginx成功负载平衡

一、负载平衡的作用 1、转发性能 依照必定的算法【权重、轮询】,将客户端恳求转发到不同运行主机上,减轻单个主机压力,提高系统并发量。

2、缺点移除 经过心跳检测的模式,判别运行主机以后能否可以反常上班,假设主机期宕掉,智能将恳求发送到其余运行主机。

3、复原减少 如检测到出现缺点的运行主机恢停上班,智能将其减少四解决用户恳求队伍中。

二、Nginx成功负载平衡 1、源地址哈希法:依据失掉客户端的IP地址,经过哈希函数计算失掉一个数值,用该数值对主机列表的大小启动取模运算,失掉的结果便是客服端要访问主机的序号。
nginx负载均衡配置详解
驳回源地址哈希法启动负载平衡,同一IP地址的客户端,当后端主机列表不变时,它每次都会映射到同一台后端主机启动访问。

2、轮询法:将恳求按顺序轮番地调配到后端主机上,它平衡地看待后端的每一台主机,而不关心主机实践的衔接数和以后的系统负载。

3、随机法:经过系统的随机算法,依据后端主机的列表大小值来随机选取其中的一台主机启动访问。

4、加权轮询法:不同的后端主机或许机器的性能和以后系统的负载并不相反,因此它们的抗压才干也不相反。

给性能高、负载低的机器性能更高的权重,让其解决更多的请;而性能低、负载高的机器,给其调配较低的权重,降落其系统负载,加权轮询能很好地解决这一疑问,并将恳求顺序且依照权重调配到后端。

5、加权随机法:与加权轮询法一样,加权随机法也依据后端机器的性能,系统的负载调配不同的权重。

不同的是,它是依照权重随机恳求后端主机,而非顺序。

6、最小衔接数法:由于后端主机的性能不尽相反,关于恳求的解决有快有慢,最小衔接数法依据后端主机以后的衔接状况,灵活地选取其中以后积压衔接数起码的一台主机来解决以后的恳求,尽或许地提高后端服务的应用效率,将担任正当地分流到每一台主机。

三、性能说明四、轮询五、权重六、iphash七、起码链接八、fair九、完整代码十、也可以经常使用域名

经常使用docker成功nginx负载平衡

Docker部署Nginx成功负载平衡

试验环境:Centos7、Docker、Nginx。

应用宿主机和两个nginx容器来成功负载平衡,宿主机无任何内容。

只搭载一台nginx主机,并由此台主机将恳求转发给两个nginx容器来启动解决。

不知道什么是nginx负载平衡,请移步nginx负载平衡。

一、装置关系环境

1.装置Docker(团体介绍性能阿里云源)\2.宿主机装置Nginx

封锁防火墙和selinux

[root@iZbp18vj2il5rgv6uy66xxZ~]#//Centos7封锁防火墙命令[root@iZbp18vj2il5rgv6uy66xxZ~]#setenforce0//暂时封锁SELinux//假设是宝塔装置,则省略[root@iZbp18vj2il5rgv6uy66xxZ~]#yuminstalldocker-y[root@iZbp18vj2il5rgv6uy66xxZ~]#wget~]#yuminstallnginx-y

传送门:selinux是什么、centos7防火墙命令

用命令测试能否成功装置能否开启服务

//假设是宝塔装置,则省略[root@iZbp18vj2il5rgv6uy66xxZ~]#[root@iZbp18vj2il5rgv6uy66xxZ~]#7启动服务命令与6.x不同哦

测试web页面能否显示成功

齐全ok没疑问!!!

咱们先删除掉nginx自动html,并创立一个空白繁难咱们性能成功后检查成果

[root@iZbp18vj2il5rgv6uy66xxZ~]#cd/www/server/nginx/html[root@iZbp18vj2il5rgv6uy66xxZ~]#[root@iZbp18vj2il5rgv6uy66xxZ~]#二、装置Nginx容器

pullnginx镜像

[root@iZbp18vj2il5rgv6uy66xxZwww]#dockerpullnginxUsingdefaulttag:latestlatest:Pullingfromlibrary//library/nginx:latest

pull成功经常使用dockerimages命令检查

[root@iZbp18vj2il5rgv6uy66xxZwww]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEnginxlatestf8f4ffc8092c7daysago133MB

dockerrun创立容器

//容器名:nginx_web1映射容器8080端口到宿主机80端口上dockerrun-p8080:80--namenginx_web1-itnginx/bin/bash

进入nginx_web1容器的nginx目录下创立一个

root@9f88cab79ac8:/#cd/usr/share/nginx/html/root@9f88cab79ac8:/usr/share/nginx/html#@9f88cab79ac8:/usr/share/nginx/html#@9f88cab79ac8:/usr/share/nginx/html#echohellonginx_web1ninetySeven>@9f88cab79ac8:/usr/share/nginx/html#exit

上方创立多一个新的nginx容器

//容器名:nginx_web2映射容器8080端口到宿主机80端口上dockerrun-p8081:80--namenginx_web2-itnginx/bin/bash

进入nginx_web2容器的nginx目录下创立一个

root@f1b7fcac2dad:/#cd/usr/share/nginx/html/root@f1b7fcac2dad:/usr/share/nginx/html#@f1b7fcac2dad:/usr/share/nginx/html#@f1b7fcac2dad:/usr/share/nginx/html#echohellonginx_web2ninetySeven>@f1b7fcac2dad:/usr/share/nginx/html#exit

先检查容器

[root@iZbp18vj2il5rgv6uy66xxZwww]#dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESf1b7fcac2dadnginx/docker-entrypoint.…4minutesagoUpaboutaminute0.0.0.0:8081->80/tcp,:::8081->80/tcpnginx_web29f88cab79ac8nginx/docker-entrypoint.…10minutesagoUp49seconds0.0.0.0:8080->80/tcp,:::8080->80/tcpnginx_web1

exit分开后容器不运转先启动两个nginx容器再口头启动服务命令

//假设是宝塔装置,则省略[root@iZbp18vj2il5rgv6uy66xxZ~]#[root@iZbp18vj2il5rgv6uy66xxZ~]#7启动服务命令与6.x不同哦0三、性能宿主机nginx文件

模式一:命令行操作(介绍)

//假设是宝塔装置,则省略[root@iZbp18vj2il5rgv6uy66xxZ~]#[root@iZbp18vj2il5rgv6uy66xxZ~]#7启动服务命令与6.x不同哦1

模式二:关上宝塔面板找到nginx治理

在http段参与以下代码

//假设是宝塔装置,则省略[root@iZbp18vj2il5rgv6uy66xxZ~]#[root@iZbp18vj2il5rgv6uy66xxZ~]#7启动服务命令与6.x不同哦2

保留性能偏重启宿主机Nginx或许宝塔面板nginx治理重启服务

//假设是宝塔装置,则省略[root@iZbp18vj2il5rgv6uy66xxZ~]#[root@iZbp18vj2il5rgv6uy66xxZ~]#7启动服务命令与6.x不同哦3

检查Nginx容器运转形态

注:假设是线上主机,则须要在主机和宝塔界面开启端口

主机性能端口

宝塔性能端口

五、测试

再刷新几次?

web1web2看进去了吧?

以上基于docker成功nginx负载成功!!!

相关内容 查看全部