使用多个AWS账户时如何维护可用性

使用多个AWS账户时如何维护可用性

在大规模架构现代、高性能的应用程序时,重要的是要确保各个应用程序实例以各种方式分布在多个数据中心中,这样,如果任何给定的数据中心脱机,则该应用程序可以相对正常地继续运行。这是行业范围内的最佳实践,并且是在应用程序中进行架构设计以使其对数据中心问题足够有弹性的重要特征。

当在云中构建应用程序时,会发生相同的原理。除非在构建基于云的应用程序时,否则通常不了解特定服务器或云资源位于哪个数据中心。这是使云具有其价值的抽象的一部分。但是,由于无法了解应用程序在哪个数据中心中运行,因此很难在应用程序中建立多数据中心弹性。毕竟,如果不知道应用程序在哪个数据中心中运行,那么如何确保它在多个数据中心中运行?

幸运的是,AWS这样的云提供商可以解决此问题。AWS创建了数据中心的云抽象,可以在此级别的弹性上进行构建,而无需暴露数据中心位置的详细信息,抽象的是可用性区域。

AWS可用区

AWS可用性区域是一组隔离的云资源,可用于在应用程序中指定特定级别的隔离。单个可用性区域内的资源可能在物理上或实际上彼此接近,以至于它们可以彼此依赖并彼此共享子组件。例如,位于同一可用区中的两台EC2服务器可能位于同一数据中心,同一机架中,甚至在同一物理服务器上。

但是,保证将位于不同可用性区域中的云资源分离到不同的数据中心中。它们不能位于同一数据中心,不能位于同一机架,也不能使用相同的物理服务器。它们是不同的,彼此独立。

使用多个AWS账户时如何维护可用性

这显示了可用区名称到AZ ID的映射。AZ ID是可以有效用作数据中心标识符的唯一标识符。它显示了你当前帐户中每个可用区到其关联数据中心的AZ ID的映射。显示的是你当前选择的区域的映射,但是你只需切换区域即可显示帐户中任何区域的映射。

在上面的示例中,对于此帐户,可用性区域us-west-2b映射到AZ ID为usw2-az1的数据中心。在另一个帐户中,将存在不同的映射。

加密AWS状态消息

曾经想知道为什么当AWS在其状态页面上宣布问题时,他们经常说该问题“影响给定区域中的一个或多个可用性区域”吗?他们从不说哪个可用区!其原因是由于此映射。当他们的站点上存在问题时,它就存在于一个或多个数据中心中。与这些数据中心关联的实际可用区名称可能因帐户而异。因此,在广泛共享的状态消息上,他们不知道哪个给定用户会影响哪个可用性区域。这就是导致消息更加隐秘的原因。

为什么AZ ID映射很重要

通常,此映射从你的视图中隐藏,并且由AWS透明处理。在大多数情况下,这是合理且可以接受的。但是,当你的应用程序使用多个AWS账户时,你可能会遇到问题。由于可用区名称是按每个帐户随机分配给数据中心的,因此这意味着不同帐户中的给定可用区可以映射到不同的数据中心。

现在,这似乎还不错。但这也意味着两个不同帐户中的两个不同的可用区名称都可以映射到同一数据中心!出于可用性目的,这可能是个问题。

这意味着,如果你使用多个帐户,则不能再假定两个不同的可用区位于不同的数据中心。这使得难以实施前面讨论的多数据中心最佳实践。

多个AWS账户的解决方案

如果你使用多个帐户,并且要保证各个帐户之间数据中心的唯一性,则不能使用可用性区域名称。那么,如何确保你的应用程序出于弹性目的而驻留在独立的数据中心中?

答案是不要将可用性区域用作执行数据中心独立性的方法。相反,你应该使用AZ ID。如果不同帐户中的两个可用性区域具有不同的可用区ID,则可以确保这两个可用性区域位于不同的数据中心中。使用AZ ID(而不是可用区域名称)是一种安全的方法,可确保你的应用程序位于多个帐户的不同数据中心中。

为了确保可用性,请务必确保你的应用有效利用多个数据中心来实现冗余。为了确保跨多个AWS账户的大型应用程序的数据中心独立性,你不能将可用性区域名称用作独立性的验证检查。而是使用AZ ID。否则,可能会导致设计的应用程序具有意外的和不希望的内部基础架构依赖性,从而可能会对你的应用程序的可用性产生负面影响。

作者介绍

Lee Atchison是New Relic的云架构高级总监。在过去的七年中,他帮助设计和构建了一个基于服务的可靠产品架构,该架构从初创企业到高流量的公共企业。Lee拥有32年的行业经验,其中7年是Amazon.com的高级经理。在亚马逊,他领导了公司第一个软件下载商店的创建,创建了AWS Elastic Beanstalk,并管理了亚马逊零售平台到新的基于服务的架构的迁移。他是O’Reilly Media在2016年出版的《规模化架构》一书的作者。

原文链接:

https://www.infoworld.com/article/3444860/5-pain-points-of-modern-software-development-and-how-to-overcome-them.html