趁热打铁,再接上文。

前提:负载均衡,负载均衡,顾名思义就是减少一个人的工作量,分配给其他人做,达到缩短时间嘛。nginx 的负载均衡已是分布式开发必要手段之一,随着站点请求量与并发量达到一定程度的时候,一台服务器是无法承受的,很容易就发生宕机,为了避免这种情况,以下我们就来学习一下nginx 的负载均衡吧~

说明:Nginx 的负载均衡是实现了反向代理

负载均衡常用方式:

  1. 轮询(默认的)
upstream backserver {
    server 192.168.0.3;
    server 192.168.0.4;
}

按请求时间来分配服务器,其中一台宕机的话,会进行跳过。

2. 权重

upstream backserver {
    server 192.168.0.3 weight=2;
    server 192.168.0.4 weight=8;
}

轮询的几率,按请求比例来,像上面的就是20%与80%。适用于不同服务器性能有差异的情况。

3. ip_hash

upstream backserver {
    ip_hash;
    server 192.168.0.3;
    server 192.168.0.4;
}

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个服务器,用于服务器需要记录session的情况下。

4. fair(需安装)

upstream backserver {
    server 192.168.0.3;
    server 192.168.0.4;
    fair;
}

按照各个server响应的时间分配,响应时间短的优先分配。

 

修改nginx.conf文件

worker_processes  4;
events {
    # 最大并发数
    worker_connections  1024;
}
http{
    # 待选服务器列表
    upstream myproject{
        #默认是轮询
        server 135.219.42.4 fail_timeout=60s;
        server 174.21.2.183;
        server 179.31.2.183 down;#不参与负载
        }

    server{
                # 监听端口
                listen 80;
                # 根目录下
                location / {
                    # 选择哪个服务器列表,记得与upstream 中配置名对应
                    proxy_pass http://myproject;
                }

            }
}

 

除此之外,每个server可以配置为

1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大,(ip_hash情况下不能制定权重)。
3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

 

参考资料:https://blog.csdn.net/qq_28602957/article/details/61615876

您或许感兴趣

[2018-09-17]正向代理以及反向代理
[2018-09-14]egg 获取multipart/formdata文件流并再重新包装发送
[2018-09-23]Epoll I/O多路复用以及select 、poll介绍
[2018-10-14]Simple Rtmp Server (srs) 与 Flv.js 实现直播功能

发表评论

电子邮件地址不会被公开。