首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在LB后面的ASG中启动服务器,并通过cloudformation在其上部署代码?

如何在LB后面的ASG中启动服务器,并通过cloudformation在其上部署代码?
EN

Server Fault用户
提问于 2019-01-24 22:57:20
回答 1查看 1.4K关注 0票数 2

我试图为DEV环境创建一个非常简单的基础设施。所受的限制是:

  • 一个ec2实例,基于标准ec2 linux
  • Docker容器中的nginx服务器提供healthcheck.html服务
  • 服务器必须在自动标度组中
  • 仅通过aws应用程序负载均衡器从web访问

这是预期的架构:

我得到了一个很好的cloudformation模板,但是失败了。错误消息:

代码语言:javascript
复制
Received 1 FAILURE signal(s) out of 1. Unable to satisfy 100% MinSuccessfulInstancesPercent requirement

这似乎是由依赖循环造成的:

..。或者,用言语来说:

目标组的健康检查失败了..。因为nginx码头集装箱不存在..。因为CodeDeploy没有部署码头容器.因为云层形成认为,助理秘书长还没有准备好.因为目标组的健康检查失败。

问题:是否可以通过禁用目标组的健康检查来中断循环?(我在aws中没有找到这样的选择)。还有其他选择可以帮助吗?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-01-25 00:33:30

在ASG模板中,可以将HealthCheck属性设置为EC2。这样,它就不会依赖于ELB检查,并且一旦完成UserData脚本,它就会将实例标记为健康。

代码语言:javascript
复制
TestAutoScalingGroup:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    [...]
    HealthCheckType: EC2

然后,在LaunchConfiguration.UserData中,一旦UserData脚本完成,您需要发送一个信号:

代码语言:javascript
复制
TestLaunchConfig:
  Type: AWS::AutoScaling::LaunchConfiguration
  Properties:
    [...]
    UserData:
      Fn::Base64:
        !Sub |
          #!/bin/bash -x
          [... some setup ...]
          # Signal the status from this instance
          /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} \
            --resource TestAutoScalingGroup --region ${AWS::Region}

注意,--resource参数必须与TestAutoScalingGroup资源名称匹配。

希望有帮助:)

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/950663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档