aws apac webinar week - getting the most from ec2

63

Upload: amazon-web-services

Post on 24-Jan-2017

1.176 views

Category:

Technology


0 download

TRANSCRIPT

aws.amazon.com/webinars/apac/webinar-week | #AWSWebinarWeek

Getting The Most out of EC2Albert Ho, Solution [email protected]

Getting The Most out of EC2EC2 BasicsInstance LifecycleEC2 Instance TypesUsing Amazon Machine ImagesBootstrapping EC2 InstancesMonitoring EC2 with CloudWatchAutoscaling

Getting The Most out of EC2EC2 BasicsInstance LifecycleEC2 Instance TypesUsing Amazon Machine ImagesBootstrapping EC2 InstancesMonitoring EC2 with CloudWatchAutoscaling

v

EC2 Basics

Virtual Servers in the Cloud• One instance to thousands of instances• In any public AWS region• Create, start, stop, configure, monitor as desired• Install any software: web, business, client/server, batch processing• Pay only for capacity you use• Variety of cost models Amazon EC2

v

EC2 Basics: cost models

On-Demand Reserved Spot Dedicated

Pay upfront in exchange for hourly prices that are 50-75% lower than

On-Demand

Pay for compute capacity by the hour. No long-term

commitments

Bid for unused Amazon EC2 capacity

Launch instances in VPC on dedicated customer hardware

Customers can combine multiple purchase types to optimize pricing based on current and forecast capacity needs.

Spiky workloads Committed utilization Time-insensitive workloads Highly sensitive workloads

Getting The Most out of EC2EC2 BasicsInstance LifecycleEC2 Instance TypesUsing Amazon Machine ImagesBootstrapping EC2 InstancesMonitoring EC2 with CloudWatchAutoscaling

v

Provisioning and Lifecycle

• Create -> Start -> Stop -> Terminate• Manually in console• Automate via API (or other tools)• Automatically based on demand

(demand curve)

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

Typical weekly traffic to Amazon.com

Typical weekly traffic to Amazon.com

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

Provisioned capacity

November traffic to Amazon.com

November

November traffic to Amazon.com76%

24%

Provisioned capacity

November

November

November traffic to Amazon.com - Match IT Resources to Application Demand

Getting The Most out of EC2EC2 BasicsInstance LifecycleEC2 Instance TypesUsing Amazon Machine ImagesBootstrapping EC2 InstancesMonitoring EC2 with CloudWatchAutoscaling

v

Instance TypesGPU

EnabledGeneral Purpose

Storage and IOOptimized

ComputeOptimized

Memory Optimized

M3 C3 I2

CG1M1 C1 CR1CC2 HI1 HS1

G2

M3 C3 I2 HS1

M2

R3G2

Added Instance

Types

Getting The Most out of EC2EC2 BasicsInstance LifecycleEC2 Instance TypesUsing Amazon Machine ImagesBootstrapping EC2 InstancesMonitoring EC2 with CloudWatchAutoscaling

v

Amazon Machine Images

Your machine images

AMIs you have created from EC2 instancesCan be kept private or shared with other

accounts

Amazon maintained

Set of Linux and Windows imagesKept up to date by Amazon in each

region

Community maintained

Images published by other AWS usersManaged and maintained by Marketplace

partners

v

Amazon Machine Images

Getting The Most out of EC2EC2 BasicsInstance LifecycleEC2 Instance TypesUsing Amazon Machine ImagesBootstrapping EC2 InstancesMonitoring EC2 with CloudWatchAutoscaling

v

Bootstrapping

Bake an AMI

Start an instance

Configure the instance

Create an AMI from your instance

Start new ones from the AMI

v

Bootstrapping

Bake an AMI

Start an instance

Configure the instance

Create an AMI from your instance

Start new ones from the AMI

Configure dynamically

Launch an instance

Use metadata service and cloud-init to perform actions on

instance when it launches

vs

v

Bootstrapping

Bake an AMI Configure dynamically

Build your base images and setup custom initialisation

scripts

Maintain your ‘golden’ base

Use bootstrapping to pass custom information in and

perform post launch tasks like pulling code from SVN

+

v

Bootstrapping

Bake an AMI Configure dynamically

Time consuming configuration (startup time)

Static configurations (less change management)

v

Bootstrapping

Bake an AMI Configure dynamically

Continuous deployment (latest code)

Environment specific (dev-test-prod)

v

