试图了解 AWS 扩展是如何工作的

Trying to understand how does the AWS scaling work

我还不明白缩放的一件事。假设一个简单的场景 ELB -> EC2 前端 -> EC2 后端

当流量很高时,会创建新的前端实例,但是,如何建立与后端的连接?

后端应用程序如何跟踪它从哪个 EC2 接收,以便它可以响应正确的最终用户?

此外,如果从其中一个自动创建的实例建立了连接,然后流量再次变低并删除该实例,会发生什么情况。与最终用户的连接丢失了?

FWIW,服务器之间的连接是通过 WebSocket。

假设,例如,您的 ec2 'front-ends' 是网络服务器,而您的后端是数据库服务器,当启动新的前端实例时,它们必须从 'gold' 您之前使用所有必需的软件和配置信息设置的 AMI,或者作为机器启动的一部分,它必须安装您的所有自定义项(两种方法均有效)。无论使用哪种方法,他们都知道如何找到后端服务器,可以通过 IP 地址,也可以通过新启动计算机上的配置信息中的 DNS 记录。

您无需担心后端会跟踪客户端 - 每个与后端通信的客户端都有一个 IP 地址,TCPIP 会为您处理握手。

就关闭实例而言,您可以启用连接耗尽以确保现有 conversations/connections 不会丢失:

When Connection Draining is enabled and configured, the process of deregistering an instance from an Elastic Load Balancer gains an additional step. For the duration of the configured timeout, the load balancer will allow existing, in-flight requests made to an instance to complete, but it will not send any new requests to the instance. During this time, the API will report the status of the instance as InService, along with a message stating that “Instance deregistration currently in progress.” Once the timeout is reached, any remaining connections will be forcibly closed.

https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/