Using Amazon EC2 Container Service (ECS) to manage Docker containers in production with high availability and scalability. From the Docker Meetup in Leuven, Belgium on October 1st, 2015.
12. {
"containerDefinitions": [
{
"name": "simple-app",
"image": "httpd:2.4",
"cpu": 10,
"memory": 300,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80,
"protocol": "tcp"
}
],
"essential": true,
"mountPoints": [
{
"containerPath": "/usr/local/apache2/htdocs",
"sourceVolume": "my-vol"
}
]
},
Task Definition
10 CPU units (1024 is a full CPU)
500 MB of memory
Expose port 80 in container
to port 80 on host
Create and mount volumes
Essential to our task
13. {
"name": "busybox",
"image": "busybox",
"cpu": 10,
"memory": 200,
"volumesFrom": [
{
"sourceContainer": "simple-app"
}
],
"command": [
"/bin/sh -c "...""
],
"essential": false
}
],
"volumes": [
{
"name": “my-vol"
}
]
}
Task Definition
From Docker Hub
Mount volume from other container
Command to exec
Volumes
14. Internet
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
Key / Value Store
Cluster Management Engine
15. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
Key / Value Store
Cluster Management Engine
Create Cluster
16. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
ECS AgentECS Agent ECS Agent ECS Agent ECS Agent ECS Agent
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Register Container
Instance(s)
17. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Key / Value Store
Cluster Management Engine
Agent Communication Service API
ECS AgentECS Agent ECS Agent ECS Agent ECS Agent ECS Agent
Container Instance Container Instance Container Instance Container Instance Container Instance
Task
Definitions
Task
Definitions
Container Instance
Task
Definitions
Register Task
Definition(s)
18. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
ECS AgentECS Agent ECS Agent ECS Agent ECS Agent ECS Agent
Task
C
C C
VV
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Task
Definitions
Task
Definitions
Task
Definitions
Run Task “C”
19. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
ECS AgentECS Agent ECS Agent ECS Agent ECS Agent ECS Agent
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Task
Definitions
Task
Definitions
Task
Definitions
20. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
ECS AgentECS Agent
Task
A
C
V
C C
V
ECS Agent
Task
A
C
V
C C
V
ECS Agent ECS Agent ECS Agent
Service A
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Task
Definitions
Task
Definitions
Task
Definitions
Create Service “A”
21. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
ECS AgentECS Agent
Task
A
C
V
C C
V
ECS Agent
Task
A
C
V
C C
V
ECS Agent ECS Agent
Task
A
C
V
C C
V
ECS Agent
Service A
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Task
Definitions
Task
Definitions
Task
Definitions
Update Service “A”
22. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
ECS Agent
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
B
C C
V
ECS Agent
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
ECS Agent
Task
B
C C
V
Service A Service B
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Task
Definitions
Task
Definitions
Task
Definitions
Create Service “B”
23. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
ECS Agent
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
B
C C
V
ECS Agent
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
C
C C
V
ECS Agent
Task
B
C C
V
Service A Service B
V
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Task
Definitions
Task
Definitions
Task
Definitions
Run Task “C”
24. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
ECS Agent
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
B
C C
V
ECS Agent
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
ECS Agent
Task
B
C C
V
Service A Service B
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Task
Definitions
Task
Definitions
Task
Definitions
25. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
User / Scheduler
ECS Agent
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
B
C C
V
ECS Agent
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
ECS Agent
Task
B
C C
V
Service A Service B
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Task
Definitions
Task
Definitions
Task
Definitions
Custom Scheduler
26. Internet
Cluster
AZ #1 AZ #2 AZ #3
Amazon
ECS
Agent Communication Service API
User / Scheduler
ECS Agent
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
Task
B
C C
V
ECS Agent
Task
B
C C
V
ECS Agent
Task
A
C
V
C C
V
ECS Agent
Task
B
C C
V
Service A Service B
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Task
Definitions
Task
Definitions
Task
Definitions
28. Designed for use with other AWS services
Elastic Load Balancing
Amazon Elastic Block Store
Amazon Virtual Private Cloud
AWS Identity and Access Management (IAM)
AWS CloudTrail
29. Elastic Load Balancing
Circuit breaker
"Jtecul" by own - Own work.
Licensed under CC BY-SA 3.0 via Wikimedia Commons
http://commons.wikimedia.org/wiki/File:Jtecul.jpg#/media/File:Jtecul.jpg
B
estPractice
40. You will soon be able to use
Docker Compose and Docker Swarm
to develop your application cluster on your desktop
and then scale into the AWS Cloud
C
om
ing
Soon