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

Nginx负载均衡之ip hash与hash模块,弥补Round-Robin的缺陷

arlanguage5个月前 (12-19)技术文章50

我们前一篇文章: Nginx最重要也是最基本的负载均衡策略:加权Round-Robin介绍了Nginx中的加权round-robin负载均衡算法。

它可以根据上游服务的能力,按照权重 转发不同比例的请求。

但是无法做到某一类请求 只请求到某一台上游服务。如:uid=1的请求都在A服务上, 某个ip的用户都请求在同一服务上。

这种场景,Nginx中有2个模块可以帮助我们来解决。

upstream_ip_hash:看名字就知道 这是基于IP地址进行hash的。它是去拿remote_addr里的值,作为hash算法的关键字,再根据hash算法后的值映射到某一台上游服务器。如果经过了代理的话,我们前面也介绍了可以通过realip模块修改remote_addr的值。

Syntax: ip_hash;
Default: —
Context: upstream



upstream_hash:这个模块不局限于仅仅通过客户端ip地址进行hash。可以指定任意关键字进行hash算法映射到指定上游服务器中。关键字可以是变量,也可以是字符串。

Syntax: hash key [consistent];
Default: —
Context: upstream



现在我们发现这2个模块可以将某一类请求转发到指定上游服务,无论这台上游服务是否正常在线。

就算上游服务中某一台挂了。也不能将其直接从upstream列表中移除。因为移除之后,会导致原有的hash算法发生变化,就会导致原本upstream到A的 现在到B了。从而造成严重的后果。

看到这个场景,有经验的小伙伴都知道 为了解决这种问题。一致性hash算法可以有效缓解这类问题。明天我们再来学习一致性hash在Nginx中的应用。

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

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

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

标签: nginx 指定ip
分享给朋友:

“Nginx负载均衡之ip hash与hash模块,弥补Round-Robin的缺陷” 的相关文章

16《Nginx 入门教程》Nginx防盗链配置

百度百科的解释如下:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。盗链在如今的互联网世界无处不在...

【网络安全】关于PHP Study nginx解析高危漏洞的预警通报

网络安全近日,山石网科安全研究院监测发现PHPStudy Windows最新版本存在nginx解析漏洞,可以造成任意代码执行。一、漏洞情况phpStudy是一个PHP调试环境的程序集成包,该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装...

我采访了一位 Pornhub 工程师,聊了这些纯纯的话题

成人网站在推动 Web 发展方面所起到的作用无可辩驳。从突破浏览器的视频能力限制,到利用 WebSocket 推送广告(防止被广告拦截器拦截),你必须不断想出各种聪明的办法,让自己处在 Web 技术创新的最前沿。最近,我有幸采访了大型成人网站 Pornhub 的一位 Web 开发工程师,了解了相关的...

「每天一道面试题」Nginx 502错误原因和解决方法

Nginx 502错误原因和解决方法不管你是做运维还是做开发,哪怕你是游客,时不时会遇到 502 Bad Gateway 或 504 Gateway Time-out。出现这页面,把服务重启下,再实在不行重启下服务器,问题就解决了,特殊情况请继续阅读。状态码解释502 Bad Gateway:作为网...

Nginx安全相关配置常用教程 nginx安全策略

1. 限制请求速度设置 Nginx、Nginx Plus 的连接请求在一个真实用户请求的合理范围内。比如,如果你觉得一个正常用户每两秒可以请求一次登录页面,你就可以设置 Nginx 每两秒钟接收一个客户端 IP 的请求(大约等同于每分钟30个请求)。limit_req_zone $binary_re...

nginx+spring boot 微服务实现负载均衡

环境准备项目 JDK1.8 以上版本准备好 nginx 环境nginx 配置nginx 的配置文件在/usr/local/nginx/conf 目录下,配置文件 nginx.conf配置信息如下:upstream web_app { server 192.168.226.150:8089 ma...