Amazon EC2 forms the backbone compute platform for hundreds of thousands of AWS customers, but how do you go beyond starting an instance and manually configuring it? This webinar takes you on a journey starting with the basics of key creation and security groups and ending with an Auto Scaling application driven by dynamic policies. It will explain the tools you need to create an Auto Scaling configuration and show you how to bootstrap an instance.
3. Getting The Most out of EC2
Albert Ho, Solution Architect
hoalbert@amazon.com
4. Getting The Most out of EC2
EC2 Basics
Instance Lifecycle
EC2 Instance Types
Using Amazon Machine Images
Bootstrapping EC2 Instances
Monitoring EC2 with CloudWatch
Autoscaling
5. Getting The Most out of EC2
EC2 Basics
Instance Lifecycle
EC2 Instance Types
Using Amazon Machine Images
Bootstrapping EC2 Instances
Monitoring EC2 with CloudWatch
Autoscaling
6. 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
7. 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
8. Getting The Most out of EC2
EC2 Basics
Instance Lifecycle
EC2 Instance Types
Using Amazon Machine Images
Bootstrapping EC2 Instances
Monitoring EC2 with CloudWatch
Autoscaling
9. v
Provisioning and Lifecycle
• Create -> Start -> Stop -> Terminate
• Manually in console
• Automate via API (or other tools)
• Automatically based on demand
(demand curve)
15. Getting The Most out of EC2
EC2 Basics
Instance Lifecycle
EC2 Instance Types
Using Amazon Machine Images
Bootstrapping EC2 Instances
Monitoring EC2 with CloudWatch
Autoscaling
17. Getting The Most out of EC2
EC2 Basics
Instance Lifecycle
EC2 Instance Types
Using Amazon Machine Images
Bootstrapping EC2 Instances
Monitoring EC2 with CloudWatch
Autoscaling
18. v
Amazon Machine Images
Your machine images
AMIs you have created from EC2 instances
Can be kept private or shared with other
accounts
Amazon maintained
Set of Linux and Windows images
Kept up to date by Amazon in each
region
Community maintained
Images published by other AWS users
Managed and maintained by Marketplace
partners
20. Getting The Most out of EC2
EC2 Basics
Instance Lifecycle
EC2 Instance Types
Using Amazon Machine Images
Bootstrapping EC2 Instances
Monitoring EC2 with CloudWatch
Autoscaling
22. 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
23. 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
+
24. v
Bootstrapping
Bake an AMI Configure dynamically
Time consuming configuration
(startup time)
Static configurations (less change
management)
25. v
Bootstrapping
Bake an AMI Configure dynamically
Continuous deployment (latest code)
Environment specific (dev-test-prod)
26. 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
28. 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
29. 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
30. 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
31. v
Custom script on AMI
(script_runner.py) fetches userdata,
parses it, and configures EC2 Instance
on boot
Bootstrapping: metadata and userdata
32. 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
33. 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
36. 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
37. 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
Log4J
Spring
Struts
Linux
JEE
Hibernate
Tomcat
Apache
Fetch on boot
Fetch on boot
Linu
x
JEE
Hibe
rnat
e
Tom
cat
Apac
he
Linu
x
JEE
Hibe
rnat
e
Tom
cat
Apac
he
Linu
x
JEE
Hibe
rnat
e
Tom
cat
Apac
he
Linu
x
JEE
Hibe
rnat
e
Tom
cat
Apac
he
38. 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
Tomcat
Log4J
Spring
Struts
Apache
Linux
JEE
Linux
JEE
Chef/Pu
ppet
Chef/Puppet
scripts
39. Why do this?
Automation
Less fingers, less mistakes
Availability
Drive higher
availability with self-
healing
Security
Instances locked
down by default
Flexible
Shell,
Powershell,
CloudFormation,
Chef, Puppet,
OpsWorks
Scale
Manage large scale
deployments and drive
autoscaling
Efficiency
Audit and manage
your estate with
less time & effort
40. 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)
41. Getting The Most out of EC2
EC2 Basics
Instance Lifecycle
EC2 Instance Types
Using Amazon Machine Images
Bootstrapping EC2 Instances
Monitoring EC2 with CloudWatch
Autoscaling
43. Getting The Most out of EC2
EC2 Basics
Instance Lifecycle
EC2 Instance Types
Using Amazon Machine Images
Bootstrapping EC2 Instances
Monitoring EC2 with CloudWatch
Autoscaling
44. 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
45. Describes what Auto Scaling
will create when adding
Instances - Similar to ec2-run-
instances API command
AMI
Instance Type
Security Group
Instance Key Pair
Only one active launch
configuration at a time
Auto Scaling will terminate
instances with old launch
configuration first
rolling 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
57. 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
58. 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
59. Stop doing these:
Provisioning and fixing servers
Treating compute as physical things
Thinking of compute as a finite commitment
60. and start doing these
Security
Build systems secure by
default
Elasticity
Stateless autoscaling
applications
Replace not fix
Build from scratch, don’t
fix something
Unconstrained
Say goodbye to
traditional capacity
planning
Be cost aware
Tag resources, play with
instance types
Automation
Create instances when
you need them, drop
them when not
61. 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