Amazon ec2 如何使EC2实例在ELB说它';有空吗?
弹性负载平衡器(ELB)时不时会因为我的一台服务器不可用而将其踢出。这很好,几乎没有任何干扰 通常,只需通过AWS控制台重新启动实例即可解决问题 我想让我的EC2实例在不可用时自动重新启动Amazon ec2 如何使EC2实例在ELB说它';有空吗?,amazon-ec2,amazon-web-services,reboot,amazon-elb,Amazon Ec2,Amazon Web Services,Reboot,Amazon Elb,弹性负载平衡器(ELB)时不时会因为我的一台服务器不可用而将其踢出。这很好,几乎没有任何干扰 通常,只需通过AWS控制台重新启动实例即可解决问题 我想让我的EC2实例在不可用时自动重新启动 最好的方法是什么?(它恰好是一个Windows实例,但理想情况下这并不重要)一般来说,您应该为负载平衡器设置一个自动缩放组。自动缩放组将包含有关服务器配置方式的信息。例如,它将有一个ami和可能的用户数据文件,允许在没有任何用户交互的情况下对其进行配置。当这两个服务一起工作时,负载平衡器将终止失败的实例并立即
最好的方法是什么?(它恰好是一个Windows实例,但理想情况下这并不重要)一般来说,您应该为负载平衡器设置一个自动缩放组。自动缩放组将包含有关服务器配置方式的信息。例如,它将有一个ami和可能的用户数据文件,允许在没有任何用户交互的情况下对其进行配置。当这两个服务一起工作时,负载平衡器将终止失败的实例并立即启动新实例
考虑到您正在使用windows实例,您可以编写powershell脚本来配置服务器,并在服务器启动时使用CloudInit.NET执行脚本。脚本的最后一部分应该启用对负载平衡器的检查。我得到了一个便宜的EC2微实例,并编写了一个简单的脚本,列出了EC2上的所有服务器,并对每个服务器进行了检查,以确保其正常运行。如果服务器运行不正常,我的脚本将重新启动它。我让脚本每10分钟运行一次
如果有一个服务为我做这件事会稍微容易一些,但是系统很容易设置,微实例也很便宜。使用autoscaling group并将其设置为保持一个活动实例。如果您的实例崩溃,它将从预定义的实例映像生成一个新实例。这既简单又方便 编写一个lambda函数 它比运行微实例更便宜,并且您可以将其设置为以任意间隔运行。您还可以使用它进行CloudWatch监控,因此不必担心单独检查微实例的运行状况 我使用的是ElasticBeanstalk,它提供了
describeInstancesHealth
端点。或者,您可以使用ec2的descripbeInstanceStatus
端点
然后,如果您检测到一个坏实例,ec2的
重新启动程序让您重新启动一个或多个实例。同意@agmin的观点,lambda函数是一种很好的方法。您可以通过SNS主题配置CloudWatch警报以触发lambda功能
我把这个实现放在一起,它似乎工作得很好。可以完全通过命令行进行设置和配置:
您可以通过CloudWatch闹钟自动执行此操作。当由于实例已死亡而触发警报时,可以让警报采取的操作之一是重新启动实例。无需花费时间制作lambda或让微实例为您处理此问题
这是一个很好的信息,但出于各种原因,我仍然希望简单地重新启动,而不是终止->新建实例。您可以尝试使用new ec2 Descripte instance status命令并编写脚本,在实例关闭时重新启动实例。此脚本还需要将实例添加回负载平衡器。非常容易写的脚本。一旦脚本完成,将其放在crontab中,只要运行它的机器工作,它就会工作。如果你的微实例崩溃了怎么办?已经发生了。现在我收到一个Pingdom警报。但是,理想情况下,我应该让生产服务器检查micro,micro检查生产。叹气。想分享这个脚本吗?@Mike-这是一个ColdFusion脚本,我猜对你来说没有多大用处。虽然这是真的,但经常重新启动相关实例可以解决问题,而且重新启动比启动新实例快得多…