24
Running Docker clusters on AWS Julien Simon Principal Technical Evangelist Amazon Web Services [email protected] @julsimon 09/11/2016

Running Docker clusters on AWS (November 2016)

Embed Size (px)

Citation preview

Running Docker clusters on AWS Julien Simon Principal Technical Evangelist Amazon Web Services [email protected] @julsimon 09/11/2016

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

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 & eu-central-1 •  Free tier: 500MB / month for a year •  $0.10 / GB / month + outgoing traffic

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

AWS Partners https://aws.amazon.com/fr/containers/partners/

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

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)

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

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 --force

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

Homemade tool: ‘ecs-find’ https://github.com/juliensimon/aws/blob/master/ecs/ecs-find

https://github.com/aws/amazon-ecs-cli

Managing containers on ECS with the console

Demo #1""

Amazon Linux + Amazon ECS""

number of web apps (on port 80) = number of nodes in the cluster"

Managing containers on ECS with Rancher

Demo #2""

RancherOS + Amazon ECS "+ Rancher Server"

"number of web apps (on port 80) = number of nodes in the cluster "

Architecture #1: Fixed ports + ELB

Amazon EC2 Container Service Developer Guide

•  No service discovery, no service registration: automation required

•  Don’t use 1 ELB per service. Use 1 single ALB instead!

•  Only 1 container

from a given image per ECS instance

Architecture #2: Fixed ports + LB + 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 LB)

•  Service discovery with DNS

•  Only 1 container from a given image per ECS instance

Architecture #3: 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 (no port)

•  Service discovery & load balancing done with DNS

•  LB for Internet-facing services

•  Only 1 container from a given image per ECS instance

Demo #3 ""

Amazon Linux + Amazon ECS "+ Weave"

"number of web apps (on port 80) = number of nodes in the cluster

ECS agent

R Registrator

C Consul agent

F Fabio

P Portal

S Stocks

W Weather

Architecture #4: Random ports + Consul and friends

Internet Gateway 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 ;)

Demo #4 "Amazon Linux + Amazon ECS "+ Consul + Registrator + Fabio"

""

number of web apps (on port 80) > number of nodes in the cluster…"but this is really a complex setup!

Architecture #5: Random ports, much simpler!

•  ECS and the ALB work hand in hand for registration and discovery

•  Multiple containers from a given image per ECS instance

https://aws.amazon.com/blogs/compute/microservice-delivery-with-amazon-ecs-and-application-load-balancers/

Demo #5""

Amazon Linux + Amazon ECS + ALB""

number of web apps (on port 80) > number of nodes in the cluster…"and the setup doesn’t make your head hurt (too much) "

"

Additional resources 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

A earlier version of this talk, with a focus on Consul, Registrator & Fabio https://www.youtube.com/playlist?list=PLJgojBtbsuc37iqrxro5S5DcMwv63vrTl

More sessions

•  7/11, 15:00 Hands-on with AWS IoT •  8/11, 10:00 A 60-minute tour of AWS Compute •  9/11, 10:00 Deep Dive: DevOps on AWS •  9/11, 11:00 Running Docker clusters on AWS

•  21/11, 11:00 Move fast, build things with AWS •  22/11, 11:00 Deep Dive: Amazon RDS

Danke sehr!Julien Simon

Principal Technical Evangelist Amazon Web Services

[email protected]

@julsimon