yyyxxxs 2010-03-24
Nginx负载均衡器一直在我们的服务器建设中使用,但是在使用的时候有不少的问题出现。尤其是在处理session共享的几个问题上有不少的问题。下面我们就详细的看看如何才能解决问题。
1) 不使用session,换作cookie
能把session改成cookie,就能避开session的一些弊端,在从前看的一本J2EE的书上,也指明在集群系统中不能用session,否则惹出祸端来就不好办。如果系统不复杂,就优先考虑能否将session去掉,改动起来非常麻烦的话,再用下面的办法。
2) 应用服务器自行实现共享
已知的,php可以用数据库或memcached来保存session,从而在php本身建立了一个session集群,用这样的方式可以令session保证稳定,即使某个节点有故障,session也不会丢失,适用于较为严格但请求量不高的场合。但是它的效率是不会很高的,不适用于对效率要求高的场合。以上两个办法都跟Nginx负载均衡器没什么关系,下面来说说用Nginx负载均衡器该如何处理:
3) ip_hash
Nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session,ip_hash是在upstream配置中定义的: