aws apac webinar week - getting the most from ec2
TRANSCRIPT
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)
Typical weekly traffic to Amazon.com
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Provisioned capacity
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
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
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
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• 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