AWS:根据内容有条件地路由到 EC2

AWS: conditional route to EC2 depending on content

我想构建一个 EC2 "worker" 实例集群,其中每个 EC2 应该处理特定的用户分片,比方说:

这样当用户 3 尝试登录并执行我的服务中的其他请求时,来自该用户的每个请求总是被定向到同一个 EC2-1,这样我就可以将与特定用户相关的所有信息托管在一台机器,在堆中(以减少数据库的负载并避免来自不同分区的复杂查询,但那是另一回事)。

在亚马逊上执行此操作的最佳方式是什么?

我想,为此我需要维护某种映射 table (userId <-> instanceIp)。 我考虑的一个选择是拥有额外的 "routing" EC2 实例(或其中至少 2 个实例的集群,用于故障转移,由 ELB 引导),它只管理重定向到 "worker" 实例(在同一区域)根据到这样的映射 table 并保持 table 更新(可能,每个 "worker" 实例应该以某种方式报告它已启动和 运行 并管理用户-X-Y-Z)。

但也许有一种方法可以通过 Amazon 服务完成此操作而无需额外的 "routing" EC2? 我已经阅读了一些关于 VPC、Route53 和 Geo 路由的文档,但我能找到的最接近的是 http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/rrsets-working-with.html 但我不确定这是否正确,因为每个 "worker" EC2 上可能有数百万用户,而且我不知道它是否适用于用户 ID 等动态内容。

是的,我希望每个工作人员 EC2 有 200 万用户...

您可能正在寻找的是 ELB 上的粘性会话。这会将每个会话的所有流量路由到单个主机。这有一些缺点,例如丢失实例失败的会话。 (除非共享)

走集群路线一般会有一些开销。通过在登录后将用户重定向到分配给他们的集群,或者通过代理在内部将流量路由到分配给用户的应用程序服务器。