通过ip_hash做会话保持有一定的缺陷,这个是通过客户端ip来实现。同一个网络下众多客户端访问服务器会被扔到同一台机器,再或者是CDN也会导致负载不均衡。所以要实现通过客户端cookie实现,包括F5、深信服设备其中的会话保持也是通过插入cookie值来实现会话保持。下次客户端访问服务器,带上本地cookie,nginx中的sticky模块分析并扔到对应服务器中。
软件版本:
nginx-1.6.0 (后来用nginx-1.2.3)
nginx-sticky-module-1.1
安装:
[root@localhost nginx-1.6.0]# ./configure –prefix=/usr/local/nginx/ –add-module=../nginx-sticky-module-1.1
[root@localhost nginx-1.6.0]# make
make时报错:
objs/addon/nginx-sticky-module-1.1/ngx_http_sticky_misc.o] 错误 1
参考解决方法:
方法一:
http://www.blogjava.net/sliverfancy/archive/2014/03/28/411594.html
说安装openssl-devel,试过无效。
方法二(未测试):
nginx-1.5.x和nginx-sticky-module-1.1编译会有点问题,应该是nginx新版本没有相应的nginx-sticky-module,解决办法是把nginx-sticky-module-1.1/ngx_http_sticky_misc.c的281行修改为:
digest->len = ngx_sock_ntop(in,sizeof(struct sockaddr_in), digest->data, len, 1);
方法三:
降低nginx版本,我这里换为nginx-1.2.3编译通过。
sticky模块参数只用于upstream段中,并且不能和ip_hash同时存在。
支持的参数:
sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1] [no_fallback];
name: 可以为任何的string字符,默认是route
domain:哪些域名下可以使用这个cookie
path:哪些路径对启用sticky,例如path/test,那么只有test这个目录才会使用sticky做负载均衡
expires:cookie过期时间,默认浏览器关闭就过期,也就是会话方式。
no_fallbackup:如果设置了这个,cookie对应的服务器宕机了,那么将会返回502(bad gateway 或者 proxy error),建议不启用。
配置参考(反向代理部分略过):
upstream apache {
sticky name=srv_id expires=1h domain=.test.com path=/;
server 192.168.5.4 max_fails=3 fail_timeout=20s;
server 192.168.5.5 max_fails=3 fail_timeout=20s;
}
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