亚马逊Elastic Beanstalk应用警告一二三

日期: 2015-05-12 作者:Chris Moyer翻译:滕晓龙 来源:TechTarget中国 英文

亚马逊的Elastic Beanstalk是该公司的一个平台即服务(PaaS),它是在弹性计算云、弹性负载平衡器以及简单存储服务基础之上开发的。消费者只需为他们所使用的基础服务支付费用,而亚马逊网络服务(AWS)则免费为其提供平台。现在,有两种类型的Elastic Beanstalk应用程序:网络应用程序和后端应用程序。在这个平台上开始工作之前,选择正确的应用程序类型是非常重要的。

从本质上来说,亚马逊Elastic Beanstalk是一个配置管理和代码部署的系统,它可自动管理各种AWS资源。用户可以在GIT版本控制系统中存放自己的代码,并把新版本的代码直接推至Beanstalk以便于发布一……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

亚马逊的Elastic Beanstalk是该公司的一个平台即服务(PaaS),它是在弹性计算云、弹性负载平衡器以及简单存储服务基础之上开发的。消费者只需为他们所使用的基础服务支付费用,而亚马逊网络服务(AWS)则免费为其提供平台。现在,有两种类型的Elastic Beanstalk应用程序:网络应用程序和后端应用程序。在这个平台上开始工作之前,选择正确的应用程序类型是非常重要的。

从本质上来说,亚马逊Elastic Beanstalk是一个配置管理和代码部署的系统,它可自动管理各种AWS资源。用户可以在GIT版本控制系统中存放自己的代码,并把新版本的代码直接推至Beanstalk以便于发布一个新版本。Elastic Beanstalk把压缩版本的代码存放在简单存储服务(即S3)中,它可允许开发人员把代码部署至由AutoScaling组管理的弹性计算云(EC2)实例中。一个弹性负载平衡器(ELB)能够自动将流量发送至AutoScaling组,后者也是由Elastic Beanstalk配置的。

开发网络应用程序

网络应用程序直接通过浏览器响应用户请求。它们可以处理由ELB发送来的流量,可以有选择地通过诸如Nginx这样的代理。当然,用户还可以让Nginx直接提供静态内容——而不是要求应用程序来管理静态文件。但是,通常最好还是通过AWS的CloudFront来提供静态内容,这样用户就不必从应用程序服务器提供任何静态资源了。

因为代理服务器会增加限制(它不支持Socket.io或诸如SPDY、HTTP2这样的高级HTTP协议),我建议完全禁用代理服务器。尽管它们被称为网络应用程序,这一类型的应用程序可以监听任何的端口(或者多个端口),以及所有的协议。网络应用程序的关键在于它们是直接响应用户请求的,并在弹性负载平衡器后被代理。

开发后端应用程序

后端应用程序监听一个SQS队列以捕获请求。后端应用程序的一个应用示例就是处理上传视频,并将视频文件转换成一个流行的移动格式。SQS和基于亚马逊Beanstalk的后端应用程序可以管理多个工作负载。如果用户正在使用SQS来处理批量的后端应用程序,那么就可以考虑使用一个Beanstalk的后端应用程序来自动实现对代码更新的管理。

Elastic Beanstalk中的应用程序监控

时刻关注应用程序的运行状态总是一个好主意。AWS的Elastic Beanstalk有很多自动化检查措施来检测一些常见的问题。任何环境的运行状态都可以通过Elastic Beanstalk控制面板反映出来,这是一个解决问题的良好开端。

红色的应用程序环境。如果用户的应用程序环境是红色的,那么这通常意味着所有的连接都没有处于正常工作状态。这往往表明,用户的所有服务器都发生了问题,或者通用服务中出现了问题。

为了解决这样一个红色的环境,可将不再接受连接的现有服务器移除。如果用户制定了一个AutoScaling策略来使用ELB运行状态检测而不是实例运行状态检测,那么系统将自动移除服务器。如果用户还没有这么做,那么可以使用EC2管理控制台尝试手动关闭这一环境中的所有实例。用户应当能够在控制台中搜索环境名称,并确定哪一个服务器与之匹配。

检查位于运行状态正常指标以下的日志;有时候用户会看到表示已删除实例或正在启动实例的日志。如果是这样的话,用户可能需要等待系统自行恢复正常。如果不是这样,那么可能需要用户进行进一步的调查。

黄色的应用程序环境。如果用户的应用程序环境是黄色的,那么这意味着该服务正处于一个“降级”状态。这意味着,有部分的服务器发生了故障或者系统检测到一个连锁的故障,但还没有导致系统的完全停用。

当用户看到这样一个图标时,用户就应当立即着手进行服务检查。Beanstalk通常可以在这一点上恢复并启动替代的服务器,但是如果用户发现服务器处于“垂死”或者“死亡”状态,那么直接手动关闭往往是一个好主意。如果服务器启动时间过长以及能够响应请求的等候时间过长,那么就会发生这样的问题。AWS的Elastic Beanstalk会对实例进行运行状态检查以确保它们在进入ELB之前接受流量,但是如果实例要花费5到10分钟以上的时间来接受请求,那么我们就会假定它们发生了问题,同时系统就会自动替换它们。这可能会导致系统无休止地启动和关闭服务器,所以请务必确保服务器启动的平均时间低于10分钟。

灰色的应用程序环境。灰色状态表示AWS Elastic Beanstalk正在对应用程序环境进行变更,或者无法对应用程序环境进行变更。一旦对应用程序环境进行了变更——要么是通过代码部署或者用户在控制台进行配置变更——用户在进行任何其它变更之前必须等待这些变更生效。

如果用户的环境长时间地处于这一状态下,那么可首先尝试重建该环境。用户可能需要使用一个新的环境来替代它。在大多数情况下,如果用户需要确保所有的设置都与之前相同,那么就可以基于一个现有的环境进行环境复制。如果由于变更仍在列表中等待的原因,用户无法更换出现问题的环境,那么可能需要“取消变更”。如果还是不行,请联系AWS的技术支持团队来移除有问题的环境。

一直以来,我经常遇到这种出现灰色状态环境的问题,因为Elastic Beanstalk无法实现其配置同步。如果用户尝试手动修改任何处于Beanstalk控制下的资源(例如负载平衡器),那么就会发生这个问题。如果用户尝试修改负载平衡器配置,那么就必须通过Elastic Beanstalk来进行修改,或者可以完全终止打破环境并让其进入一个无法恢复的状态。

绿色的应用程序环境。绿色状态的应用程序环境表明应用程序一切运行状态良好。

如果用户仍然遇到问题,那可能是代码的或配置的——而不会是服务器的或者Beanstalk能够检测到的。此时,可检查应用程序日志文件以求获得更多信息。用户也可以使用Elastic Beanstalk来执行日志快照功能或者直接登录服务器以尝试对问题进行调试。