15-319 / 15-619 cloud computing

42
15-319 / 15-619 Cloud Computing Recitation 5 September 27 th , 2016 1

Upload: trinhcong

Post on 28-Jan-2017

231 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 15-319 / 15-619 Cloud Computing

15-319 / 15-619Cloud Computing

Recitation 5

September 27th, 2016

1

Page 2: 15-319 / 15-619 Cloud Computing

Overview

● Administrative issues● Office Hours, Piazza guidelines● Last week’s reflection● Project 2.1, OLI Unit 2 modules 5 and 6● This week’s schedule

○ Quiz 4 - September 30, 2016 (Modules 7, 8, 9)○ Project 2.2 - October 2, 2016○ Finalize 3 person teams for the 15-619 Team

Project - October 2, 2016

Page 3: 15-319 / 15-619 Cloud Computing

Announcements

• Monitor your expenses regularly- Check your bill frequently on TPZ- Check on AWS, use Cost Explorer & filter by tags- Check on the Azure portal since only $100/mo

• Terminate your resources when you are done - Stopping a VM still costs EBS money

($0.1/GB/month)- Amazon EC2 and Amazon Cloudwatch fees for

monitoring, ELB- AutoScaling Group - no additional fees

3

Page 4: 15-319 / 15-619 Cloud Computing

Announcements

● Use spot instances as much as possible

● Protect your credentials

○ Crawlers are looking for AWS credentials on

public repos!

● Primer for 3.1 is out

○ Storage I/O Benchmarking

3

Page 5: 15-319 / 15-619 Cloud Computing

Last Week’s Reflection

● OLI: Conceptual Content○ Unit 2 - Modules 5 and 6:

■ Cloud Management & Software Deployment Considerations

○ Quiz 3 completed● P2.1: Azure and AWS EC2 APIs

○ CLI, Java, Python● P2.1: Load Balancing and AutoScaling

○ Experience horizontal scaling○ Programmatically manage cloud resources and

deal with failure○ Initial experience with load balancing

5

Page 6: 15-319 / 15-619 Cloud Computing

Project 2.1

● To evaluate how well other people can read your code, we will be manually grading your submitted code○ 10% of the total Azure points○ 10% of the total AWS points

○ To enhance readability ■ Use the Google Code Style guidelines

○ Always add comments especially for complex parts

6

Page 7: 15-319 / 15-619 Cloud Computing

Project 2.1

● Some students had a decrease in RPS and hence incorrect instance hour records because○ Their security groups were not open to

All Traffic as per instructions○ The load generator sends traffic over many

random ports to simulate concurrent load

7

Page 8: 15-319 / 15-619 Cloud Computing

This Week: Content

• UNIT 3: Virtualizing Resources for the Cloud

– Module 7: Introduction and Motivation– Module 8: Virtualization– Module 9: Resource Virtualization - CPU– Module 10: Resource Virtualization - Memory – Module 11: Resource Virtualization – I/O – Module 12: Case Study– Module 13: Network and Storage Virtualization

8

Page 9: 15-319 / 15-619 Cloud Computing

OLI Module 7 - VirtualizationIntroduction and Motivation

● Why virtualization○ Enabling the cloud computing system model○ Elasticity○ Resource sandboxing○ Limitation of General-Purpose OS○ Mixed OS environment○ Resource sharing

■ Time■ Space

○ Improved system utilization and reduce costs from a cloud provider perspective

9

Page 10: 15-319 / 15-619 Cloud Computing

OLI Module 8 - Virtualization

● What is Virtualization○ Involves the construction of an isomorphism that

maps a virtual guest system to a real (or physical) host system

○ Sequence of operations e modify guest state○ Mapping function V(Si)

● Virtual Machine Types○ Process Virtual Machines○ System Virtual Machines

10

Page 11: 15-319 / 15-619 Cloud Computing

OLI Module 9Resource Virtualization - CPU

● Steps of CPU Virtualization○ Multiplexing a physical CPU among virtual CPUs○ Virtualizing the ISA (Instruction Set Architecture) of a

CPU

● Code Patch, Full Virtualization and Paravirtualization● Emulation (Interpretation & Binary Translation)● Virtual CPU

11

Page 12: 15-319 / 15-619 Cloud Computing

This Week: Project

● P2.1: Horizontal Scaling and Autoscaling ■ MSB Interview

● P2.2: Containers■ Building Coding Interview Playground

12

Page 13: 15-319 / 15-619 Cloud Computing

Containers

● Provides OS-level virtualization.● Provides private namespace, network

interface and IP address, etc.● Big difference to VMs is that containers

share the host system’s kernel with other containers.

13

