使用 nginx 负载平衡的连接使用了多少带宽?

使用 nginx 负载平衡的连接使用了多少带宽?

我有3台服务器,每台都有100mbps。

第一台服务器有一个 nginx 负载均衡器,配置像这样

http {
  upstream myproject {
    server 127.0.0.1:8000 weight=3;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
    server 127.0.0.1:8003;
  }

  server {
    listen 80;
    server_name www.domain.com;
    location / {
      proxy_pass http://myproject;
    }
  }
}

在服务器 2 和 3 上我有一段视频。

我想知道,如果 1 个用户 = 1mbps,那么如果有 10 个用户访问服务器 1,它会将他们发送到服务器 2 还是 3?服务器 1、2 和 3 上将有多少带宽?

答案1

理论上,通过负载均衡器连接到您的服务将从该负载均衡器的角度10 x 1Mbps user进行消耗,然后可能类似于服务器 2,另一个类似于服务器 3。10Mbps down5Mbps up5Mbps up

如果负载均衡器上有 100Mbps 全双工连接,则最多可以为 100 位1Mbps用户提供服务。如果是半双工连接(现实生活中还存在这种情况吗?),则最多只能为 50 位用户提供服务。


更新:

需要澄清的是,如果您确实想增加“后端”服务器的带宽,那么“前端”服务器需要将客户端重定向到这两个后端中的任何一个。

从网络角度来看,您的客户端会与您的“负载均衡器”建立 TCP 连接。该会话会持续运行,直到您在其他地方创建另一个会话。但您的负载均衡器会平衡流量,而不是重定向流量。

添加带宽可能意味着:

  • 使用某种循环 DNS,您的公共记录将指向您的每个后端服务器。没有重写。后端故障将导致客户端请求丢失,直到您更新 DNS 或修复后端服务器
  • 使用您的第一台服务器将客户端重写到您的任何后端服务器。这意味着您的后端服务器可通过不同的公共 DNS 访问。将您的“负载均衡器”重新转换为某种“重写网关”。可能意味着一些自定义脚本检查后端可用性以从 nginx 的角度切换配置块。

更新²,由于有关此事的新线索已经开始,......

一种方法是让您的第一台服务器使用指令rewrite,而不是proxy_pass。困难在于重写为动态地址,基于哪个后端实际工作,... 这里给出了一个解决方案:http://www.sourceprojects.org/nginx-stateless-loadbalancer

另一种方法是使用某种循环 DNS。您可能根本不需要为 server1 定义记录,您的区域看起来应该像这样:

$ORIGIN example.com. myservicename A server2.ip.address myservicename A server3.ip.address

相关内容