AWS:根据内容向EC2提供的有条件路由

时间:2015-02-02 17:30:26

标签: amazon-web-services amazon-ec2 amazon-route53 amazon-vpc

我想建立一个EC2“worker”实例的集群,其中每个EC2应该处理特定的用户分片,让我们说:

  • EC2-1处理用户1-2-3
  • EC2-2处理用户4-5-6
  • EC2-3处理用户-7-8-9

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

在亚马逊上做这件事的最佳方式是什么?

我想,为此,我需要维护某种映射表(userId< - > instanceIp)。 我想到的一个选项是有额外的“路由”EC2实例(或者至少有2个集群,用于故障转移,由ELB提供),它只根据这样的映射表管理重定向到“worker”实例(在同一个区域中)并保持表更新(可能,每个“工人”实例应以某种方式报告其启动和运行以及管理用户-XYZ)。

但也许有一种方法可以通过亚马逊服务来实现,而无需额外的“路由”EC2? 我已经阅读了一些关于VPC,Route53和Geo路由的文档,但我能找到的最接近的是http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/rrsets-working-with.html 但我不确定这是否是正确的,因为每个“工人”EC2上可能有数百万用户,我不知道它适用于动态内容,如用户ID。

是的,我希望每个工人EC2会有2百万用户......

1 个答案:

答案 0 :(得分:1)

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

采用聚类路由通常需要一些开销。通过在登录到其分配的群集后重定向用户,或通过代理在内部将流量路由到分配给用户的应用程序服务器。