我最近使用swap环境URL来升级我的Elastic Beanstalk应用程序,使用两个环境。我在映射到beanstalk URL的不同URL上有一个CNAME记录。然后我尝试推送到生产环境(现在是测试URL),然后再次交换,但这似乎无法正常工作。
我希望交换将测试环境映射到生产URL,这意味着当我之前推送到测试环境进行测试时,现在我应该推送到生产环境,然后交换以进行另一次零停机升级。这可能非常令人困惑,所以我希望有人能够阐明这一点,因为似乎有关于Elastic Beanstalk和交换URL的信息很多。
答案 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 修补了实例。