利用 Nginx 做Http 负载均衡

本文大部分内容来自如下链接的官方文档,如果有感兴趣的可以直接阅读。

http://nginx.org/en/docs/http/load_balancing.html

-------------------------------------------------------------------------------------

在多个应用实例间进行负载均衡是优化资源利用率,增大吞吐量,减少延迟和提高容错性一个有效常用方法。

Nginx是一个处理负载均衡的非常有效的工具。

 

负载均衡的方法

Nginx有下面几种负载均衡的方法

round-robin :以循环的方式处理请求

least-connected :下一个请求被分配到有最小活动连接数的服务上

ip-hash:同一个IP会被HASH到同一个服务上去

 

默认的负载均衡配置

http {
    upstream myapp1 {
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

在上面一个实例中,有3个相同的实例srv1-srv3,当负载均衡的方式没有指定时,默认是循环的方式,所有的请求被代理到服务组myapp1中的服务进行负载均衡。

 

最小连接的方式

其它的不变,只下面这部分改变如下

upstream myapp1 {
        least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

  

session一致的方式

upstream myapp1 {
    ip_hash;
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
}

 

权重的方式

upstream myapp1 {
        server srv1.example.com weight=3;
        server srv2.example.com;
        server srv3.example.com;
    }

 

健康检查

Nginx有被动的健康检查,即如果发送到某一个服务器的请求有错误,Nginx会标记这个服务,接下来会避免给这个服务分发请求。

 

附:nginx配置gzip压缩

在http{中}添加如下配置。

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 16 64k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types text/plain html/plain application/json application/javascript application/x-javascript text/css application/xml;
    gzip_vary on;

 然后执行命令,nginx -s reload,万事大吉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值