nginx负载均衡

什么是负载均衡

负载均衡实际上就是将大量的请求进行分布式处理的策略。

  • 正向代理:就是替客户端访问服务端(vpn),服务器不知道具体是谁访问它
  • 反向代理:就是替服务端接收客户端的请求,客户端不知道是哪一个服务器返回(负载均衡)

负载均衡常用算法

  • 轮询
  • 加权轮询

1.轮询

轮询为负载均衡中较为基础也较为简单的算法,它不需要配置额外参数。假设配置文件中共有n台服务器,该算法遍历服务器节点列表,并按节点次序每轮选择一台服务器处理请求。当所有节点均被调用过一次后,该算法将从第一个节点开始重新一轮遍历

注:由于该算法中每个请求按时间顺序逐一分配到不同的服务器处理,因此适用于服务器性能相近的集群情况,其中每个服务器承载相同的负载。但对于服务器性能不同的集群而言,该算法容易引发资源分配不合理等问题。

2.加权轮询

为了避免普通轮询带来的弊端,加权轮询应运而生。在加权轮询中,每个服务器会有各自的 weight。一般情况下,weight 的值越大意味着该服务器的性能越好,可以承载更多的请求。该算法中,客户端的请求按权值比例分配,当一个请求到达时,优先为其分配权值最大的服务器

注:加权轮询可以应用于服务器性能不等的集群中,使资源分配更加合理化

应用场景

当前有三台性能不同的服务器。需要用nginx做一个负载均衡。

pc1: 192.168.56.101 双核4G

pc2: 192.168.56.102 四核4G

pc3: 192.168.56.103 八核4G

在 nginx.conf 文件中配置好需要轮询的服务器和代理

# 轮询的服务器,写在 http 中的 upstream 对象里:
upstream testServer { # 自定义集群
  server 192.168.56.101 weight=5 max_fails=3 fail_timeout=10s;
  server 192.168.56.102 weight=8;
  server 192.168.56.103 weight=10;
}
# 代理地址,写在 http 中的 server 对象里:
location / {
  root   html;
  index  index.html index.htm;
  proxy_pass http://testServer; # testServer 为自己定义的服务器集群
}

此处的max_fails可以理解为超时次数,fail_timeout为超时时间

posted @ 2022-08-10 11:27  冰块好冰  阅读(61)  评论(0)    收藏  举报