我试图了解AWS地区如何工作。
通过在AWS区域和可用性区域中托pipe的Web应用程序的Web浏览器GET请求来引导我。
负载平衡器和个体实例如何适应这个请求?
请求如何决定使用哪个区域?
如果Web应用程序在AWS上跨区域进行托pipe,那么哪个IP地址应该是您的Alogging域的条目?
TLDR; 在AWS中,应用程序跨越可用区域(又称独立数据中心)的区域要容易得多。 AWS为此提供了很好的支持。
更长的故事
AWS区域几乎完全分离。 除了在每个区域中运行该应用程序的单独副本之外,在单个应用程序中跨区域没有真正简单的自动方法。 您通常使用可用性区域,这是一些独立的数据中心,这些数据中心密切相连,但具有独立的基础设施,通常间隔<1毫米。 AWS不会在没有明确告知的情况下将数据移到区域之外,对于不希望其数据离开特定国家的企业来说,这是必要的。 一个地区通常有三个地理信息系统,但是在一些地区,AWS实际上有更多的数据中心,我怀疑有人分配给他们来传播负载。
负载平衡器(ELB)可轻松分配区域内不同AZ之间的stream量,因此,如果一个数据中心出现故障,该区域中的其他数据中心可轻松接pipe,包括在需要时创build更多资源,并将其configuration为(自动缩放)。 由于它们如此紧密在一起,networking延迟更为明智,因此AZ更容易共享资源。 关系型数据库服务可以将同步数据库保存在一个区域内的不同区域内,但不在区域之间,尽pipe您可以在另一个区域内拥有asynchronous副本。
如果您想在不同地区之间进行负载平衡,主要方法是使用AWS的DNS服务Route 53。 这可以基于故障转移,地理位置,简单的循环和其他可能的负载平衡。 问题是如果你需要一个中央数据库,那就需要在一个地区。 您可以同步,但会引入风险和延迟。 如果您可以将数据存储在每个区域,并且数据只读或者写入很less,那么这将更容易,但是您必须自己完成数据库同步。 无状态的应用程序或应用程序很less改变数据将特别容易传播到一个地区。
您可以使用Cloudfront CDN在任何AWS的许多边缘位置caching数据,但其来源将是单个区域。 这通常是为了performance。
灾难恢复场景中使用的区域比负载均衡更多。 您可以合理轻松地在区域之间复制资源(数据,虚拟机映像),并在脚本中加载创build所需的任何其他资源(如队列,数据库等)。如果整个区域出现故障(这种情况很less见但可能发生),DNS运行状况检查将您的用户引导到另一个地区。
您可能可以设置一些类似于VPN的应用程序,使您的应用程序跨越多个区域,但存在数据库一致性等问题,可能还有一些优势。 AZ在大多数情况下足够健壮。 如果你需要非常高的可用性,你可以devise你所需要的东西,但要准备付出非常聪明的人和足够的资源。
您要求了解应用程序如何在AZ上平衡负载。 相反,我build议您阅读AWS提供的大量文档,包括常见问题解答和产品文档 。
你能更好的定义“客户”吗? 您是指应用程序客户端还是Amazon命令行客户端?
回答我认为你在问什么:
ELB将通过区域内不同AZ的实例负载平衡您的请求。 例如欧洲西部1a和欧洲西部1b。 这两个地区在欧盟西部1(爱尔兰)地区。
我想如果你想跨区域负载平衡,你需要一些DNS魔法。
没有太多的要求,请求进来,命中一个EIP,这是连接到你的ELB。 ELB将该请求传递给您告诉它使用的任何实例。