2

我正在使用 System.Net.HttpWebRequest 来访问负载均衡器后面的 AWS 中托管的 API 应用程序。LB 有 6 个实例,3 个在 2 个不同的 AZ。因此,LB 的 DNS 条目有 2 个 IP 地址(每个 AZ 1 个)。

当我运行我的 C# 应用程序时,Web 请求似乎在单个 AZ 内的 3 个服务器之间完美平衡。它没有击中第二个可用区。

在我看来,WebRequest 对象只命中绑定到 LB DNS 条目的第一个 IP,这就是流量平衡的原因,但仅在单个 AZ 中。

那有意义吗?如何让 WebRequest 将其他 IP 绑定到 DNS 条目?

4

3 回答 3

1

HttpWebRequest 始终使用列表中的第一个 IP 地址。Route53 以随机顺序从单个负载均衡器返回 IP 地址,这有助于平衡 AZ 之间的负载。

于 2013-03-15T19:39:07.863 回答
0

当 C# 进行 DNS 查找(通过 .NET)时,它会缓存该结果。这意味着它将继续使用它首先返回的任何 IP。

看看如何清除 System.Net 客户端 DNS 缓存?- 这可能会引导您朝着正确的方向前进。

于 2013-03-15T18:16:22.510 回答
-1

我认为您遇到了 AWS ELB 的弱点之一。来自单个 IP 的所有请求都将路由到一个 AZ。这使得 elb 对于具有大量流量但仅来自小 ip 子集的 Web 服务存在问题。

于 2013-03-15T19:09:25.093 回答