最近项目需要提升web服务承载规格,初步选定使用Nginx反向代理+负载均衡,将请求映射到多个服务后端提高系统规格。多项对比后,决定使用Nginx Sticky Module这个第三方模块进行实现,并使用官方自带ip_hash作为备选方案。
方案比较,略。官方自带策略:url_hash、ip_hash、rr;第三方组件:fair、hash、consistent_hash、session_sticky.几种方案中,能够提升web应用负载能力,又不需要对后端代码进行改动的话,要求负载均衡方案具有后端session保持的功能,同一客户端请求需转发到同一服务端,集中方案中:ip_hash、sticky具有这种能力。
服务器环境;suse 11 sp1、vmware workstation 11 依赖:openssl(ssl)、zlib(gzip)、pcre(url rewrite)、nginx-sticky-module-ng(session sticky)。
configure arguments:configure arguments:
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-http_ssl_module
--with-pcre=../pcre-8.36
--with-zlib=../zlib-1.2.8
--with-openssl=../openssl-1.0.2d
--add-module=../nginx-sticky-module-ng
make && make install
ssl配置: 略
配置:
upstream ss_test {
sticky hash=sha1
server ip1:port;
server ip2:port;
}
server {
...
...
#ssl
ssl on;
ssl_certificate /path/server.crt;
ssl_certificate_key /path/server_nopwd.key;
...
...
location /app {
proxy_pass https://ss_test/app;
proxy_set_header Host $host;
#客户端ip,未作测试
proxy_set_header X-Real-IP $remote_addr;
#代理ip,未作测试
proxy_set_header XForwarded-For $proxy_add_x_forwarded_for;
}
}
测试:略
13 Jul 2015,转载请注明:http://www.scylla.me/2015/07/13/nginx-lb