Nginx 作为一款高性能的代理软件,在工作中常被用做负载均衡器、正向反向代理。最近在看了一个关于 Nginx 的视频,老师讲得很不错。笔者也记录了一下整套课程的一些重点和自己的理解。
上篇:https://segmentfault.com/a/11...
上篇主要跟大家讲述了一下如果使用 Nginx,也是为下篇进行铺垫。接下来的内容能让读者手上的 Nginx 发挥最大作用。
思维导图
那我们开始吧!
sticky 维持状态
上篇介绍了几种调度算法,我们一起回顾一下里面的 ip_hash 和 url_hash
ip_hash:对于紧急扩容场景,使用这种策略能够快速引入新节点,但如果后端服务突然宕机会造成状态丢失,可以使用 Global Session 的方式解决(引入 Spring Session + Redis)。但后端服务数量太多也会对外置的 Redis 造成压力。
upstream flask { ip_hash; server 172.20.0.11:80; server 172.20.0.12:80; }
比如 ERP 系统使用 URL 哈希比较合适,因为对于一个企业,多个用户发出的请求到达路由器后都会转换成同一个 IP,容易造成流量倾斜。考试系统也是相同道理。
url_hash:对于不支持 Cookies 的场景,一般会把 JSESSION_ID 放到 URL 中,这时候可以使用 url_hash 进行调度
- $cookie_jsessioni 基于 SSESION ID 的 hash
- $request_uri; 基于 url 的 hash