Amazon Web Services (AWS) 包含一百多种服务,每项服务都针对一个功能领域。服务的多样性可让您灵活地管理 AWS 基础设施。然而,判断应使用哪些服务以及如何进行预配置可能会非常困难,这就需要发挥 AWS Elastic Beanstalk的作用了。
1. 入门简单且快速
通过 Elastic Beanstalk,可以在 AWS 云中快速部署和管理应用程序,而不必了解运行这些应用程序的基础设施。
Elastic Beanstalk 支持在 Go、Java、.NET、Node.js、PHP、Python 和 Ruby 中开发的应用程序。当您部署应用程序时,Elastic Beanstalk 构建选定的受支持的平台版本并预置一个或多个 AWS 资源(如 Amazon EC2 实例)来运行您的应用程序。
3. 完善的资源控制
您可以根据应用程序的需要自由选择最适宜的 AWS 资源,例如 Amazon EC2 实例类型。此外,通过使用 Elastic Beanstalk可以实施“彻底检查”,并保留对应用程序所需 AWS 资源的完全控制。
4. 易于管理,可自动处理相关部署工作
Elastic Beanstalk 可减少管理复杂性,而不会限制选择或控制权。您只需上传应用程序,Elastic Beanstalk 将自动处理有关容量预配置、负载均衡、扩展和应用程序运行状况监控等部署详细工作。
5. 无限扩展
Elastic Beanstalk 可以根据应用程序的具体需求,使用 Auto Scaling 设置来自动扩展和缩减应用程序。
创建示例应用程序和环境
1. 选择环境层
2. 设置环境信息以及基本参数(这里我们预配置了 tomcat 服务)
3. 配置更多选项
(1)在修改软件部分,可以设定代理类型、日志等
(2)在修改容量部分,设置 auto scaling 相关配置
(3) 在修改网络部分,配置我们的 VPC,负载均衡器子网,实例子网(注意跨可用区选择,因为ELB 是托管服务默认需要跨可用区配置)
(4) 在安全部分,设定实例的角色以及密钥
(5) 点击创建环境,开启我们的配置
现在我们对 ElasticBeanstalk 有了一个初步的认知。接下来我列举一些使用中可能遇到的问题以及解决方法。
默认情况下,Elastic Beanstalk 在确定环境的运行状况时会包含所有应用程序 HTTP 4xx 错误,因此它会根据错误率将您的环境运行状况从 OK 更改 为 Warning,Degraded 或 Severe。为了正确处理这种情况,Elastic Beanstalk 允许您配置此规则,并忽略环境实例上的应用程序 HTTP 4xx错误。
2. 有时候客户会停留在 WEB 界面一段时间但是不做任何操作,这时可能会出现一个响应超时的问题,为了避免这种问题我们可以启用粘性会话。
3. 请求实例日志以排查错误
4. 请求 ALB 日志以排查错误
5. 假如我们的服务版本需要升级打补丁等,可以使用托管更新来达到不停机更新的目的。
6. 可以手动调大 JVM 以达到软件更好运行的目的。
7. 自定义监控指标,达到对环境更细粒度的掌控。
8. 最棘手的一个问题,就是客户环境频繁降级,这和 EB 环境的监控有关。当 EB 服务检查到EC2 实例不正常就会触发警告,达到一定次数后会引发降级。测试环境中实例偶尔出现一些小问题是无法避免的,客户如果希望 EB 不要那么轻易就触发降级,我们可以在负载均衡器那里设置参数。
我们通过对健康检查间隔时间,正常/不正常阀值的更改,达到一个平衡点,使得客户得到最佳的用户体验。