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。
分享到:
相关推荐
其中,轮询是Nginx的默认策略,IP-hash策略根据IP进行hash算法,fair策略根据后端服务器的响应时间来分配请求,url-hash策略根据url进行hash算法。 在实际应用中,Nginx的负载均衡策略可以根据实际情况选择,例如,...
(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...
在实际应用中,Nginx配置可以非常复杂,包括设置HTTPS、缓存策略、URL重写、限速策略、日志记录等。理解这些配置选项对于优化Web服务性能和保障安全性至关重要。 总结来说,项目打包运行与Nginx配置是Web应用部署的...
` 配置了针对客户端 IP 地址的请求限制。 - `sendfile on; tcp_nopush on; tcp_nodelay on;` 提高了数据传输效率。 - `keepalive_timeout 65;` 设置了持久连接的超时时间。 - `types_hash_max_size 2048; include...
- **错误处理**:讲解了如何在 Nginx 中处理错误,包括如何使用 ngx_errno 和 ngx_socket_errno 宏来获取错误代码,并使用 ngx_log_error() 和 ngx_log_debugX() 记录错误日志。 - **字符串操作**:提供了 Nginx 中...
Nginx支持多种负载均衡策略,如轮询(round-robin)、最少连接(least connections)、IP哈希(ip_hash)等。轮询是默认策略,每个请求按顺序分配到后端服务器。其他策略可以根据实际业务需求进行选择。 ### 配置...
- **基于IP的哈希**:使用`ip_hash`指令可以确保来自同一客户端的请求被发送到相同的后端服务器,这对于会话保持非常重要。 - **公平调度**:通过`fair`调度算法来实现更精确的负载均衡。 - **URL哈希**:使用`url_...
你还可以通过 `ip_hash`、`least_conn` 等策略实现更复杂的负载均衡。 四、Nginx 配置优化 除了基本配置外,你可能还需要关注以下几个优化点: - **日志记录**:配置日志格式和路径,以便分析服务器性能和错误。 ...
4. **IP哈希(IP Hash)**:根据客户端IP地址进行哈希,使相同IP的请求总是被定向到同一台服务器,适用于会话持久化。 **Nginx配置负载均衡:** 在Nginx的配置文件中,通过`upstream`模块定义一组服务器,并设置...
IP Hash Nginx根据客户端IP地址进行哈希运算,每次同一客户端IP的请求都会分配到相同的后端服务器,适用于需要保持会话状态的应用场景。 #### 五、LVS + Nginx组合方案 在实际应用中,为了充分利用四层和七层...
3. **IP哈希(ip_hash)**:根据客户端IP地址进行哈希,使相同IP的请求始终发送到同一台服务器,实现会话持久化。 4. **最少连接数(least connections)**:将新请求分配给当前连接数最少的服务器。 **四、Nginx...
Nginx 支持多种负载均衡策略,如轮询(round-robin)、最少连接数(least connections)、IP 哈希(ip_hash)等。通过在 upstream 块中定义后端服务器列表,可以灵活配置负载均衡策略,以满足不同的业务需求。 **四...
3. **源IP哈希(Source IP Hash)**: - **定义**:根据客户端IP地址进行哈希计算,确定后端服务器。 - **优势**:能够实现客户端到特定服务器的绑定,保持会话一致性。 - **问题**:可能会导致服务器间的负载不...
Nginx支持多种负载均衡策略,包括轮询(rr)、基于IP的散列(ip_hash)、基于响应时间的公平(fair)以及基于URL散列(url_hash)等四种方式。每种策略都有其特点和适用场景。 - **RR (Round Robin)**: 最简单的负载均衡...
介绍如何使用Nginx的urlhash特性来优化Squid缓存服务器的表现。 **16.3 Nginx实践使用memcached模块加速PHP应用程序** 通过集成memcached缓存模块,提高PHP应用程序的性能。 **16.4 Nginx上的Memcached应用改进** ...
3. **负载均衡**:Nginx支持多种负载均衡策略,如轮询(round-robin)、最少连接(least connections)和IP哈希(IP Hash)。在高并发环境下,这些策略能有效分配请求,提高系统整体性能。 4. **静态文件处理**:...
- 如果需要使用多个IP,可以启用Nginx的会话保持功能,如使用`ip_hash`指令,确保来自同一客户端的请求总是被转发到同一个后端服务器。 - 或者,你可以实现单点登录(Single Sign-On, SSO)解决方案,比如使用...