我正在使用 AWS 免费套餐,如果我理解正确的话,它为我提供了一个免费的 EC2 微实例和一个免费的弹性负载均衡器。
我理解,通常在使用多个 EC2 实例时会使用 ELB。如果可以的话,我真的不想运行多个实例,而且 90% 的时间里,我的单个 EC2 实例似乎可以处理发送给它的流量,但偶尔它会无响应并需要重新启动。它似乎不会自动执行此操作。
我读到 ELB 将重启它称之为“不健康”的微实例(对多次 ping 尝试没有响应)。所以我的一个想法是创建一个 ELB,将我的单个 EC2 分配给它,从而创建一个简单的“如果卡住则自动重启”的情况。
我已经设置好了,它没有对我发出任何反抗或咆哮,但我想知道我是否理解正确。我对服务器管理还很陌生,刚刚开始接触微实例和 ELB 等概念,但(像所有傻瓜一样)我认为我理解了它的基本原理。
这是个好主意吗?有没有更简单的方法来实现这一点?我试过用 Google 搜索其他人做同样的事情,但没有找到任何人,但我不知道这是因为它行不通,还是因为没有其他人愚蠢到尝试使用单个 EC2 微型实例来处理所有流量。我深深怀疑这是一个坏主意,因为我没有看到其他人谈论它,虽然我对某些事情相当聪明,但我对在这类事情上聪明不太有信心!
感谢您的帮助!
答案1
Amazon 的 Elastic Load Balancer (ELB) 将请求分发给已分配给它的健康实例。它不会重新启动或修改这些实例(或其数量)。它通过健康检查(通常是轮询给定位置)来确定“健康”实例。
您要求的是“维护 1 个健康实例” - 这是一项自动扩展任务。自动扩展将允许您定义一组实例(通常包括要启动的 AMI、实例类型、要在其中启动实例的一个或多个可用区域以及要维护的实例数量(最小/最大)),以及用于扩展和缩减的策略。自动扩展策略返回 ARN(Amazon 资源名称 - 对资源的引用)。
设置自动扩展组后,您需要做的就是在实例变得不健康时触发扩展策略。如果您仔细查看使用 ELB 设置的健康检查,您会注意到您可以设置警报 - 而该警报实际上是 Cloudwatch 警报。
您可以设置自己的 Cloudwatch 警报,或通过 ELB 的健康检查进行设置 - 只需指定--alarm-actions
在满足不健康节点标准时触发自动扩展 ARN。
从技术上讲,此设置不需要 ELB - 自动扩展将自行完成工作。ELB 为您提供的是 DNS 地址,您可以通过该地址访问您的实例(以及在后端不可用时提供某种错误消息)。(如果使用自动扩展,您需要在启动新实例时重新关联弹性 IP(可以编写脚本))。
最后,需要澄清的是:CloudFlare 不是 AWS 服务 - 它是一个 CDN(因缓解 DDoS 攻击而广为人知)。Amazon 的等效服务是 CloudFront - 您不需要它们中的任何一个来重新启动实例。您需要的是 CloudWatch - Amazon 的监控服务)。免费套餐确实涵盖了 Cloudwatch 和一些警报。