当前位置: 首页 > 知识库问答 >
问题:

CloudFormation目标组运行状况检查不一致

张宣
2023-03-14

我有一个AWS CloudFormation模板,它创建了一个应用程序负载均衡器,该负载均衡器将流量路由到由两个运行Apache的实例组成的目标组。

模板中创建ALB和实例的部分是:

    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    DependsOn: 
      - Ec2InstanceA
      - Ec2InstanceB
    Properties:
      IpAddressType: ipv4
      Scheme: internet-facing
      SecurityGroups:
        - !Ref InstanceSecurityGroup
      Subnets:
        - !Ref PublicSubnetA
        - !Ref PublicSubnetB
      Tags:
        - Key: Name
          Value: !Sub ${AWS::StackName}-ALB
      Type: application
  Listener:
    Type: AWS::ElasticLoadBalancingV2::Listener
    Properties:
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref MyTargetGroup
      LoadBalancerArn: !Ref MyApplicationLoadBalancer
      Port: '80'
      Protocol: HTTP

  MyTargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties: 
      HealthCheckEnabled: true
      Port: 80
      Protocol: HTTP
      VpcId: !Ref VPC
      Targets: 
        - Id: !Ref Ec2InstanceA
        - Id: !Ref Ec2InstanceB
      TargetType: instance
  
  Ec2InstanceA:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      ImageId: ami-0323c3dd2da7fb37d
      KeyName: KeyPair
      NetworkInterfaces:
        - AssociatePublicIpAddress: true
          DeviceIndex: 0
          GroupSet:
            - Ref: InstanceSecurityGroup
          SubnetId:
            Ref: PrivateSubnetA
      UserData:
        Fn::Base64:                                
          !Sub |
              #!/bin/bash -ex
              sudo yum install -y httpd;
              sudo echo "<html><h1>Hello CloudFormation A!!<h1></html>" > /var/www/html/index.html;
              cd /var/www/html;
              sudo chmod 755 index.html;
              sudo service httpd start;
              sudo chkconfig httpd on;
  Ec2InstanceB:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      ImageId: ami-0323c3dd2da7fb37d
      KeyName: KeyPair
      NetworkInterfaces:
        - AssociatePublicIpAddress: true
          DeviceIndex: 0
          GroupSet:
            - Ref: InstanceSecurityGroup
          SubnetId:
            Ref: PrivateSubnetB
      UserData:
        Fn::Base64:                               
          !Sub |
              #!/bin/bash -ex
              sudo yum install -y httpd;
              sudo echo "<html><h1>Hello CloudFormation B!!<h1></html>" > /var/www/html/index.html;
              cd /var/www/html;
              sudo chmod 755 index.html;
              sudo service httpd start;
              sudo chkconfig httpd on;

我猜这是某种资源时间问题,但我不是很确定。

共有1个答案

穆商震
2023-03-14

通常,当您引导实例时,良好的实践是使用cfn-signal以及实例的创建策略。

这可以确保只有在userdata完成时CloudFormation才会将实例标记为成功创建。这也让它等到事情发生的时候。

因此,当ALB开始检查实例的健康状况时,您可以肯定地知道userdata已成功执行,并且apache服务器已启动并正在运行。

 类似资料:
  • 我有一个与这里类似的情况:Spring Cloud Stream和RabbitMQ健康检查 错误信息 环境: Java 8 Grails 3.3.8 弹簧-拉比-1.7.9.释放 弹簧引导致动器-1.5.15.释放 KeyCloak服务器4.6.0.final 知道怎么能让兔子在这里停用吗?

  • 我正在使用云形成模板来构建基础设施(ECS fargate集群)。模板已成功执行,堆栈已成功创建。但是,任务失败,出现以下错误: 我没有得到什么和在哪里寻找这个问题的疑难解答。由于它是fargate集群,我不知道如何登录到容器并执行一些健康检查查询来进一步调试。 如果你觉得,我也可以粘贴整个模板。 请帮忙

  • 我试图通过 但是什么也没发生。似乎它在等待什么。控制台没有回来。不得不用CTRL C杀死它。 我还试图通过 与上述行为相同。

  • 我试图理解docker编写健康检查选项是如何工作的。 运行状况检查:间隔:1 分钟30 秒超时:10 秒重试次数:3 我是否可以说这个配置将每90秒轮询一个容器,然后如果容器在10秒后超时,则群将再次尝试3次,之后它将标记容器终止并创建一个新容器来替换它 此处的文档 https://docs.docker.com/compose/compose-file/compose-file-v3/ 没什么帮

  • 是否存在SQS的Spring引导执行器健康检查终结点?我已经构建了一个SQS使用者,我想检查SQS是否已启动并运行。我没有使用JMSlistener连接到SQS,而是使用Spring云库。 我实现了以下健康检查endpoint。当我删除队列并尝试命中运行状况检查endpoint时,这将返回以下错误。如果存在连接性问题或SQS服务关闭,是否会出现类似的错误,最终导致健康检查endpoint失败? 豆