1

我有一个客户端应用程序,它使用 TCP 套接字连接到在 EC2 上运行的自定义服务器。客户端和服务器之间的连接可以持续一段时间(几个小时到一整天)。

我现在正在评估亚马逊的 ELB(Elastic Load Balancer),但担心由于 ELB 的 IP 是动态变化的,当 IP 发生变化时,现有的连接会丢失。谁能确认这是否是它的工作原理?只是与 DNS 名称相关联的 IP 发生了变化吗?这与现有套接字连接的 IP 更改相同吗?最终,这种改变的效果是否会切断现有的基于 TCP 的套接字连接?

额外信息:

这不是一个“标准的”http 或基于浏览器的应用程序——客户端应用程序在移动设备上实时运行,并通过专用 TCP 套接字与服务器通信。服务器执行连续的逻辑,并在连接的整个生命周期内通过这个单一的 TCP 套接字连接与客户端进行来回通信。当ELB决定更改IP时,我想确保客户端不必重新连接到服务器(即销毁/重新创建套接字连接)(如果您合法地离开wifi /蜂窝范围或其他东西,这是一回事,但是我不想仅仅因为 ELB 的一时兴起而断开连接)。

4

1 回答 1

1

不会。ELB 将对新的传入连接进行负载平衡,但不会拆除和重定向现有问题。

然而,正是因为这个原因,我会质疑在这样的系统中使用 ELB 的好处。ELB 不能保证所有实例的负载公平。考虑以下具有两个实例的场景:

  1. ELB 将第一个连接定向到实例 A。
  2. ELB 将第二个连接定向到实例 B。
  3. ELB 将第三个连接定向到实例 A。
  4. 客户端完成后,实例 B 连接断开。

现在您在 A 上有“重”负载,而在 B 上根本没有负载。此时 ELB 将向 B 发送新连接,以平衡负载。当 A 连接断开时,您会进入相反的情况 - B 上的“重”负载,而 A 上没有负载。

当您有多个服务于短请求的实例时,ELB 可能会非常有用。对于长期连接,我会使用静态 IP,而不是将这些实例隐藏在 ELB 后面。

请注意,实际上可以混合使用这两种方法,并让同一个实例使用指向 ELB 和静态 IP 的两个单独的域名来响应 ELB-fronted 请求和静态 IP 请求。

于 2012-11-05T19:08:44.497 回答