9

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

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

4

2 回答 2

6

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

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

例子:

假设您有两个 EB 环境:

EB URL 为“quality-qq443224.elasticbeanstalk.com”的“质量”

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

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

EB URL 为“quality-patched1.elasticbeanstalk.com”的“质量”

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

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

于 2014-04-10T16:46:11.763 回答
5

URL 交换是在两个 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 交换操作。

于 2012-10-12T16:46:24.980 回答