Benoit Guigal
Benoit Guigal

Reputation: 858

AWS BeanStalk environment running multi-container Docker fail to start with Health: Severe

I am trying to launch an AWS BeanStalk environment running multi container Docker but it fails with the following list of events:

2016-01-18 16:58:57 UTC+0100    WARN    Removed instance [i-a7162d2c] from your environment due to a EC2 health check failure.
2016-01-18 16:57:57 UTC+0100    WARN    Environment health has transitioned from Degraded to Severe. None of the instances are sending data.
2016-01-18 16:47:58 UTC+0100    WARN    Environment health has transitioned from Pending to Degraded. Command is executing on all instances. Command failed on all instances.
2016-01-18 16:43:58 UTC+0100    INFO    Added instance [i-a7162d2c] to your environment.
2016-01-18 16:43:27 UTC+0100    INFO    Waiting for EC2 instances to launch. This may take a few minutes.
2016-01-18 16:41:58 UTC+0100    INFO    Environment health has transitioned to Pending. There are no instances.
2016-01-18 16:41:54 UTC+0100    INFO    Created security group named: awseb-e-ih2exekpvz-stack-AWSEBSecurityGroup-M2O11DNNCJXW
2016-01-18 16:41:54 UTC+0100    INFO    Created EIP: 52.48.132.172
2016-01-18 16:41:09 UTC+0100    INFO    Using elasticbeanstalk-eu-west-1-936425941972 as Amazon S3 storage bucket for environment data.
2016-01-18 16:41:08 UTC+0100    INFO    createEnvironment is starting.

Health status is marked "Severe" and I have the following logs:

98 % of CPU is in use.
Initialization failed at 2016-01-18T15:54:33Z with exit status 1 and error: Hook /opt/elasticbeanstalk/hooks/preinit/02ecs.sh failed.

. /opt/elasticbeanstalk/hooks/common.sh
/opt/elasticbeanstalk/bin/get-config container -k ecs_cluster
EB_CONFIG_ECS_CLUSTER=awseb-figure-test-ih2exekpvz
/opt/elasticbeanstalk/bin/get-config container -k ecs_region
EB_CONFIG_ECS_REGION=eu-west-1
/opt/elasticbeanstalk/bin/get-config container -k support_files_dir
EB_CONFIG_SUPPORT_FILES_DIR=/opt/elasticbeanstalk/containerfiles/support
is_baked ecs_agent
[[ -f /etc/elasticbeanstalk/baking_manifest/ecs_agent ]]
true
aws configure set default.output json
aws configure set default.region eu-west-1
echo ECS_CLUSTER=awseb-figure-test-ih2exekpvz
grep -q 'ecs start/'
initctl status ecs
initctl start ecs
ecs start/running, process 8418
TIMEOUT=120
jq -r .ContainerInstanceArn
curl http://localhost:51678/v1/metadata
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to     localhost port 51678: Connection refused

My configuration:

Environment type: Single Instance 
Instance type: Medium
Root volume type: SSD
Root Volume Size: 8GB
Zone: EU-West

My Dockerrun.aws.json:

{
  "AWSEBDockerrunVersion": "2",
  "containerDefinitions": [
    {
      "essential": true,
      "memory": 252,
      "links": [
        "redis"
      ],
      "mountPoints": [
        {
          "containerPath": "/srv/express",
          "sourceVolume": "_WebExpress"
        },
        {
          "containerPath": "/srv/express/node_modules",
          "sourceVolume": "SrvExpressNode_Modules"
        }
      ],
      "name": "web",
      "image": "figure/web:latest",
      "portMappings": [
        {
          "containerPort": 3000,
          "hostPort": 3000
        }
      ]
    },
    {
      "essential": true,
      "memory": 252,
      "image": "redis",
      "name": "redis",
      "portMappings": [
        {
          "containerPort": 6379,
          "hostPort": 6379
        }
      ]
    }
  ],
  "family": "",
  "volumes": [
    {
      "host": {
        "sourcePath": "./web/express"
      },
      "name": "_WebExpress"
    },
    {
      "host": {
        "sourcePath": "/srv/express/node_modules"
      },
      "name": "SrvExpressNode_Modules"
    }
  ]
}

Upvotes: 4

Views: 3632

Answers (2)

Ramesh Ramalingam
Ramesh Ramalingam

Reputation: 31

@Kilianc: If you are creating elastic beanstalk application using multi-docker container platform then you have to add the following list of policies to the default role "aws-elasticbeanstalk-ec2-role" or you can create your own role.

  1. AWSElasticBeanstalkWebTier
  2. AWSElasticBeanstalkMulticontainerDocker
  3. AWSElasticBeanstalkWorkerTier

Thanks

Upvotes: 3

Benoit Guigal
Benoit Guigal

Reputation: 858

It appears I forgot to set up policies and permissions as described in AWS BeanStalk documentation: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecstutorial.html

Upvotes: 0

Related Questions