Bootstrapping: some examples• Install latest software• Copy data from S3• Register with DNS• Start services• Update packages• Reboot• Open port 80• Register with load balancer• Mount devices

v

Bootstrapping: tools• Scripts on instance • Config Management Tools; puppet, chef, others.• Amazon OpsWorks

v

Bootstrapping: metadata and userdata

• Every EC2 Instance has access to local instance metadata and userdata service

Instance request

User data

Instance

Meta-data service

v

Bootstrapping: metadata and userdata

• Metadata: immutable information about the instance• Accessible from within the instance via HTTP at

http://169.254.169.254/latest/meta-data/• Script(s) on instance may retrieve useful information about the instance, such as:

• Host name• AMI ID• Instance ID• Public/Private DNS• Availability Zone

• An Example: Using Metadata to retrieve the hostname: # curl http://169.254.169.254/latest/meta-data/hostname ip-172-31-10-12.ap-southeast-2.compute.internal

v

Bootstrapping: metadata and userdata

• User Data: pass up to 16KB of text to an instance on launch• Accessible from within the instance via HTTP at

http://169.254.169.254/latest/user-data/• Text can be parsed by script on instance and used to configure the

machine

v

Custom script on AMI

(script_runner.py) fetches userdata,

parses it, and configures EC2 Instance

on boot

Bootstrapping: metadata and userdata

v• CloudInit executes UserData on first boot if UserData begins with:• #! (Linux)• <script> (Windows; technically, EC2Config, not CloudInit, does this)

• CloudInit is installed on Amazon Linux, Ubuntu, and RHEL AMIs• EC2Config is installed on Windows Server AMIs• Both may be installed on other distributions via a package repo or

source

Bootstrapping: UserData and CloudInit

v• UserData to install Apache and MySQL on boot, and attach an EIP:

#!/bin/bash

# Install Apache, PHP, and MySQL yum install –y httpd mysql-server # Attach an Elastic IP to this instance ec2-associate-address \ 23.34.45.56 \

