使用Elastic Beanstalk部署的应用程序上的弹性IP

sat*_*shi 41 amazon-ec2 amazon-web-services amazon-elastic-beanstalk

我对Amazazon Web Services提供的弹性IP服务的使用感到有些困惑.我想主要的想法是,我可以按照这个简单的过程切换到新版本的Web应用程序,无需停机:

  1. 在新的EC2实例上部署新版本
  2. 正确配置新版本并使用登台DB进行测试
  3. 经过适当的测试,使这个新版本使用实时数据库
  4. 将弹性IP与此实例相关联
  5. 终止所有无用的服务(登台DB和旧的EC2实例)

这是部署新版Web应用程序的常用方法吗?

现在,如果应用程序在更多实例上扩展,该怎么办?我在Elastic Beanstalk设置中配置了自动缩放,这创建了一个负载均衡器(我可以在AWS管理控制台的EC2部分看到).问题是我显然无法将弹性IP与负载均衡器相关联,我必须将其与现有实例相关联.我应该将它与哪个实例相关联?我糊涂了...

对不起,如果有些问题可能听起来很愚蠢,但我只是程序员,这是我第一次建立云系统.

谢谢!

Ste*_*pel 62

Elastic Load Balancing(ELB)不适用于Amazon EC2弹性IP地址,实际上这两个概念根本不兼容.

弹性负载平衡的弹性

相反,ELB通常通过CNAME记录使用(但见下文),如果需要,它通过允许别名DNS地址更改正在使用的ELB的IP来提供第一级弹性/可用性.当您在已注册的EC2实例之间分配流量时,负载均衡器会执行第二级弹性/可用性.

可以这样想:CNAME永远不会改变(就像弹性IP地址一样),并且通过负载均衡器,Auto Scaling或您自己(通过注册/取消注册实例)来处理EC2实例的替换.

这在Shlomo Swidler的优秀分析中有更详细的解释."弹性负载平衡"中的"弹性":ELB弹性和如何测试它,这反过来又指最近提供的AWS 评估弹性负载平衡最佳实践,其确认他的分析并提供了关于Elastic Load Balancing服务架构及其工作原理的全面阅读(但缺少Shlomo提供的示例性逐步示例).

网站域名

请注意,需要CNAME前者限制了同时被相应的增加给亚马逊路线53,以允许根域(或区顶点使用为好),见别名和区顶点未来的发展由于亚马逊路线53对快速概述和使用Elastic Load Balancing的域名获取详细信息.

通过Elastic Beanstalk的弹性

首先,AWS Elastic Beanstalk依次使用Elastic Load Balancing,如上所述.如果是这样,它增加了应用程序生命周期管理:

AWS Elastic Beanstalk是您在AWS云中快速部署和管理应用程序的更简单方法.您只需上传您的应用程序,Elastic Beanstalk会自动处理容量配置,负载平衡,自动扩展和应用程序运行状况监视的部署详细信息.[...] [强调我的]

这是通过在混合中添加环境概念来实现的,这在结构概述中进行了解释:

环境是应用程序的核心.[...]创建环境时,AWS Elastic Beanstalk会提供运行应用程序所需的资源.为环境创建的AWS资源包括一个弹性负载均衡器(图中的ELB),Auto Scaling组和一个或多个Amazon EC2实例.

请注意,每个环境都有一个指向负载均衡器的CNAME(URL),就像使用ELB一样.

所有这些都汇集在管理和配置应用程序和环境中,它详细讨论了AWS Elastic Beanstalk的一些最重要的功能,包括使用AWS管理控制台,CLI和API的使用示例.

零停机时间

为了便于说明,很难确定最相关的部分,但部署具有零停机时间的版本可以精确地解决您的使用案例并隐含所有必需的前面步骤(例如,创建新的应用程序版本启动新环境),因此阅读AWS管理控制台部分可能会给您这个平台如何运作的最佳整体情况.

祝好运!


lim*_*ime 14

除了Steffen的精彩答案中描述的选项之外,如果您不需要Elastic Load Balancer的全部功能(如自动扩展超出一个实例),Elastic Beanstalk似乎最近启用了弹性IP作为选项.

我在回答类似问题时描述了这个选项.Elastic Beanstalk现在允许您在两种环境类型之间进行选择,而单实例选项可以创建弹性IP.

下拉选项


我认为在大多数情况下使用ELB将是更好的选择,但是例如对于登台服务器来说,拥有一个不太复杂(且更便宜)的替代品是很好的.

  • 请注意,如果重建Elastic Beanstalk环境,EIP会被释放并分配一个新的...这有点愚蠢. (13认同)