单个实例的AWS冗余

时间:2016-03-16 15:47:03

标签: amazon-web-services amazon-ec2 lambda load-balancing redundancy

AWS上的小型有状态应用。 Statefullness是问题,为了论证,假设应用程序必须保持有状态。我们如何在多个AZ之间创建冗余?

半生的想法:
1)AZ1和AZ2中的镜像设置。使用ELB将所有流量路由到AZ1。如果存在健康问题,请停止路由到AZ1并路由到AZ2。这甚至可能吗?是不是像反负载平衡?

2)当AZ1出现健康问题时,使用lambda来“打开”并在AZ2中创建实例。也会关闭AZ1中的实例。如果是这样,你能指点我一些lambda文件吗?

3)比1或2更好,可能更容易

P.S。如果应用程序不是有状态的,我知道如何轻松完成。不幸的是,无法调整状态。

1 个答案:

答案 0 :(得分:0)

通过statefullness我假设您需要一个中央商店来存储数据。

选择存储州数据的技术:

1)如果状态检索的性质不稳定或性能要求不是极端的,即从服务器到检索状态不多于一次,你应该选择DynamoDb来存储状态,这是多重的默认情况下,您不必做任何事情来使它成为HA。

2)在高性能方案中或需要多次往返以检索状态时(尽量避免这种情况),您可以选择memcached,它可以作为AWS elastiCache中的一个选项提供,您可以在多个AZ中为HA部署它们。

对于前端服务器的HA:

1)只需将服务器添加到多个AZ中并将它们附加到负载均衡器,以便执行此操作:

a)使用VPC服务将两个子网添加到多个AZ中。

b)创建负载均衡器并为其提供这两个子网(这使您的LB HA),确保启用“跨区域负载平衡”,这将流量均匀地分配到跨区域连接到它的服务器。

c)创建两个(最小)app服务器,并在不同AZ中的每个子网中添加一个,将它们添加到上面创建的LB中。

2)确保您的服务器从中央数据层(现在也是HA)检索并存储状态。

你很高兴,你可以选择使用启动配置和自动缩放组在AWS中设置自动缩放,如果这是我猜的那个要求。