我一直在努力让我们的 Web 应用程序套件在 aws opsworks 上运行。它们现在基本可以正常工作。看起来是个很棒的环境!但我对扩展、修复和负载平衡感到疑惑。
我目前在一个堆栈和一个层上使用一个应用程序(加上一些堆栈中的一个 memcached 层)
我已经将我的层设置为自动修复。我知道如果一个实例失败,它将被停止并启动另一个实例。对我来说,根据该堆栈和该层上的应用程序,可能需要 3-10 分钟才能启动。
我已经为每一层设置了弹性负载均衡器。
我正在尝试不同大小的实例以及基于负载的实例。
我的问题是,AWS 中的三个相关事物是如何关联的:自动修复、负载均衡器和基于负载的实例。
具体来说,负载均衡器中被视为无响应的实例是否会被自动修复所取代?
答案1
自动修复是一项基于层启用的功能,适用于属于同一层的所有 EC2 实例。其工作方式是,如果安装在每个 EC2 上的 AWS OpsWorks 代理无法与 OpsWorks 建立通信,则该实例将被终止并替换。
http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-autohealing.html
Elastic Load Balancer 所做的检查基于 TCP/HTTP,它们测试与特定端口的连接性,而 ELB 执行的操作是将传入流量路由到 ELB 所附加层中的健康实例,直到不健康的实例通过 ELB 执行的 ping 测试。
http://docs.aws.amazon.com/opsworks/latest/userguide/load-balancer.html
负载平衡实例是当您配置的负载相关触发器发生时启动的实例。例如,您可以配置一个层,当该层的传入流量使在线实例的 CPU 使用率超过 80% 时,添加一个新实例。
回答你的问题,如果某个实例被 ELB 认为不健康,则不会替换它。