最近项目需要提升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-ngmake && 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