Scylla home about me 技乃艺之末 道乃艺之本 欲善其事 先利其器

nginx下基于sticky module的负载均衡实现

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