zoukankan      html  css  js  c++  java
  • Nginx配置后端服务负载均衡

    参考文章:https://www.cnblogs.com/lave/p/10477375.html

    概念介绍

    负载均衡建立在现有网络结构之上,提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽,增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

    配置修改

    修改nginx配置文件( /etc/nginx/conf.d/default.conf )

    upstream balance {
        # 配置被转发的服务器,其中的 ip 推荐使用内网 ip,可以提高访问速度,weight 为权重,数字越大,权越高,下面的配置代表请求中三分之一分发给第一台服务器,三分之二的请求分发给第二台服务器。
        server 192.168.31.112:8080 weight=1;
        server 192.168.31.113:8080 weight=1;
        server 192.168.31.114:8080 weight=1;
    }
    
    server {
        # 监听的端口
        listen 80;     
        # 域名,如果没有域名可以使用ip进行访问
        server_name 192.168.31.110 #自己的域名获取当前nginx服务器的IP;
            
        location / {
            add_header X-Content-Type-Options nosniff;
            proxy_set_header X-scheme $scheme;
            # 作用是我们可以获取到客户端的真实ip
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Nginx-Proxy true;
            proxy_hide_header X-Powered-By;
            proxy_hide_header Vary;
            # 重点是这里,将代理转发给上方 upstream 中配置的两台服务器去处理,这里的 http:// 后的值必须和 upstream 后面的值一致
            proxy_pass http://balance;
        }
    }
    

    nginx负载均衡策略

    nginx的负载均衡策略有4种:

    轮询(默认)

    最基本的配置方法,它是upstream的默认策略,每个请求会按时间顺序逐一分配到不同的后端服务器。

    具体参数有:

    参数 描述
    fail_timeout 与max_fails结合使用
    max_fails 设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了
    fail_time 服务器会被认为停机的时间长度,默认为10s。
    backup 标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。
    down 标记服务器永久停机了。

    注意:

    • 在轮询中,如果服务器down掉了,会自动剔除该服务器。
    • 缺省配置就是轮询策略。
    • 此策略适合服务器配置相当,无状态且短平快的服务使用。

    weight 权重

    在轮询策略的基础上制定沦陷的几率。数字越大权重越高。例如:

    upstream foo {
        server localhost:8001 weight=2;
        server localhost:8002;
        server localhost:8003 backup;
        server localhost:8004 max_fails=3 fail_timeout=20s;
    }
    

    这里例子中,weight参数用于制定轮询的几率,weight默认值为1;weight的数值和被访问的几率成正比。

    ip_hash IP哈希

    负载均衡器按照客户端IP地址的分配方式,可以确保相同客户端的请求一直发送到相同的服务器。这样每个访客都固定访问一个后端服务器。

    upstream foo {
        ip_hash;
        server localhost:8001 weight=2;
        server localhost:8002;
        server localhost:8003;
        server localhost:8004 max_fails=3 fail_timeout=20s;
    }
    

    注意:

    • 在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight)。
    • ip_hash不能与backup同时使用。
    • 此策略适合有状态服务,比如session。
    • 当有服务器需要剔除,必须手动down掉。

    least_conn 最小连接

    把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果

    upstream foo {
        least_conn;
        server localhost:8001 weight=2;
        server localhost:8002;
        server localhost:8003 backup;
        server localhost:8004 max_fails=3 fail_timeout=20s;
    }
    

    注意:此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。

  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/jockming/p/13291864.html
Copyright © 2011-2022 走看看