【Nginx四】Nginx作为HTTP负载均衡服务器

 Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处:

负载均衡的好处

  • 增加可用资源
  • 增加吞吐量
  • 加快响应速度,降低延时
  • 出错的重试验机制

Nginx主要支持三种均衡算法:

  • round-robin
  • least-connected 负载饱和度算法,Nginx会将请求转发到链接数最少的那太机器上
  • ip-hash  基于访问IP的hash值进行请求分发,适用于一个session的请求必须发送到同一台机器(比如有些Service是有状态)

负载均衡默认配置(round-robin)

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

    server {
        listen 80; 

        location / {
            proxy_pass http://loadbalancer1;
        }
    }
}
  • 默认的负载均衡服务器采用的是均衡算法是round-robin,按顺序依次处理请求
  • 以上配置将发送给Nginx的所有请求转发给代理服务器loadbalancer1,而loadbalancer1是一个配置了三个server的集群环境,每个请求由srv1,srv2,srv3中的一台机器来处理

负载均衡配置(最少链接)

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

    server {
        listen 80; 

        location / {
            proxy_pass http://loadbalancer1;
        }
    }
}
Least-Connected均衡策略适用于请求的场景是有些请求时间长,有些请求时间很多,这样,每次分发时,可以将请求分发到由于执行时间短而空闲的机器  

负载均衡配置(IP Hash)

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

    server {
        listen 80; 

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

负载均衡配置(IP Hash)

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

    server {
        listen 80; 

        location / {
            proxy_pass http://loadbalancer1;
        }
    }
}
ip_hash均衡策略适用于,将一个客户端(来自同一个IP)的连续请求发送到同一个机器上,这样间接的实现了session保持的功能  

猜你喜欢

转载自bit1129.iteye.com/blog/2115056