当前位置:首页 > 技术文章 > 正文内容

Nginx的负载均衡没起作用?原来原因在这里

arlanguage3个月前 (01-31)技术文章38

问题

客户内网系统部署两个后台节点,前面使用Nginx做负载均衡。但出现的问题是, 一台服务器承担了几乎所有流量,而另一台服务器基本上没有任何流量。

分析

问题出在Nginx的负载均衡策略上面。配置的两个节点负载均衡,采用的是ip_hash策略,即基于客户端IP地址来确定访问哪个服务节点的策略。算法是根据请求所属客户端IP计算得到一个数值,然后把请求发往该数值对应的后端。所以同一个客户端的请求,都会发往同一个后台服务节点。除非该节点不可用了。Ip_hash策略的优点是能够保持会话

那么这个策略有什么问题呢?这个问题出在Nginx对Ip_hash的算法上。这段算法的核心部分如下:

for (i = 0; i < 3; i++) {
    // iphp->addr[i]为ip的点分十进制法的第i段
    hash = (hash * 113 + iphp->addr[i]) % 6271; 
}

通过客户端ip计算得到一个值。但是问题就出在这段算法上,可以看到,这段算法循环了三次,而正常的IP地址有四个部分,这里只是将IP的前三个部分作为参数加入hash函数。因此,如果前三部分是一样的话,那么意味着他们都会被分配到同一台服务器上。

那么为什么Nginx要这样设计呢?因为IP地址前三位相同一般意味着来自同一个局域网或者相领区域,使用相同的后端服务能够让Nginx在一定程度上更具有一致性。

所以因为客户的内网用户端多在同一个网段,所以最终的结果就是在同一个网段的请求都被Nginx分发到了一个节点上,导致了两个节点的流量不均衡。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1353.html

分享给朋友:

“Nginx的负载均衡没起作用?原来原因在这里” 的相关文章

泛域名证书免费获取方式

免费通配符证书,也称为泛域名证书,是一种特殊的SSL证书,它允许您使用一张证书保护一个主域名及其所有下级子域名的安全。对于拥有多个子域名的网站来说,通配符证书可以简化证书的管理和部署过程,因为它消除了为每个子域名单独购买和安装证书的繁琐过程。免费通配符证书的部署教程以下是一个基于JoySSL平台的免...

nginx开启ssl并把http重定向到https的两种方式

1 简介Nginx是一个非常强大和流行的高性能Web服务器。本文讲解Nginx如何整合https并将http重定向到https。https相关文章如下:(1)Springboot整合https原来这么简单(2)HTTPS之密钥知识与密钥工具Keytool和Keystore-Explorer(3)Sp...

ThinkPhp6从安装到配置全解

Thinkphp6已经不支持之前安装方式了,只能使用Composer安装,对于V6的新用户来说,真希望有个全过程手册,我就分享一下我自己安装使用的过程,供参考。一、安装Composer在 Linux 和 Mac OS中可以运行如下命令:curl -sS https://getcomposer.org...

nginx出现大量499响应码怎么办?

一、问题现象监控发现Nginx服务日志中出现较多的499状态码,499状态码在Nginx中代表的是客户端在服务端返回之前主动断开了连接,由于客户端设置的超时时间为2s,故到达2s未收到服务端响应客户端主动断开了连接造成了499响应码。二、可能的故障点服务器的问题,例如CPU使用率高,队列堵塞,导致无...

「网络」运维需要掌握的 17 个实用技巧

1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录find . -name “*.tar” -execmv {}./backup/ ;注解:find –name 主要用于查找某个文件名字,-exec 、xargs可以用来承接前面的结果,然后将要执行的动作,一般跟find在一起用的很多,fi...

01《Nginx 入门教程》Nginx 是什么?

关于 Nginx,百度百科的介绍如下:**Nginx (engine x)是一个开源、高性能的 HTTP 和反向代理 Web 服务器,同时也提供了 IMAP/POP3/SMTP 服务”。**首先,对 Web 服务器做一个简要说明:Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序...