负载均衡
首先使用nginx配置一个简单的负载均衡:
upstream myupstream{
server *.*.*.*:8080 weight=1;
server *.*.*.*:8081 weight=1;
}
server{
listen *.*.*.*:80
local / {
proxy_pass http://myupstream;
}
}
session不一致产生的原因
在配置了负载均衡之后,本地发出的请求会被分发到不同的服务器上,第一次请求时,服务器1会产生一个session写到服务器内存中并将sessionid返回到本地浏览器中的cookie中,第二次请求时,本地发起请求同时会携带该sessionid到服务器2,但服务器2内存中并不存在该sessionid,因此会创建一个新的session并返回到本地浏览器中,之后的每一次请求都会循环这个过程,导致用户信息丢失。
解决方案
基于IP_HASH的负载均衡
- 实现
设置负载均衡策略为iphash
upstream backserver {
ip_hash;
server *.*.*.*:8080;
server *.*.*.*:8080;
}
- 原理:
同一ip的请求会分发到同一服务器进行处理 - 优点:
1、配置简单,无需修改代码,不入侵应用。
2、便于水平拓展。 - 缺点:
1、服务器出现故障或者重启会导