千家信息网

nignx负载均衡算法是怎么样的

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,下文给大家带来nignx负载均衡算法是怎么样的,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验来做一个解答。本文主要和大
千家信息网最后更新 2025年02月02日nignx负载均衡算法是怎么样的

下文给大家带来nignx负载均衡算法是怎么样的,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验来做一个解答。

本文主要和大家分享nignx负载均衡算法,希望能帮助到大家。

一、Nginx负载均衡算法

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台云服务器死机,自动剔除故障系统,使用户访问不受影响。

2、weight(轮询权值)

weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。

3、ip_hash源地址哈希法

源地址哈希的思想是根据获取客户端的IP地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

4、fair

比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。

5、url_hash

按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。

一、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

二、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:

upstream bakend {  server 192.168.0.14 weight=10;  server 192.168.0.15 weight=10;  }

三、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:

upstream bakend {  ip_hash;  server 192.168.0.14:88;  server 192.168.0.15:80;  }

四、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream backend {  server server1;  server server2;  fair;  }

五、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

upstream backend {  server squid1:3128;  // 10.0.0.10:7777server squid2:3128;  //10.0.0.11:8888hash $request_uri;  hash_method crc32; }

二、Nginx负载均衡调度状态

在Nginx upstream模块中,可以设定每台后端服务器在负载均衡调度中的状态,常用的状态有:

1、down,表示当前的server暂时不参与负载均衡

2、backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的访问压力最低

3、max_fails,允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。

4、fail_timeout,请求失败超时时间,在经历了max_fails次失败后,暂停服务的时间。max_fails和fail_timeout可以一起使用。

如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。具体配置过程如下:

1. 在http节点下,添加upstream节点。

upstream linuxidc {       server 10.0.6.108:7080;       server 10.0.0.85:8980; }

2. 将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称,即"
http://linuxidc".

location / {             root  html;             index  index.html index.htm;             proxy_pass http://linuxidc; }

3. 现在负载均衡初步完成了。upstream按照轮询(默认)方式进行负载,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。虽然这种方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。适用于图片服务器集群和纯静态页面服务器集群。

除此之外,upstream还有其它的分配策略,分别如下:

weight(权重)

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如下所示,10.0.0.88的访问比率要比10.0.0.77的访问比率高一倍。

upstream linuxidc{       server 10.0.0.77 weight=5;       server 10.0.0.88 weight=10; }

ip_hash(访问ip)

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstream favresin{       ip_hash;       server 10.0.0.10:8080;       server 10.0.0.11:8080; }

fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。

 upstream favresin{            server 10.0.0.10:8080;       server 10.0.0.11:8080;       fair; }

url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。

 upstream resinserver{       server 10.0.0.10:7777;       server 10.0.0.11:8888;       hash $request_uri;       hash_method crc32; }

upstream还可以为每个设备设置状态值,这些状态值的含义分别如下:

down 表示单前的server暂时不参与负载.

weight 默认为1.weight越大,负载的权重就越大。

max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.

fail_timeout : max_fails次失败后,暂停的时间。

backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

upstream bakend{ #定义负载均衡设备的Ip及设备状态

  ip_hash;       server 10.0.0.11:9090 down;       server 10.0.0.11:8080 weight=2;       server 10.0.0.11:6060;       server 10.0.0.11:7070 backup; }

相关推荐:

几种负载均衡技术分享

几种Nginx实现负载均衡的方式

Nginx反向代理和负载均衡实践

以上就是nignx负载均衡算法分享的详细内容,更多请关注其它相关文章!

服务 服务器 均衡 分配 时间 算法 机器 状态 结果 地址 不同 情况 模块 次数 比率 第三方 节点 语句 哈希 调度 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 桂林软件开发的工作好找吗 无锡asus服务器维修地址 网络安全教育课堂视频 oracle数据库安装创建用户 大话手游新开服务器 数据库的decimal 怎么看服务器网口是不是千兆的 下载安装应用无法连接到服务器 网络安全技术课本 深圳财务软件开发教程 针对一个网络进行网络安全 优然尚品互联网科技有限公司 世界互联网科技大佬都有谁 红帽服务器安装 一般财务软件开发的收入 山西晋享团购互联网科技有限公司 我的世界服务器版本不同 计算机网络技术重庆 华为认证网络技术有用吗 全国网络安全与信息化培训 无法连接安全检查服务器 公共互联网网络安全重大事件 数据库终端用户 10个网络安全知识达人 数据库中如何存储大小不一样的字 网络安全管理局有编制吗 腾讯云服务器管理器如何使用 lol服务器状态 信息网络技术产生影响 浙江省网络技术三级
0