-i $(curl http://169.254.169.254/latest/meta-data/instance-id)

Bootstrapping: UserData and CloudInit

v• Fully-Functional• Partially Configured• Base OS, Config with Code

Bootstrapping: AMIs

v

Bootstrapping: AMIs

Linux

JEE

Your Code

Log4J

Spring

Hibernate

Struts

Tomcat

Apache

Java App Stack

Example full stack required to run your

application.

Let’s use the 3 AMI/bootstrapping

techniques

v

Bootstrapping: AMIs

Fully-functional AMI is pre-build and

ready to launch from the AMI inventory

Inventory of AMIs

Linux

JEE

Your Code

Log4J

Spring

Hibernate

Struts

Tomcat

Apache

Amazon EC2

Linux

JEE

Your Code

Log4J

Spring

Hibernate

Struts

Tomcat

Apache

Linux

JEE

Your Code

Log4J

Spring

Hibernate

Struts

Tomcat

Apache

Linux

JEE

Your Code

Log4J

Spring

Hibernate

Struts

Tomcat

Apache

Linux

JEE

Your Code

Log4J

Spring

Hibernate

Struts

Tomcat

Apache

Java AMI

v

Bootstrapping: AMIs

Partially-configured AMI

A “Golden Image” is launched, with

scripts fetching/installing app code

and other supporting components on

boot

Inventory of AMIs

Amazon EC2

Java AMI

Your Code

Log4JSpring

Struts

Linux

JEE

Hibernate

Tomcat

Apache

Fetch on boot

Fetch on boot

Linux

JEE

Hibernat

e

Tomcat

Apache

Linux

JEE

Hibernat

e

Tomcat

Apache

Linux

JEE

Hibernat

e

Tomcat

Apache

Linux

JEE

Hibernat

e

Tomcat

Apache

v

Bootstrapping: AMIs

Base OS AMI

An AMI with minimal components (OS,

J2EE, and Chef/Puppet) is launched.

All configuration occurs via

Chef/Puppet after instance launch

Inventory of AMIs

Amazon EC2

OS AMI

Fetch on boot

Linux

JEE

Your Code

Hibernate

TomcatLog4J

Spring

StrutsApache

Linux

JEE

Linux

JEEChef/

Puppet

Chef/Puppet

scripts

Why do this?

AutomationLess fingers, less mistakes

AvailabilityDrive higher

availability with self-healing

SecurityInstances locked down by default

FlexibleShell,

Powershell, CloudFormation,

Chef, Puppet, OpsWorks

ScaleManage large scale

deployments and drive autoscaling

EfficiencyAudit and manage your estate with less time & effort

Do Don’t

Some dos and don’ts

Use IAM roles

Go keyless if you can

Strike a balance between AMI and dynamic bootstrapping

Put your API access keys into code (and then publish to GIT) or bake

into AMIs (and share)

Getting The Most out of EC2EC2 BasicsInstance LifecycleEC2 Instance TypesUsing Amazon Machine ImagesBootstrapping EC2 InstancesMonitoring EC2 with CloudWatchAutoscaling

v

Monitoring EC2 with CloudWatch

Getting The Most out of EC2EC2 BasicsInstance LifecycleEC2 Instance TypesUsing Amazon Machine ImagesBootstrapping EC2 InstancesMonitoring EC2 with CloudWatchAutoscaling

v• Auto Scaling

• Scale your Amazon EC2 capacity up or down automatically according to conditions you define

• Ensure that the number of Amazon EC2 instances you’re using increases seamlessly during demand spikes to maintain performance, and decreases automatically during demand lulls to minimize costs

Autoscaling

Describes what Auto Scaling will create when adding

Instances - Similar to ec2-run-instances API command

AMIInstance Type

Security GroupInstance Key Pair

Only one active launch configuration at a time

Auto Scaling will terminate instances with old launch

configuration firstrolling update

Auto Scaling managed grouping of EC2 instances

Automatic health check to maintain pool size

Automatically scale the number of instances by policy – Min, Max,

Desired

Automatic Integration with ELB

Automatic distribution & balancing across AZs

Parameters for performing an Auto Scaling action

Scale Up/Down and by how much

ChangeInCapacity (+/- #)ExactCapacity (#)

ChangeInPercent (+/- %)

Cool Down (seconds)

Policy can be triggered by CloudWatch events

Launch Configuration Auto-Scaling Group Auto-Scaling Policy

v

Autoscaling

v

Autoscaling

v

Autoscaling

v

Autoscaling

v

Autoscaling

v

Availability Zone A Availability Zone B

Autoscaling: Auto Scaling Group

v

Availability Zone A Availability Zone B

Autoscaling: Auto Scaling Group

v

Availability Zone A Availability Zone B

Autoscaling: Auto Scaling Group

v

Availability Zone A Availability Zone B

Autoscaling: Auto Scaling Group

v

Availability Zone A Availability Zone B

Autoscaling: Auto Scaling Group

vLatency

CloudWatchAuto Scaling

ELB

Auto scaling Group

Autoscaling: ELB + CloudWatch

v• Tools Used:

• CloudFormation script – • Create a multi-AZ, load balanced and Auto Scaled sample web site running on an Apache

Web Server. The application is configured to span all Availability Zones in the region and is Auto-Scaled based on the CPU utilization of the web servers.

• CPU script – • Logging on to an m1.small instance to generate CPU load (simulating heavy CPU usage)

to see the autoscaling working:• while true; do echo “running”; done

Autoscaling: DEMO

v• CloudFormation script• Auto-scaling group configuration:

• Min: 1• Max: 3• Cooldown: 300

• Scaling Policies:• Scaling Up:

• CPU Utilization > 80% for 1 consecutive periods of 60 seconds• Action: Add 1 instance• Then wait: 60 seconds before next operation

• Scaling Down:• CPU Utilization < 30% for 1 consecutive periods of 60 seconds• Action: Remove 1 instance• Then wait: 60 seconds before next operation

• 100% CPU Script (NASTY): while true; do echo “running”; done

Demo Information

Stop doing these:Provisioning and fixing servers

Treating compute as physical thingsThinking of compute as a finite commitment

and start doing these

SecurityBuild systems secure by

default

ElasticityStateless autoscaling

applications

Replace not fixBuild from scratch, don’t

fix somethingUnconstrained

Say goodbye to traditional capacity

planning

Be cost awareTag resources, play with

instance types

AutomationCreate instances when you need them, drop

them when not

Online Labs | Training

Gain confidence and hands-on experience with AWS. Watch free

Instructional Videos and explore Self-Paced Labs

Instructor Led Classes

Learn how to design, deploy and operate highly available, cost-effective and secure

applications on AWS in courses led by qualified AWS instructors

Validate your technical expertise with AWS and use practice exams

to help you prepare for AWS Certification

AWS Certification

http://aws.amazon.com/training

v

Questions?

[email protected]