交换环境URL如何正常工作?

时间:2012-07-18 23:03:03

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

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

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

2 个答案:

答案 0 :(得分:5)

URL swap是在两个绿色/就绪环境之间交换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交换操作。

答案 1 :(得分:4)

请注意哪些"交换网址"功能正在讨论中...如果您指的是AWS Elastic Beanstalk" Actions" | " 交换环境网址"功能,我的经验是这个功能没有与DNS有关,而没有与Route 53有关。

从我所看到的情况来看, AWS EB交换网址只是交换您的beanstalk环境中面向公众的网址...让您无需更改DNS一点都不。

示例:

假设您有两个EB环境:

"质量" EB网址为" quality-qq443224.elasticbeanstalk.com"

"质量patched1" EB URL为" quality-patched1.elasticbeanstalk.com"

如果您选择" quality-patched1"实例并选择"交换环境网址""用你的品质"实例......所有会发生的是现在将列为

"质量" EB URL为" quality-patched1.elasticbeanstalk.com"

"质量patched1" EB网址为" quality-qq443224.elasticbeanstalk.com"

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