Page 14: 15-319 / 15-619 Cloud Computing

Why Containers?

● Faster deployment● Portability across machines ● Version control● Simplified dependency management

Build once, run anywhere

14

Page 15: 15-319 / 15-619 Cloud Computing

Docker Engine

● An orchestrator that comprises:○ Docker Daemon○ Docker Client○ REST API

15

Page 16: 15-319 / 15-619 Cloud Computing

Docker Daemon

● Main brains behind Docker Engine● The Docker Client is used to communicate

with the Docker Daemon● The Daemon does not have to be on the

same machine as the Client

16

Page 17: 15-319 / 15-619 Cloud Computing

Docker Client

● Also known as Docker CLI● When you type:

docker build nginx

You are telling the Docker client to forward the build nginx

instruction to the Daemon

17

Page 18: 15-319 / 15-619 Cloud Computing

Dockerfile

● We can use a Dockerfile to build images● Dockerfile tells Docker:

○ What base image to work from○ What commands to run on base image○ What files to copy to the base image○ What ports should the container listen on?○ What binaries to execute on container launch?

● In short, Dockerfile is a recipe for Docker images

Let’s go through a sample Dockerfile!

Page 19: 15-319 / 15-619 Cloud Computing

Example Dockerfile# Alpine Linux as the base image

FROM debian:latest

# Install additional packages

RUN apk add --update emacs

RUN apk add --update apache

# index.html must be in the current directory

ADD index.html /home/demo/

# Define the command which runs when the container starts

CMD ["cat /home/demo/index.html"]

# Use bash as the container's entry point. CMD is the argument to this entry point

ENTRYPOINT ["/bin/bash", "-c"]

Page 20: 15-319 / 15-619 Cloud Computing

Example Dockerfile# Debian Linux as the base image

FROM debian:latest

# Install additional packages

RUN apk add --update emacs

RUN apk add --update apache

# index.html must be in the current directory

ADD index.html /home/demo/

# Define the command which runs when the container starts

CMD ["cat /home/demo/index.html"]

# Use bash as the container's entry point. CMD is the argument to this entry point

ENTRYPOINT ["/bin/bash", "-c"]

Page 21: 15-319 / 15-619 Cloud Computing

Example Dockerfile# Alpine Linux as the base image

FROM debian:latest

# Install additional packages

RUN apk add --update emacs

RUN apk add --update apache

# index.html must be in the current directory

ADD index.html /home/demo/

# Define the command which runs when the container starts

CMD ["cat /home/demo/index.html"]

# Use bash as the container's entry point. CMD is the argument to this entry point

ENTRYPOINT ["/bin/bash", "-c"]

Page 22: 15-319 / 15-619 Cloud Computing

Example Dockerfile# Alpine Linux as the base image

FROM debian:latest

# Install additional packages

RUN apk add --update emacs

RUN apk add --update apache

# index.html must be in the current directory

ADD index.html /home/demo/

# Define the command which runs when the container starts

CMD ["cat /home/demo/index.html"]

# Use bash as the container's entry point. CMD is the argument to this entry point

ENTRYPOINT ["/bin/bash", "-c"]

Page 23: 15-319 / 15-619 Cloud Computing

Example Dockerfile# Alpine Linux as the base image

FROM debian:latest

# Install additional packages

RUN apk add --update emacs

RUN apk add --update apache

# index.html must be in the current directory

ADD index.html /home/demo/

# Define the command which runs when the container starts

CMD ["cat /home/demo/index.html"]

# Use bash as the container's entry point. CMD is the argument to this entry point

ENTRYPOINT ["/bin/bash", "-c"]

Page 24: 15-319 / 15-619 Cloud Computing

Images & Containers

● An image: is a static file; never changes● A container: a live instance of an image● Think of it this way – you have a DVD that installs

Windows OS (image). After you install it, you can write files to it (container).

● docker build ○ builds an image

● docker run ○ runs a container based off of an image

Page 25: 15-319 / 15-619 Cloud Computing

Project 2.2 - Containers

● Build a service to compile and run user code submitted through a front end.

● Three tasks:○ Task 1: Manually build an image then run a container○ Task 2: Programmatically run containers based off of an

image, with data transfer between host and container ○ Task 3: Bring task 2 to the cloud with AWS EC2 Container

Service (ECS)

Page 26: 15-319 / 15-619 Cloud Computing

Task 1 Objectives

● Work with Dockerfiles● Master the Docker CLI, including useful

commands like:○ docker build○ docker images○ docker run○ docker ps

● Think about integration between the host and the container

Page 27: 15-319 / 15-619 Cloud Computing

Task 1

● Configure a Docker container with an Nginx web server

