【问题标题】:how does swap environmental URL work exactly?交换环境 URL 是如何工作的?
【发布时间】:2012-07-18 02:14:04
【问题描述】:

我最近使用交换环境 URL 来升级我的 Elastic Beanstalk 应用程序,使用两个环境。我在映射到 beanstalk URL 的不同 URL 上有一条 CNAME 记录。然后我尝试推送到生产环境(现在位于测试 URL),然后再次交换,但这似乎无法正常工作。

我希望 swap 将测试环境映射到生产 URL,这意味着当我之前推送到测试环境进行测试时,现在我应该推送到生产环境,然后交换进行另一个零停机升级.这可能非常令人困惑,因此我希望有人能对此有所了解,因为似乎缺乏有关 Elastic Beanstalk 和交换 URL 的信息。

【问题讨论】:

  • 请注意,DNS 记录可能需要几个小时才能传播到全球的 DNS 服务器。可能是这样吗?
  • @Viccari - 很确定 Beanstalk 域交换是 AWS 内部的(我怀疑通过 Route53 运行,但我无法证明)。基本上,AWS 只是将 app1.elasticbeanstalk.com 映射到 app2 的 ELB ......我想。这是一个完全不透明的过程。因此,DNS 缓存过期不会成为问题。
  • @diogenes - 您可以尝试the zero downtime CLI deployment script AWS 在文档中提供的内容。如果在他们自己的示例中交换仍然失败,则表明推送过程有问题,而不是交换。

标签: amazon-web-services production-environment amazon-elastic-beanstalk


【解决方案1】:

请注意这里讨论的是哪个“交换 URL”功能...如果您指的是 AWS Elastic Beanstalk“操作”| “Swap Environment URLs”功能,我的经验是此功能与 DNS 无关,与 Route 53 无关。 p>

据我所知,AWS EB 交换 URL 只是交换了 beanstalk 环境的面向公众的 URL...让您完全不必更改 DNS。

例子:

假设您有两个 EB 环境:

“quality”,EB URL 为“quality-qq443224.elasticbeanstalk.com”

“quality-patched1”,EB URL 为“quality-patched1.elasticbeanstalk.com”

如果您选择“quality-patched1”实例并选择“Swap Environment URL's”与您的“quality”实例...所发生的一切是它们现在将被列为:: p>

“quality”,EB URL 为“quality-patched1.elasticbeanstalk.com”

“quality-patched1”,EB URL 为“quality-qq443224.elasticbeanstalk.com”

因此,您现有的 DNS CNAME(假设在 Route 53 中并假设指向 /quality-qq443224.../)根本不需要更改...它们将被定向到您的 修补实例。

【讨论】:

  • 所以它确实与DNS有关。
  • 但是,如果您的 Route 53 指向负载均衡器,那么您确实需要将其换成新的……
  • Rich,我也在想同样的事情。如果您将域的 A 记录设置为特定 Elastic Beanstalk 负载均衡器的 Route 53 别名,我很确定 CNAME 交换不会影响该 DNS 记录。只有当您使用 CNAME DNS 记录并指向自己的.elasticbeanstalk.com 时,它才会有任何影响。我对么?解决方法是在新环境启动后手动将 Route 53 别名更新到新环境的 ELB。
  • 嗨,你能告诉我如果我有运行 3 个实例(负载平衡)的“生产”环境会发生什么,并且我尝试将它与运行 1 个实例的“生产-2”环境交换(也负载平衡)?,...我需要告诉它在我进行交换之前启动 2 个额外的实例,还是 AWS 会处理这个问题?谢谢
  • Elad Nava 完全正确。由于别名指向我为 A 记录设置的弹性负载均衡器,因此交换没有任何影响。我必须进入并手动将新实例的弹性 IP(在我完成交换 URL 之后)添加到我的域的 Route 53 中的 A 记录中。
【解决方案2】:

URL swap 是在两个 Green/Ready 环境之间交换 CNAME 的简单操作。它与 Route 53(或任何其他 DNS)无关。它唯一做的就是交换两个 CNAME。例如,您有一个环境 foo-1 和 CNAME foo-1.example.com,另一个环境 foo-2 和 CNAME foo-2.example.com。切换运行环境后foo-1会回复http://foo-2.example.com

为了以零停机时间部署新版本的应用程序,需要执行此操作。您的 DNS 会将您的 www.example.com 指向 foo-1,它会通过几秒钟的 CNAME 交换即时更改。用户不会看到任何延迟,前提是您的应用程序知道如何共享资源(例如数据库)。

你可以看看jcabi-beanstalk-maven-plugin(我是开发者)。这个 Maven 插件以完全自动化的方式执行此 CNAME 交换操作。

【讨论】:

  • 如果和route53无关,那为什么交换时会有警告说:Swapping the environment URL will modify the Route 53 DNS configuration, which may take a few minutes. Your application will continue to run while the changes are propagated.
  • 是的,CNAME 是 DNS。
猜你喜欢
  • 2014-12-18
  • 2018-11-01
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
相关资源
最近更新 更多