Running Docker clusters on AWS (June 2016)
-
Upload
julien-simon -
Category
Technology
-
view
1.568 -
download
5
Transcript of Running Docker clusters on AWS (June 2016)
![Page 1: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/1.jpg)
Running Docker clusters on AWS
Julien Simon, Principal Technical Evangelist [email protected]
@julsimon
![Page 2: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/2.jpg)
The problem
Given a certain amount of
processing power and memory,
how can we best manage an arbitrary number of apps
running in Docker containers? http://tidalseven.com
![Page 3: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/3.jpg)
Docker on Amazon Web Services
Amazon EC2 Container Service (ECS) • https://aws.amazon.com/ecs/ • Launched in 04/2015 • Available in eu-west-1 & eu-central-1 • No additional charge Amazon EC2 Container Registry (ECR) • https://aws.amazon.com/ecr/ • Launched in 12/2015 • Available in eu-west-1 • Free tier: 500MB / month for a year • $0.10 / GB / month + outgoing traffic
![Page 4: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/4.jpg)
Breaking news ;)
Amazon Elastic File System (EFS) • https://aws.amazon.com/efs/ • Launched June 29th • NFSv4.1 server mountable by EC2 instances • Allows shared storage for EC2 instances (Docker volumes anyone?) • Scales capacity automatically and instantly as you add or remove files • Fully managed service
• Available in eu-west-1 : $0.33 / GB / month
![Page 5: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/5.jpg)
AWS Partners https://aws.amazon.com/fr/containers/partners/
![Page 6: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/6.jpg)
Case studies
![Page 7: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/7.jpg)
Case study: Coursera https://www.youtube.com/watch?v=a45J6xAGUvA
Coursera deliver Massive Open Online Courses (14 million students, 1000+ courses). Their platform runs a large number of batch jobs, notably to grade programming assignments. Grading jobs need to run in near-real time while preventing execution of untrusted code inside the Coursera platform. After trying out some other Docker solutions, Coursera have picked Amazon ECS and have even written their own scheduler. “Amazon ECS enabled Coursera to focus on releasing new software rather than spending time managing clusters” - Frank Chen, Software Engineer
![Page 8: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/8.jpg)
Case study: Remind
“Moving to Amazon ECS significantly improved our service performance” Jason Fischl, VP of
Engineering
https://www.youtube.com/watch?v=8zbbQkszP04
Messaging platform for teachers, parents and students (35M users, 2.5B messages, 50% of U.S. public schools) Micro-service platform deployed on Heroku, migrated to Amazon ECS (36 nodes in Q4’15)
![Page 9: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/9.jpg)
Case study: Hailo https://aws.amazon.com/fr/solutions/case-studies/hailo/
Hailo allows people to hail licensed taxis directly to their location (60,000+ drivers, 1M+ passengers). Hailo has evolved from a monolithic application running in one AWS region to a microservice-based architecture running across multiple regions. Hailo decided to schedule containers based on service priority and other runtime metrics atop an elastic resource pool. They chose Amazon ECS as the cluster manager because it is a managed service that can easily enforce task state and fully exposes the cluster state via API calls: http://fr.slideshare.net/nathariel/microservices-and-elastic-resource-pools-with-amazon-ec2-container-service
![Page 10: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/10.jpg)
Case study: Segment
https://aws.amazon.com/fr/solutions/case-studies/segment/
Segment provides a service used by businesses to collect customer data for later use in analytics and marketing. Different micro-services such as API, CDN, and App are deployed on different Amazon ECS clusters. Each service registers to an ELB and Amazon Route 53 points a local entry at each ELB. Services can communicate with each other through DNS. Segment have also built their own PaaS on top of AWS: https://segment.com/blog/the-segment-aws-stack/
“Switching to Amazon ECS has greatly simplified running a service without needing to worry about provisioning or availability”
Calvin French-Owen, Cofounder and CTO
![Page 11: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/11.jpg)
Architecture
![Page 12: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/12.jpg)
https://github.com/aws/amazon-ecs-init https://github.com/aws/amazon-ecs-agent
http://www.allthingsdistributed.com/2015/07/under-the-hood-of-the-amazon-ec2-container-service.html
![Page 13: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/13.jpg)
The Amazon ECS CLI in one slide
ecs-cli configure --cluster myCluster --region eu-west-1 ecs-cli up --keypair myKey --capability-iam –size 3 ecs-cli down myCluster
ecs-cli compose service up ecs-cli compose service psecs-cli compose service scale 8ecs-cli compose service stop ecs-cli compose service delete
aws ecs list-clustersaws ecs describe-clusters --cluster myClusteraws ecs list-container-instances --cluster myCluster
https://github.com/aws/amazon-ecs-cli
![Page 14: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/14.jpg)
DEMO #1
RancherOS on Amazon ECS + Rancher Server
![Page 15: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/15.jpg)
Fixed ports, ELB
Amazon EC2 Container Service Developer Guide
• No service discovery: configuration required (env. variables for ELBs)
• Only 1 container from a given image per ECS instance
![Page 16: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/16.jpg)
Fixed ports, ELB, DNS https://aws.amazon.com/blogs/compute/service-discovery-an-amazon-ecs-reference-architecture/
• Service registration done in Route 53 by CloudWatch Events and Lambda (new CNAME for the ELB)
• Service discovery with DNS
• Only 1 container from a given image per ECS instance
![Page 17: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/17.jpg)
Fixed ports, Weave, DNS https://aws.amazon.com/blogs/apn/architecting-microservices-using-weave-net-and-amazon-ec2-container-service/
• Service registration done by Weave • gossip protocol, no central server • IP address only
• Service discovery & load balancing done with DNS
• Still need an ELB for Internet-facing
services
• Only 1 container from a given image per ECS instance
![Page 18: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/18.jpg)
DEMO #2
Amazon Linux on Amazon ECS + Weave
![Page 19: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/19.jpg)
ECS agent
R Registrator
C Consul agent
F Fabio
P Portal
S Stock
W Weather
Random ports, Registrator, Fabio, Consul
Internet Gateway Elastic Load
Balancer
Consul server EC2 instance
R R R C C C
F F F :9999 :9999 :9999
:80
P P P P P P
S :random
S :random
S :random
W :random
W :random
:random :random :random :random :random
ECS instance ECS instance ECS instance
IP and port number of service returned by local DNS lookup
Consul traffic omitted for brevity
and sanity J
ECS cluster
:53 :53 :53
:random
https://aws.amazon.com/blogs/compute/service-discovery-via-consul-with-amazon-ecs/ + tweaks ;)
![Page 20: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/20.jpg)
DEMO #3
Amazon Linux on Amazon ECS + Registrator + Consul + Fabio
![Page 21: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/21.jpg)
Another option: serverless micro-services https://aws.amazon.com/blogs/developer/serverless-service-discovery-part-1-get-started/
![Page 22: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/22.jpg)
Further reading Tech articles by Werner Vogels, CTO, Amazon.com http://www.allthingsdistributed.com/2014/11/amazon-ec2-container-service.html http://www.allthingsdistributed.com/2015/04/state-management-and-scheduling-with-ecs.html http://www.allthingsdistributed.com/2015/07/under-the-hood-of-the-amazon-ec2-container-service.html Amazon ECS videos @ AWS re:Invent 2015 Amazon ECS: Distributed Applications at Scale https://www.youtube.com/watch?v=eun8CqGqdk8 Turbocharge Your Deployment Pipeline with Containers https://www.youtube.com/watch?v=o4w8opVCI-Q From Local Docker Development to Production https://www.youtube.com/watch?v=7CZFpHUPqXw
3rd party software https://www.weave.works https://www.consul.io/ https://github.com/eBay/fabio
![Page 23: Running Docker clusters on AWS (June 2016)](https://reader034.fdocuments.in/reader034/viewer/2022042723/58cf8c2c1a28abe01d8b6943/html5/thumbnails/23.jpg)
AWS User Groups
Lille Paris Rennes Nantes Bordeaux Lyon Montpellier Toulouse
facebook.com/groups/AWSFrance/
@aws_actus