Amazon web services 自动缩放启动后从AMI进行Windows EC2初始配置

Amazon web services 自动缩放启动后从AMI进行Windows EC2初始配置,amazon-web-services,amazon-ec2,autoscaling,Amazon Web Services,Amazon Ec2,Autoscaling,我正在研究自动缩放Amazon提供的现成WindowsAMI(而不是定制的) 在一个新实例启动之后(在!!它被添加到负载平衡器之前),我希望注入一些初始化任务并在新实例上运行(比如,运行powershell脚本) 其次,loadbalancer需要知道只有在这个启动脚本完成后才开始向新EC2实例发送请求(也不知道如何执行) 在一个新实例启动之后(在!!它被添加到负载平衡器之前),我希望注入一些初始化任务并在新实例上运行(比如,运行powershell脚本) 看一看。其长短不一之处在于,您可以将实

我正在研究自动缩放Amazon提供的现成WindowsAMI(而不是定制的)

在一个新实例启动之后(在!!它被添加到负载平衡器之前),我希望注入一些初始化任务并在新实例上运行(比如,运行powershell脚本)

其次,loadbalancer需要知道只有在这个启动脚本完成后才开始向新EC2实例发送请求(也不知道如何执行)

在一个新实例启动之后(在!!它被添加到负载平衡器之前),我希望注入一些初始化任务并在新实例上运行(比如,运行powershell脚本)

看一看。其长短不一之处在于,您可以将实例配置为在启动时运行一个小脚本,该脚本可用于引导

通常的做法是在userdata中包含足够的代码,以便从中心位置(例如Git repository或secure S3 bucket)下载一个变量脚本,然后执行该脚本-这样,您就可以在不更新userdata的情况下对实际脚本进行版本设置和更改

其次,loadbalancer需要知道只有在这个启动脚本完成后才开始向新EC2实例发送请求(也不知道如何执行)

负载平衡器倾向于对指定端口的实例执行一种ping请求,以确定指定文件是否正常。我不确定你的WindowsAMI是做什么用的,但它应该以同样的方式工作。您只需要将它指向一个只有在引导完成后才可用的文件,也就是说,您的引导脚本可能会在系统中的某个地方创建一个
health.txt
文件,其内容为“OK”,负载平衡器可以ping该文件,直到它存在->然后它就正常了

如果您采用上述想法,请确保
health.txt
不作为您用来旋转自动缩放实例的AMI的一部分存在,否则它们将使用该文件创建,并且可能在userdata/bootstrapping脚本完成之前注册为假阳性

例如,对于LAMP堆栈,量化这一点相当容易,因为示例userdata脚本可能会执行以下操作:

  • 克隆Git存储库
  • 清除缓存
  • 设置一些文件/文件夹权限
  • 在ApacheWebroot中创建“health.html”,并将“OK”作为其内容,这样在ping时它将返回一个200头
  • 启动Apache
  • 在本例中,负载平衡器将每隔一段时间对服务器的
    /health.html
    文件执行ping操作,直到返回一个200头,这只会在上述步骤5完成后发生

    我相信你也能为你的WindowsAMI找到一个类似的合适人选

    在一个新实例启动之后(在!!它被添加到负载平衡器之前),我希望注入一些初始化任务并在新实例上运行(比如,运行powershell脚本)

    看一看。其长短不一之处在于,您可以将实例配置为在启动时运行一个小脚本,该脚本可用于引导

    通常的做法是在userdata中包含足够的代码,以便从中心位置(例如Git repository或secure S3 bucket)下载一个变量脚本,然后执行该脚本-这样,您就可以在不更新userdata的情况下对实际脚本进行版本设置和更改

    其次,loadbalancer需要知道只有在这个启动脚本完成后才开始向新EC2实例发送请求(也不知道如何执行)

    负载平衡器倾向于对指定端口的实例执行一种ping请求,以确定指定文件是否正常。我不确定你的WindowsAMI是做什么用的,但它应该以同样的方式工作。您只需要将它指向一个只有在引导完成后才可用的文件,也就是说,您的引导脚本可能会在系统中的某个地方创建一个
    health.txt
    文件,其内容为“OK”,负载平衡器可以ping该文件,直到它存在->然后它就正常了

    如果您采用上述想法,请确保
    health.txt
    不作为您用来旋转自动缩放实例的AMI的一部分存在,否则它们将使用该文件创建,并且可能在userdata/bootstrapping脚本完成之前注册为假阳性

    例如,对于LAMP堆栈,量化这一点相当容易,因为示例userdata脚本可能会执行以下操作:

  • 克隆Git存储库
  • 清除缓存
  • 设置一些文件/文件夹权限
  • 在ApacheWebroot中创建“health.html”,并将“OK”作为其内容,这样在ping时它将返回一个200头
  • 启动Apache
  • 在本例中,负载平衡器将每隔一段时间对服务器的
    /health.html
    文件执行ping操作,直到返回一个200头,这只会在上述步骤5完成后发生


    我相信您将能够为您的Windows AMI找到类似的解决方案。

    您可以通过用户数据部分的powershell运行初始化任务
    /yourscript

    并且,假设您使用的是ELB,您可以将“ping目标”设置为指向一个文件,该文件是在成功执行userdata脚本后创建的。在此之前,ELB不会向您的EC2实例发送通信量。

    您可以通过用户数据部分的powershell运行初始化任务
    /yourscript

    并且,假设您使用的是ELB,您可以将“ping目标”设置为指向一个文件,该文件是在成功执行userdata脚本后创建的。在此之前,ELB不会向您的EC2实例发送流量。

    自动缩放将为您自动添加到ELB:

    自动缩放将添加到ELB自动缩放