使用NGINX做负载均衡器时,常遇到如何将来自同一用户的访问始终定向到一台后端设备进行响应,一般nginx上面有下面办法来实现会话保持:
1、ip_hash nginx原生支持的基于IP地址来将不同的请求转发到同一台服务器进行响应,缺点就是如果前端用户都来自同一局域网,基于ip的负载方法会导致负载不均衡;
2、sticky 基于cookie来进行负载转发,保证将来自同一cookie的访问始终定向到同一服务器响应,缺点就是需要编译模块,而且,cookie需要浏览器支持。
ip_hash这里不做介绍了,使用也比较简单,最近项目上在用,也是使用了sticky模块。
sticky模块下载,提供了zip、bz2、gz格式的包,按需自己下载即可:https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/downloads/?tab=tags
#我这里使用1.2.6的zip包
unzip nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.zip
#因为解压出来的名称太长了,所以改个名
mv nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d nginx-sticky-module
#安装OpenSSL及openssl-devel
yum -y install openssl openssl-devel
#重新编译ngi