`
sslaowan
  • 浏览: 380312 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nginx IP Hash一点记录

 
阅读更多

     Nginx的ip hash只取ip地址的前三段进行hash:

 

 for (i = 0; i < 3; i++) {
            hash = (hash * 113 + iphp->addr[i]) % 6271;
        }
 
        p = hash % iphp->rrp.peers->number;

 

   那么这三段是怎么知道是前三段呢:

 

   sin = (struct sockaddr_in *) r->connection->sockaddr;
        p = (u_char *) &sin->sin_addr.s_addr;
        iphp->addr[0] = p[0];
        iphp->addr[1] = p[1];
        iphp->addr[2] = p[2];

   有个概念叫网络字节序,主机字节序。

   主机字节序与cpu和os有关。有大端法和小端法之分http://blog.csdn.net/sunboy_2050/article/details/6061528

    网络字节序是大端输出。

 

     我在nginx源码里加了段log,iphp->addr[0]输出结果为172,我是使用的ip是172.xx.xx.xxx。另外有三个同事分别访问了一下,只有最后一位不同,结果都hash到了一台机器上。

     还有同事做了个试验,把一个B类网段的最后一段从1试验到255,最终都hash到了一台backend上。

 

    nginx的ip hash不是一致性hash。

 

 

分享到:
评论

相关推荐

    Llinux环境Nginx安装与配置

    其中,轮询是Nginx的默认策略,IP-hash策略根据IP进行hash算法,fair策略根据后端服务器的响应时间来分配请求,url-hash策略根据url进行hash算法。 在实际应用中,Nginx的负载均衡策略可以根据实际情况选择,例如,...

    nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

    (f)Nginx sticky模块不能与ip_hash同时使用 sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1] [no_fallback] [secure] [httponly]; [name=route] 设置用来记录会话的cookie...

    项目打包运行dist以及nginx配置

    在实际应用中,Nginx配置可以非常复杂,包括设置HTTPS、缓存策略、URL重写、限速策略、日志记录等。理解这些配置选项对于优化Web服务性能和保障安全性至关重要。 总结来说,项目打包运行与Nginx配置是Web应用部署的...

    nginx配置+https

    ` 配置了针对客户端 IP 地址的请求限制。 - `sendfile on; tcp_nopush on; tcp_nodelay on;` 提高了数据传输效率。 - `keepalive_timeout 65;` 设置了持久连接的超时时间。 - `types_hash_max_size 2048; include...

    nginx开发指南

    - **错误处理**:讲解了如何在 Nginx 中处理错误,包括如何使用 ngx_errno 和 ngx_socket_errno 宏来获取错误代码,并使用 ngx_log_error() 和 ngx_log_debugX() 记录错误日志。 - **字符串操作**:提供了 Nginx 中...

    nginx负载均衡配置文档.pdf

    Nginx支持多种负载均衡策略,如轮询(round-robin)、最少连接(least connections)、IP哈希(ip_hash)等。轮询是默认策略,每个请求按顺序分配到后端服务器。其他策略可以根据实际业务需求进行选择。 ### 配置...

    nginx负载均衡 nginx+tomcat tomcat实现负责均衡

    - **基于IP的哈希**:使用`ip_hash`指令可以确保来自同一客户端的请求被发送到相同的后端服务器,这对于会话保持非常重要。 - **公平调度**:通过`fair`调度算法来实现更精确的负载均衡。 - **URL哈希**:使用`url_...

    nginx-1.12.2和安装配置文档.zip

    你还可以通过 `ip_hash`、`least_conn` 等策略实现更复杂的负载均衡。 四、Nginx 配置优化 除了基本配置外,你可能还需要关注以下几个优化点: - **日志记录**:配置日志格式和路径,以便分析服务器性能和错误。 ...

    nginx 负载均衡for windows, 跨越 100万TCP连接

    4. **IP哈希(IP Hash)**:根据客户端IP地址进行哈希,使相同IP的请求总是被定向到同一台服务器,适用于会话持久化。 **Nginx配置负载均衡:** 在Nginx的配置文件中,通过`upstream`模块定义一组服务器,并设置...

    nginx负载均衡实现

    IP Hash Nginx根据客户端IP地址进行哈希运算,每次同一客户端IP的请求都会分配到相同的后端服务器,适用于需要保持会话状态的应用场景。 #### 五、LVS + Nginx组合方案 在实际应用中,为了充分利用四层和七层...

    Nginx-1.8.0

    3. **IP哈希(ip_hash)**:根据客户端IP地址进行哈希,使相同IP的请求始终发送到同一台服务器,实现会话持久化。 4. **最少连接数(least connections)**:将新请求分配给当前连接数最少的服务器。 **四、Nginx...

    05尚硅谷_Nginx_hit1qr_nginx尚硅谷_nginx_

    Nginx 支持多种负载均衡策略,如轮询(round-robin)、最少连接数(least connections)、IP 哈希(ip_hash)等。通过在 upstream 块中定义后端服务器列表,可以灵活配置负载均衡策略,以满足不同的业务需求。 **四...

    HAProxy+Nginx实现负载均衡

    3. **源IP哈希(Source IP Hash)**: - **定义**:根据客户端IP地址进行哈希计算,确定后端服务器。 - **优势**:能够实现客户端到特定服务器的绑定,保持会话一致性。 - **问题**:可能会导致服务器间的负载不...

    nginx-负载均衡宕机配置nginx会进行恢复并进行重新监听

    Nginx支持多种负载均衡策略,包括轮询(rr)、基于IP的散列(ip_hash)、基于响应时间的公平(fair)以及基于URL散列(url_hash)等四种方式。每种策略都有其特点和适用场景。 - **RR (Round Robin)**: 最简单的负载均衡...

    Nginx 应用技术指南

    介绍如何使用Nginx的urlhash特性来优化Squid缓存服务器的表现。 **16.3 Nginx实践使用memcached模块加速PHP应用程序** 通过集成memcached缓存模块,提高PHP应用程序的性能。 **16.4 Nginx上的Memcached应用改进** ...

    nginx-1.5.1

    3. **负载均衡**:Nginx支持多种负载均衡策略,如轮询(round-robin)、最少连接(least connections)和IP哈希(IP Hash)。在高并发环境下,这些策略能有效分配请求,提高系统整体性能。 4. **静态文件处理**:...

    Nginx 代理 Apache 下某一个工程

    - 如果需要使用多个IP,可以启用Nginx的会话保持功能,如使用`ip_hash`指令,确保来自同一客户端的请求总是被转发到同一个后端服务器。 - 或者,你可以实现单点登录(Single Sign-On, SSO)解决方案,比如使用...

Global site tag (gtag.js) - Google Analytics