Nginx-upstream模块

upstream:实现不同的调度功能

1、轮询分配(rr):将请求平均分配给各个web主机。

[root@lb02 ~]# curl www.test.com
10.0.0.7 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.8 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.9 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.7 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.8 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.9 www.test.com

2、权重分配(wrr):根据配置将请求按照能力分配,能力越强处理请求越多。

upstream test {
   server 10.0.0.7:80 weight=3;
   server 10.0.0.8:80 weight=2;
   server 10.0.0.9:80 weight=1;
}

[root@lb02 ~]# curl www.test.com
10.0.0.9 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.8 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.7 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.7 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.8 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.7 www.test.com

3、实现热备功能:将一台主机作为备胎,当非备胎主机发生故障时才会请求备胎主机,当非备胎主机恢复正常,备胎主机又回归以前待机状态。

upstream test {
  server 10.0.0.7:80;
  server 10.0.0.8:80;
  server 10.0.0.9:80 backup;
}

[root@lb02 ~]# curl www.test.com
10.0.0.7 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.8 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.7 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.8 www.test.com
[root@lb02 ~]# curl www.test.com
10.0.0.7 www.test.com

4、定义最大请求失败次数(配合间隔时间):客户端请求访问一个网页,当请求失败次数到了配置值,在配置的指定时间内将不能继续发送请求访问这个页面;当指定时间一过,则会再给一次机会让你请求访问这个页面。

upstream test {
  server 10.0.0.7:80;
  server 10.0.0.8:80;
  server 10.0.0.9:80;
  max_fails=5;
}

5、定义失败之后重发的间隔时间(配合失败次数):当失败次数到了固定值,则在间隔时间内不能发送请求访问,时间一过,将会再给一次机会让你请求访问。

upstream test {
  server 10.0.0.7:80;
  server 10.0.0.8:80;
  server 10.0.0.9:80;
  fail_timeout=10s;
}

实现不同调度算法

1. rr  轮询调度算
2. wrr 权重调度算法

3. ip_hash:每个请求按客户端 IP 的 hash 结果分配,当新的请求到达时,先将客户端IP通过哈希算法哈希出一个值,
在随后的客户端请求中,客户 IP 的哈希值只要相同,就会被分配至同一台服务器,该调度算法可以解决动态网页的
session共享问题,但有时会导致请求分配不均,即无法保证 1:1 的负载均衡,因为在国内大多数公司都是 NAT 上网
模式,多个客户端会对应一个外部 IP,所以,这些客户端都会被分配到同一节点服务器,从而导致请求分配不均。(出现反复登录的时候)

PS:当负载调度算法为 ip_hash时,后端服务器在负载均衡调度中的状态不能有 weight 和 backup ,即使有也不会生效。

upstream test {
  ip_hash;
  server 10.0.0.7:80;
  server 10.0.0.8:80;
  server 10.0.0.9:80;
}

4. least_conn:least_conn 调度算法会根据后端节点的连接数来决定分配情况,哪个机器连接数少就分发。

upstream test {
  least_conn;
  server 10.0.0.7:80;
  server 10.0.0.8:80;
  server 10.0.0.9:80;
}
posted @ 2021-08-30 13:49  Cai_HL  阅读(62)  评论(0编辑  收藏  举报
>