后端网关服务的负载均衡、集群、高可用

概念

1)负载均衡(load balance)

它是根据某种负载策略把请求分发到集群中的每一台服务器上,让整个服务器群来处理网站的请求。来增加服务器的吞吐量和处理能力,以及承载能力。解决高并发带来的系统性能问题。

2)集群(Cluster)

用 N 台服务器构成一个松耦合的多处理器系统(对网站访问者说,它们就是一个服务器),它们之间通过网络实现通信。让 N 台服务器之间相互协作,共同承载一个网站的请求压力。

3)高可用(HA)

在集群服务器架构中,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。

负载均衡、集群配置

Nginx 是一款轻量级的 Web 服务器、反向代理服务器及电子邮件代理服务器,其特点是占有内存少,并发能力强。在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。

Nginx负载均衡策略

  • 负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream模块是这样的,模块内的server是服务器列表:
    #动态服务器组
    upstream ibps3_zuul {
        server 192.168.3.220:15100;  # zuul
        server 192.168.3.230:15100;  # zuul
    }
  • 在upstream模块配置完成后,要让指定的访问反向代理到服务器列表:

      server {
          listen       ibps3.bpmhome.cn:15100;
    
          location / {
              proxy_pass http://ibps3_zuul;
          }
      }
  • 这就是最基本的负载均衡实例,但这不足以满足实际需求;目前Nginx服务器的upstream模块支持6种方式的分配:

负载均衡策略

策略 说明
轮询 默认方式
weight 权重方式
ip_hash 依据ip分配方式
least_conn 最少连接方式
fair(第三方) 响应时间方式
url_hash(第三方) 依据URL分配方式
  1. 权重配置:

    weight 和请求数量成正比,主要用于上游服务器配置不均衡的情况。下面的配置中,192.168.3.230 机器的请求量是 192.168.3.220 机器请求量的 2 倍。

upstream ibps3_zuul {
    server 192.168.3.220:15100  weight=5;  # zuul
    server 192.168.3.230:15100  weight=10;  # zuul
}
  1. ip_hash 配置:

    每一个请求按照请求的 ip 的 hash 结果分配。这样每一个请求固定落在一个上游服务器,能够解决 ip 会话在同一台服务器的问题。

upstream ibps3_zuul {
    ip_hash;
    server 192.168.3.220:15100;  # zuul
    server 192.168.3.230:15100;  # zuul
}
  1. upstream 中常用的配置项:
  • down:表示当前的 server 不參与负载均衡。
  • weight:负载权重,值越大,负载的权重就越大,默认1。
  • max_fails:最大请求失败尝试的次数默认1。
  • fail_timeout:max_fails次失败后,暂停请求此台服务器的时间。
  • backup:其它全部非 backup 机器 down 或者忙的时候,请求 backup 机器。所以这台机器压力会最轻。
upstream ibps3_zuul {
    server 192.168.3.220:15100 max_fails=2 fail_timeout=20s weight=3;
    server 192.168.3.230:15100 max_fails=2 fail_timeout=20s weight=3;
    server 192.168.3.240:15100 down;
    server 192.168.3.250:15100 backup;
}
文档更新时间: 2019-12-08 20:33   作者:Eddy