● Nginx server listening on port 15319● Port 15319 of host VM mapped to container port

15319

<ec2.***.amazonaws.com:15319>

<nginx-container-1:15319>

Page 28: 15-319 / 15-619 Cloud Computing

Task 2 Objectives

● Work with more complex Dockerfiles● Know how to integrate host and container● Launch containers programmatically● Send input to container and getting results from it - how?

○ Use a volume○ Make a microservice on the container and ping its

endpoint

Page 29: 15-319 / 15-619 Cloud Computing

Launching Containers Programmatically

Page 30: 15-319 / 15-619 Cloud Computing

Launching Containers Programmatically

● ShareLatex is a cloud-based LaTeX typesetting web application

● Each time a user compiles their LaTeX program, their compile job gets its own short-lived container

● Why?○ Faster than a VM○ Fewer security concerns○ Incremental compilation is cheap

● Read more: http://jdlm.info/ds-docker-demo/

Page 31: 15-319 / 15-619 Cloud Computing

Task 2

● Configure a container that can run code sent to it

with Dockerfiles

● Use docker-py to programmatically launch Docker

containers from a Python script

● Get the stdout and stderr from executing the

user’s code on the container

● Display the output on the webpage

Page 32: 15-319 / 15-619 Cloud Computing

Task 2

Page 33: 15-319 / 15-619 Cloud Computing

Task 3 Objectives

● Notice that in Task 2, for each user request to compile and run the code, a new container is created, then destroyed ○ Computationally expensive

● We want a load-elastic pool of dedicated containers to compile and run our code

● AWS EC2 Container Service (ECS) comes to the rescue

Page 34: 15-319 / 15-619 Cloud Computing

Task 3

● In addition to Task 2:● Configure a container cluster on ECS ● Configure a load balancer for the container

cluster● Configure the container cluster to use your

Docker container

Page 35: 15-319 / 15-619 Cloud Computing

Demo

35

Page 36: 15-319 / 15-619 Cloud Computing

Tips, Trips, and Tricks

● If you have a dial unix /var/run/docker.sock: permission denied error, you probably did not use sudo or add your user to the docker permissions group

● If containers do not appear in docker ps, check if the program is set to run in daemon mode, or the container will stop immediately after it is launched

Page 37: 15-319 / 15-619 Cloud Computing

Tips, Trips and Tricks

● By default, Python buffers output. Hence you might not see anything in stdout.

● Docker has good tutorials that you might want to work on○ https://docs.docker.com/engine/tutorials/

Page 38: 15-319 / 15-619 Cloud Computing

Project 2.2 Penalties

● Failing to tag EC2 instances, ELB, etc -10%

● Submitting AWS credentials and secrets in code for grading -100%

● Spending more than $10 on P2.2 -10%

● Spending more than $20 on P2.2 -100%

Page 39: 15-319 / 15-619 Cloud Computing

Upcoming Deadlines

39

• Quiz 4: Modules 7, 8 and 9:

Due: Friday 09/30/2016 11:59PM Pittsburgh

• Project 2.2: Docker and EC2 Container Service

Due: Sunday 10/02/2016 11:59PM Pittsburgh

• Team Project: Team Formation

Due: Monday 10/02/2016 11:59PM Pittsburgh

Page 40: 15-319 / 15-619 Cloud Computing

Team Project Architecture

● Writeup and Queries will be released on Monday, October 10th, 2016

● We can have more discussions in subsequent recitations

● For now, ensure 3-person teams you decide have experience with web frameworks and database, storage principles and infra setup/hacking

Page 41: 15-319 / 15-619 Cloud Computing

Team Project Time Table

41

Phase (and query due)

Start Deadline Code and Report Due

Phase 1● Q1, Q2

Monday 10/10/201600:00:01 ET

Sunday 10/30/201623:59:59 ET

Tuesday 11/01/201623:59:59 ET

Phase 2● Q1, Q2, Q3

Monday 10/31/201600:00:01 ET

Sunday 11/13/201615:59:59 ET

Phase 2 Live Test (Hbase/MySQL)

● Q1, Q2, Q3

Sunday 11/13/201618:00:01 ET

Sunday 11/13/201623:59:59 ET

Tuesday 11/15/201623:59:59 ET

Phase 3● Q1, Q2, Q3, Q4

Monday 11/14/201600:00:01 ET

Sunday 12/04/201615:59:59 ET

Phase 3 Live Test● Q1, Q2, Q3, Q4

Sunday 12/04/201618:00:01 ET

Sunday 12/04/201623:59:59 ET

Tuesday 12/06/201623:59:59 ET

Page 42: 15-319 / 15-619 Cloud Computing

The End

42