我有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 down
5Mbps up
5Mbps 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