正文前言
ip_hash 原理:同一个ip在一段时间内的所有请求都只会转发的同一台后端
(产生一个问题;我们现在都是ipv4的地址我们出去访问网站都是用公用网址访问网站的
一直采用ip_hash来分派后端服务器
假如我们有这个公用ip里面的局域网ip同一时间访问这个网站
那是不是有1w个访问都是同一个公用ip去访问这个proxy
proxy服务器因为用ip_hash都会指派到同一个后端RS
有可能导致负载失衡,极有可能宕机。)
ip_hash简单易用,但有如下问题:
当后端服务器宕机后,session会丢失(可能你在看的视频突然断开,没有观看记录等);
来自同一局域网的客户端会被转发到同一个后端服务器,可能导致负载失衡;
###不适用于CDN网络,不适用于前段还有代理的情况。###
使用cookie
使用sticky_cookie_insert启用会话亲缘关系,
这会导致来自同一客户端的请求被传递到一组服务器的同一台服务器。
避免上述ip_hash中来自同一局域网的客户端和前段代理导致负载失衡的情况。
upstream backend { ##backend别名随便起 和proxy_pass相同就可以
server backend1.example.com;
server backend2.example.com;
sticky_cookie_insert srv_id expires=1h domain=3evip.cn path=/;
} ##1小时过期 域名是xxx 路径是/(doc_root通配)
个人理解相当于你访问网站时
会分派你这个ip一块饼干(有期限的,独特的容易辨识度)
当你手持这块饼干到一定期限失效
你再次访问就会重新分派给你cookie
3、使用后端服务器自身通过相关机制保持session同步,如:使用数据库、redis、memcached 等做session复制
客户端 有一个身份标识的cookie
存储 存储 session 并且有和 cookie的一一对应
搭建存储、请求跨域!!
以上是别人的话。以后我再自己理解!!先复制黏贴