使用nginx作HTTP负载均衡

本文介绍了Nginx作为高效负载均衡器的应用,包括轮询、最少连接、IP哈希和权重等四种主要的负载均衡策略。此外还讨论了如何通过健康检查确保服务器的稳定性和可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      负载均衡是一种跨越多个应用实例,通常用来优化资源配置/最大化吞吐量/减少延迟/保证容错性配置的技术。

      nginx是一种非常有效的负载均衡器,它可以给几个应用服务和分发任务,并提高nginx web应用程序的性能,可扩展及可靠性。

负载均衡的几种方式:

1.轮询(round-robin

这个是nginx默认的负载均衡策略,下面这个配置中3个相同的应用程序服务器srv1-srv3,所有的请求通过反向代理给了myapp1组,nginx通过负载均衡来分发这些请求到三个服务上

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

    server {
        listen 80;

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

2.最少连接(least-connected):nginx不会将请求分发到繁忙的机器上面,而且将新的请求分发的较清闲的机器上面

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

模块中配置least_conn指令来激活least-connected负载模式

3.ip-hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

upstream myapp1 {
    ip_hash;
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
}
4.weight:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
upstream myapp1 {
     server srv1.example.com weight=3;
     server srv2.example.com;
     server srv3.example.com;
}
上面的配置中,如果有5个请求,有3个会分配到serv1上,有1个会分配到srv2上,有一个会分配到srv3上。如果不指定weight,默认是平的的


        负载均衡包含服务器的健康检查,如果某个请求被分配到了一个服务器上,服务器无法响应,那么nginx会标记它失败了,在短时间内,nginx是不会将之后的请求分配给标记失败的服务器。max_fails指令可以设置最大失败次数,默认是1,需要先设置了fail_timeout才行。fail_timeout指定响应时间超过多少秒就将服务器标记为失败。服务器标记失败后,nginx会使用几个客户端请求优雅地探测服务器,如果探测成功,则服务器标记成功。

         除了以上几种方式之外,还有fair,url_hash的方式,大家可以参考:http://www.cnblogs.com/xiaogangqq123/archive/2011/03/04/1971002.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值