使用 Firefox 时,负载平衡会忽略我的一半节点数
Load Balancing ignores half my node count when using Firefox
我已经尝试了两种不同的负载平衡设置,无论我使用哪种技术,我都看到了相同的结果,所以一定是我遗漏了什么。
Digital Ocean Load Balancer to Droplets
Traefik 负载均衡器到容器
在这两种情况下,当我尝试对偶数个容器或液滴进行负载平衡时,它会忽略一半。例如:
- 1个节点,负载均衡发送流量到1。
- 2个节点,负载均衡发送流量到1个。
- 3 个节点,负载均衡发送流量到 3。
- 4个节点,负载均衡发送流量到2个。
我从我在 Digital Ocean 上的设置中截取了一段视频,您可以查看该视频以了解行为:
https://youtu.be/EP_eOtuPGLs
如您所见,当我有 2 个 Droplet 时,它只向 1 发送流量。当我添加第三个 Droplet 时,它向 3 发送流量。请注意,我在 Traefik 中也看到了相同的行为,所以它可能不是特定于这两种技术,而是一般情况下负载平衡所缺少的东西。
经过大量测试后,我发现问题仅限于使用 Firefox。当执行 CURL 或 Chrome 请求时,它返回正确的响应。
比较 Firefox 和 Chrome 中的请求后,我意识到 Firefox 总是发送一个额外的 HTTP 请求来获取网站图标——无论 HTML 是否定义了一个。
这意味着每次我在 Firefox 中访问我的负载均衡器时,它实际上发送了 2 个请求。因此,Web 请求转到了 Droplet A,Favicon 请求转到了 Droplet B。当我刷新页面时,由于负载平衡,Web 请求再次转到了 Droplet A。所以我再也看不到 Droplet B 的任何响应。
总而言之,负载均衡器从来没有问题。只是我使用 Firefox 的测试方法有缺陷。
我已经尝试了两种不同的负载平衡设置,无论我使用哪种技术,我都看到了相同的结果,所以一定是我遗漏了什么。
Digital Ocean Load Balancer to Droplets
Traefik 负载均衡器到容器
在这两种情况下,当我尝试对偶数个容器或液滴进行负载平衡时,它会忽略一半。例如:
- 1个节点,负载均衡发送流量到1。
- 2个节点,负载均衡发送流量到1个。
- 3 个节点,负载均衡发送流量到 3。
- 4个节点,负载均衡发送流量到2个。
我从我在 Digital Ocean 上的设置中截取了一段视频,您可以查看该视频以了解行为: https://youtu.be/EP_eOtuPGLs
如您所见,当我有 2 个 Droplet 时,它只向 1 发送流量。当我添加第三个 Droplet 时,它向 3 发送流量。请注意,我在 Traefik 中也看到了相同的行为,所以它可能不是特定于这两种技术,而是一般情况下负载平衡所缺少的东西。
经过大量测试后,我发现问题仅限于使用 Firefox。当执行 CURL 或 Chrome 请求时,它返回正确的响应。
比较 Firefox 和 Chrome 中的请求后,我意识到 Firefox 总是发送一个额外的 HTTP 请求来获取网站图标——无论 HTML 是否定义了一个。
这意味着每次我在 Firefox 中访问我的负载均衡器时,它实际上发送了 2 个请求。因此,Web 请求转到了 Droplet A,Favicon 请求转到了 Droplet B。当我刷新页面时,由于负载平衡,Web 请求再次转到了 Droplet A。所以我再也看不到 Droplet B 的任何响应。
总而言之,负载均衡器从来没有问题。只是我使用 Firefox 的测试方法有缺陷。