Проверка работоспособности целевой группы для сбоя службы ECS при создании с облачной информацией - PullRequest
0 голосов
/ 11 июля 2019

Я использую API в качестве службы на ecs с alb. Когда служба работает, она не проходит проверку работоспособности, постоянно убивает и перезапускает задачу. Журналы задач всегда показывают, что он отвечает проверкам работоспособности с ответом 200, поэтому он должен проходить. Я проверил, что мои группы безопасности и vpc настроены правильно. Я опубликую свой шаблон формирования облаков ниже в надежде, что кто-нибудь найдет мою ошибку. Я также попытался значительно увеличить период проверки здоровья, но это не помогло.

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Metadata": {
        "AWS::CloudFormation::Designer": {
            "6514f997-7e0a-48c6-9e5f-95465c35ff00": {
                "size": {
                    "width": 60,
                    "height": 60
                },
                "position": {
                    "x": 280,
                    "y": 140
                },
                "z": 0,
                "embeds": []
            }
        }
    },
    "Parameters": {
        "ClusterName": {
            "Type" : "String",
            "Description" : "Name of the ECS Cluster",
            "Default" : "Rest-Api-Explorer"
        },
        "Subnet": {
            "Description": "User Specified Subnet",
            "Type": "AWS::EC2::Subnet::Id",
            "ConstraintDescription": "Must be a valid Subnet of specified VPC."
        }
    },
    "Mappings" : {
        "SubnetToVPCMap" : {
            "subnet-58863c01" : {"VPC" : "vpc-6581f100"},
            "subnet-ae349ec6" : {"VPC" : "vpc-259a344d"},
            "subnet-b9349ed1" : {"VPC" : "vpc-259a344d"},
            "subnet-d8349eb0" : {"VPC" : "vpc-259a344d"},
            "subnet-e9b7d69e" : {"VPC" : "vpc-6581f100"},
            "subnet-ee97d48b" : {"VPC" : "vpc-6581f100"}
        },
        "VPCToSecurityGroupMap" : {
            "vpc-6581f100" : {"SecurityGroup" : "sg-a5c672c1"},
            "vpc-259a344d" : {"SecurityGroup" : "sg-1d658072"}
        },
        "VPCToTag" : {
            "vpc-6581f100" : {"Tag" : [{ "Key": "Name", "Value": "Rest API Explorer"}, {"Key": "Type", "Value": "Development"}]},
            "vpc-259a344d" : {"Tag" : [{ "Key": "Name", "Value": "Rest API Explorer"}, {"Key": "Type", "Value": "Production"}]}
        }
    },
    "Resources": {
        "ECSCluster":{
            "Type" : "AWS::ECS::Cluster",
            "Properties" : {
                "ClusterName" : {"Ref" : "ClusterName"},
                "Tags": {
                    "Fn::FindInMap" : [ "VPCToTag", {"Fn::FindInMap" : [ "SubnetToVPCMap", {"Ref" : "Subnet"}, "VPC"]} , "Tag"]
                }
            }
        },
        "EC2Instance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "IamInstanceProfile": "ecsInstanceRole",
                "ImageId": "ami-00e0090ac21971297",
                "InstanceType": "t2.medium",
                "KeyName": "community-admin",
                "SecurityGroupIds": [
                    {"Fn::FindInMap" : [ "VPCToSecurityGroupMap", {"Fn::FindInMap" : [ "SubnetToVPCMap", {"Ref" : "Subnet"}, "VPC"]} , "SecurityGroup"]}
                ],
                "SubnetId": {
                    "Ref": "Subnet"
                },
                "Tags": {
                    "Fn::FindInMap" : [ "VPCToTag", {"Fn::FindInMap" : [ "SubnetToVPCMap", {"Ref" : "Subnet"}, "VPC"]} , "Tag"]
                },
                "UserData": {
                    "Fn::Base64": {
                        "Fn::Join": [
                            "",
                            [
                                "#!/bin/bash -xe\n",
                                "echo ECS_CLUSTER=", { "Ref" : "ClusterName" },
                                " >> /etc/ecs/ecs.config\n"
                            ]
                        ]
                    }
                }
            },
            "Metadata": {
                "AWS::CloudFormation::Designer": {
                    "id": "6514f997-7e0a-48c6-9e5f-95465c35ff00"
                }
            }
        },
        "ECSALB":{
          "Type":"AWS::ElasticLoadBalancingV2::LoadBalancer",
          "Properties":{
            "Name":"rest-api-explorer-2",
            "Scheme":"internal",
            "LoadBalancerAttributes": [
              {
                "Key":"idle_timeout.timeout_seconds",
                "Value":"60"
              }
            ],
            "SecurityGroups":[
              {
                "Fn::FindInMap" : [ "VPCToSecurityGroupMap", {"Fn::FindInMap" : [ "SubnetToVPCMap", {"Ref" : "Subnet"}, "VPC"]} , "SecurityGroup"]
              }
            ],
            "Subnets" : [
                "subnet-58863c01",
                "subnet-e9b7d69e",
                "subnet-ee97d48b"
            ]
          }
        },
        "ALBListener":{
            "Type":"AWS::ElasticLoadBalancingV2::Listener",
            "DependsOn": "ECSTG",
            "Properties":{
              "DefaultActions":[
                {
                  "Type":"forward",
                  "TargetGroupArn":{
                    "Ref":"ECSTG"
                  }
                }
              ],
              "LoadBalancerArn":{
                "Ref":"ECSALB"
              },
              "Port":"80",
              "Protocol":"HTTP"
            }
        },
        "ECSTG":{
            "Type":"AWS::ElasticLoadBalancingV2::TargetGroup",
            "DependsOn":"ECSALB",
            "Properties":{
              "HealthCheckIntervalSeconds":15,
              "HealthCheckPath":"/api/rest/console",              
              "HealthCheckPort":"traffic-port",
              "HealthCheckProtocol":"HTTP",
              "HealthCheckTimeoutSeconds":10,
              "HealthyThresholdCount":3,
              "Name":"rest-api-target-group-2",
              "Port":3000,
              "Protocol":"HTTP",
              "TargetType":"ip",
              "UnhealthyThresholdCount":5,
              "VpcId":{
                "Fn::FindInMap" : [ "SubnetToVPCMap", {"Ref" : "Subnet"}, "VPC"]
              }
            }
        },
        "service":{
            "Type":"AWS::ECS::Service",
            "DependsOn": "ALBListener",
            "Properties":{
              "Cluster":{
                "Ref":"ECSCluster"
              },
              "DeploymentConfiguration": {
                "MaximumPercent": 100,
                "MinimumHealthyPercent": 0
              },
              "DesiredCount":"1",
              "HealthCheckGracePeriodSeconds" : 90,
              "LaunchType": "FARGATE",
              "LoadBalancers":[
                {
                  "ContainerName":"api-rest-explorer",
                  "ContainerPort":"3000",
                  "TargetGroupArn":{
                    "Ref":"ECSTG"
                  }
                }
              ],
              "NetworkConfiguration": {
                  "AwsvpcConfiguration" : {
                    "AssignPublicIp" : "ENABLED",
                    "SecurityGroups" : [
                      {
                        "Fn::FindInMap" : [ "VPCToSecurityGroupMap", {"Fn::FindInMap" : [ "SubnetToVPCMap", {"Ref" : "Subnet"}, "VPC"]} , "SecurityGroup"]
                      }
                    ],
                    "Subnets" : [
                      {"Ref": "Subnet"}
                    ]
                  }
              },
              "SchedulingStrategy": "REPLICA",
              "ServiceName" : "rest-api-explorer-fargate",
              "TaskDefinition": "rest-api-explorer-fargate:4"
            }
        }
    }
}
...