[转帖]Nginx负载均衡之ip_hash

nginx,负载,均衡,ip,hash · 浏览次数 : 0

小编点评

**ip_hash** 是一个根据用户请求过来的ip,然后映射成hash值,然后分配到一个特定的服务器里面的方法。 **原理:** 1. 根据客户端IP计算得到一个数值。 2. 根据计算所得数值,找到对应的后端。 3. 遍历后端链表时,依次减去每个后端的权重,直到w小于某个后端的权重。 4. 选定的后端在链表中的序号为p。 **如何在nginx里使用ip_hash?** 1. 添加ip_hash关键字即可,后续同一ip的访问将只会请求同一个服务器进行处理。 2. 在nginx中定义ip_hash的算法,例如: ```nginx upstream backend_pool { server 192.168.1.10; server 192.168.1.11; server 192.168.1.12; weight 5; allow 192.168.1.1; ip_hash; } ``` **文章知识点与官方知识档案匹配:** * 文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8411 人正在系统学习中。 **其他信息:** * ip_hash是一种基于IP地址哈希的负载均衡方案,可以保持会话的效果。 * ip_hash能够达到保持会话的效果,因为它确保了同一个客户端连续的Web请求会被分配到同一台后端。

正文

原理: 通过哈希值和ip进行运算,得出一个哈希字符串,一个值。分发的时候进行判断请求之前是否和哈希绑定过。有的话则优先分配 匹配到对应哈希值的服务器上。

什么是ip_hash?

  • ip_hash是根据用户请求过来的ip,然后映射成hash值,然后分配到一个特定的服务器里面;
  • 使用ip_hash这种负载均衡以后,可以保证用户的每一次会话都只会发送到同一台特定的Tomcat里面,它的session不会跨到其他的tomcat里面去的;
  • 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

hash算法原理
第一步,根据客户端IP计算得到一个数值。

hash1 = (hash0 * 113 + addr[0]) % 6271;
hash2 = (hash1 * 113 +addr[1]) % 6271;
hash3 = (hash2 * 113 + addr[2]) % 6271;

hash3就是计算所得的数值,它只和初始数值hash0以及客户端的IP有关。

第二步,根据计算所得数值,找到对应的后端。

w = hash3 % total_weight; 
while (w >= peer->weight) { 
w -= peer->weight; 
peer = peer->next;
 p++;
  }

    total_weight为所有后端权重之和。遍历后端链表时,依次减去每个后端的权重,直到w小于某个后端的权重。选定的后端在链表中的序号为p。因为total_weight和每个后端的weight都是固定的,所以如果hash3值相同,则找到的后端相同。

    如何在nginx里使用ip_hash?
    在这里插入图片描述
    直接添加ip_hash关键字即可,后续同一ip的访问将只会请求同一个服务器。

    —————分割线 😃—————

    使用基于IP地址哈希的负载均衡方案。这样的话,同一客户端连续的Web请求都会被分发到同一服务器进行处理。
    ip_hash算法的原理很简单,根据请求所属的客户端IP计算得到一个数值,然后把请求发往该数值对应的后端。
    所以同一个客户端的请求,都会发往同一台后端,除非该后端不可用了。ip_hash能够达到保持会话的效果。

    文章知识点与官方知识档案匹配,可进一步学习相关知识
    云原生入门技能树首页概览8411 人正在系统学习中

    与[转帖]Nginx负载均衡之ip_hash相似的内容:

    [转帖]Nginx负载均衡之ip_hash

    原理: 通过哈希值和ip进行运算,得出一个哈希字符串,一个值。分发的时候进行判断请求之前是否和哈希绑定过。有的话则优先分配 匹配到对应哈希值的服务器上。 什么是ip_hash? ip_hash是根据用户请求过来的ip,然后映射成hash值,然后分配到一个特定的服务器里面;使用ip_hash这种负载均

    [转帖]nginx的ip_hash算法

    概念 根据用户请求的ip,利用算法映射成hash值,分配到特定的tomcat服务器中。主要是为了实现负载均衡,只要用户ip固定,则hash值固定,特定用户只能访问特定服务器,解决了session的问题。 源码分析 ip_hash算法的处理代码位于src\http\modules\ngx_http_u

    [转帖]Nginx四层负载均衡详解

    https://developer.aliyun.com/article/885599?spm=a2c6h.24874632.expert-profile.315.7c46cfe9h5DxWK 2022-04-14 322举报 简介: Nginx四层负载均衡就是实现通过访问某个ip的端口转发至对应的

    [转帖]nginx如何实现负载均衡、限流、缓存、黑白名单和灰度发布

    https://zhuanlan.zhihu.com/p/464491494 挺好的文章. nginx负载均衡配置 1.负载均衡配置 http { upstream real_server { server 192.168.1.100:8082 weight=1; #轮询服务器和访问权重 serve

    [转帖]Nginx 负载均衡 和 健康检查

    https://www.jianshu.com/p/fbb0a81604d9 简介 从 nginx 下载, 到模块安装 关于为什么不使用 ngx_http_upstream_module 测试过 ngx_http_upstream_module 这个模块, 在应用稳定的情况下做做负载均衡还可以. 但

    [转帖]Nginx(四)负载均衡

    一 nginx目录的说明 1 nginx/ 3 |-- client_body_temp 4 |-- conf #这是Nginx所有配置文件的目录,极其重要 5 | |-- fastcgi.conf 'fastcgi相关参数的配置文件' 6 | |-- fastcgi.conf.default #f

    [转帖]解决Nginx负载均衡重复提交问题

    https://www.qiansw.com/resolving-nginx-load-balancing-repeated-commit-problems.html 这篇文章的发布时间较早,其中的信息可能已经过时,阅读时请注意甄别。 Nginx [测试环境 Tengine version: Ten

    [转帖]Nginx/LVS/HAProxy负载均衡软件的优缺点详解

    转载:http://www.ha97.com/5646.html PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应

    [转帖]【官方文档】Nginx负载均衡学习笔记(三) TCP和UDP负载平衡官方参考文档

    本章介绍如何使用NGINX Plus和NGINX开放源代理和负载平衡TCP和UDP流量。 目录 介绍先决条件配置反向代理配置TCP或UDP负载平衡被动健康监控 选择负载平衡方法配置会话持久性 主动健康监控 怎么运行的先决条件基本配置微调健康检查使用匹配配置块进行微调健康检查 TCP的微调健康检查UD

    [转帖]Nginx性能调优

    https://www.jianshu.com/p/024b33d1a1a1/ 本文翻译自Tuning NGINX for Performance Nginx以高性能负载均衡、缓存和web服务器出名,支撑着世界上繁忙网站中的40%。大多数使用场景下,Nginx和Linux系统的默认配置表现较好,但是