SlideShare a Scribd company logo
1 of 49
Download to read offline
November 12, 2014 | Las Vegas, NV 
Vikram Garlapati
•Higher costs for disaster recovery sites or data centers 
•Costs for storage, backup, archival and retrieval tools, and processes 
•Capacity planning, procuring, and deploying can be challenging 
•Very low total cost of ownership 
•Scalable storage services and consistent tools and processes across various AWS regions and Availability Zones.
Backup and restore 
Pilot light 
Warm standby 
Multi- site
On-site infrastructure 
S3 Bucket 
Over the 
Internet 
AWS Import/Export 
or 
AWS Storage Gateway 
AWS region 
Corporate 
data center 
Using 
AWS Direct Connect 
Availability Zone 
Amazon 
Elastic 
Compute 
Cloud (EC2) 
Amazon 
S3 bucket 
Backup 
and 
restore
Availability Zone 
AWS region 
AMI 
Instance 
Amazon 
S3 bucket 
Pre-bundled 
with OS and 
applications 
Instance 
quickly 
provisioned 
from AMI 
Data copied 
from objects 
in S3 
Data 
Volume 
Amazon EC2 
On-site 
infrastructure 
AWS 
Import/Export 
or 
AWS Storage 
Gateway 
Using 
AWS Direct 
Connect 
Backup 
and 
restore
Pilot 
light 
www.example.com 
Data 
Mirroring/ 
Replication 
Not Running 
Databa 
se 
Server 
Data 
Volume 
Corporate data center 
Web 
Application 
Server 
Master 
Database 
Server
Pilot 
light 
Not Running 
Database 
Server 
Data 
Volume 
Corporate data center 
Web 
Application 
Server 
Master 
Database 
Server 
www.example.com 
Application 
Server 
Web Server 
Server
Warm 
standby 
Data 
Mirroring/ 
Replication 
Application 
Data Source 
Cut Over 
Elastic 
Load 
Balancer 
Active 
Production 
Amazon 
Route 53 
www.example.com 
Corporate data center 
Data 
Volume 
Application 
Server 
Slave 
Database 
Server 
Web 
AWS region 
Web 
Application 
Server 
Master 
Database 
Server 
Non Production 
Traffic
Warm 
standby 
Elastic 
Load 
Balancer 
Active 
Production 
Amazon 
Route 53 
www.example.com 
Corporate data center 
Data 
Volume 
Application 
Server 
Slave 
Database 
Server 
Web 
AWS region 
Web 
Application 
Server 
Master 
Database 
Server
AWSdatabase licenseslow infrastructure budgetsvariable loads. 99.99% 0-2 minutes0-15 minutes 
Backup and restore 
Pilot light 
Warm standby 
Multi-site
awsdrdemo.com
Amazon Route 53 Elastic Load BalancingAuto ScalingRedundant nodes / clusteringRedundant nodesDeploy Multi-AZDeploy multi-region
Infrastructure 
Foundation Services 
Regions 
Availability Zones 
Storage 
(Object, Block and Archive) 
Networking 
Security & Access Control 
Platform Services 
Databases 
Relational 
NoSQL 
Caching 
Analytics 
Hadoop 
Real-time 
Data warehouse 
App Services 
Queuing 
Orchestration 
App streaming 
Transcoding 
Email 
Search 
Deployment & Management 
Containers 
Dev/ops Tools 
Resource Templates 
Mobile Services 
Identity 
Sync 
Mobile Analytics 
Notifications 
Enterprise 
Applications 
Virtual Desktops 
Data Workflows 
Usage Tracking 
Monitoring and Logs 
Compute 
(VMs, Auto-scaling and Load Balancing) 
CDN and Points of Presence 
Collaboration and Sharing
Oregon 
North Virginia
Oregon 
Availability Zone #1 Availability Zone #2 
Public subnet 
Private subnet 
Public subnet 
Private subnet 
Northern Virginia 
Availability Zone #1 Availability Zone #2 
Public subnet 
Private subnet 
Public subnet 
Private subnet 
10.0.0.0/16 192.168.0.0/16
Oregon 
Availability Zone #1 Availability Zone #2 
Public subnet 
Private subnet 
Public subnet 
Private subnet 
Northern Virginia 
Availability Zone #1 Availability Zone #2 
Public subnet 
Private subnet 
Public subnet 
Private subnet 
VPN 
Instance 
A 
VPN 
Instance 
B 
Secondary 
IPsec 
Primary IPsec
Oregon 
Availability Zone #1 Availability Zone #2 
Public subnet 
Private subnet 
Public subnet 
Private subnet 
Northern Virginia 
Availability Zone #1 Availability Zone #2 
Public subnet 
Private subnet 
Public subnet 
Private subnet 
VPN 
Instance 
A 
VPN 
Instance 
B 
Secondary 
IPsec
G2 
GPU 
enabled 
M3 
General 
purpose 
Memory 
optimized 
R3 
CR1 
M2 
Storage and I/O 
optimized 
C3 
Compute 
optimized 
CC2 
C1 
I2 
HI1 
HS1 
CG1 
M1 
© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. 
Web, app, and database servers
Northern Virginia 
Availability Zone #1 Availability Zone #1 
RDPGW 
Web 
/ app 
WSFC2 
Oregon 
Availability Zone #2 
www.awsdrdemo.com
Northern Virginia 
Availability Zone #1 Availability Zone #1 
RDP 
GW / NAT 
WSFC2 
Oregon 
Availability Zone #2 
RDP 
GW / NAT 
RDP 
GW / NAT
Northern Virginia 
Availability Zone #1 Availability Zone #1 
RDPGW 
Web 
/ app 
WSFC2 
Oregon 
Availability Zone #2 
AD1 AD2 AD3
Northern Virginia 
Availability Zone #1 Availability Zone #1 
RDPGW 
WSFC2 
Oregon 
Availability Zone #2 
Web 
/ app 
Web 
/ app 
Web & App 
AMI
Northern Virginia 
Availability Zone #1 Availability Zone #1 
Web 
/ app 
Oregon 
Availability Zone #2 
AD1 SQL1 AD2 SQL2 AD3 SQL3 
ASYNC 
Data 
Replication
Availability Zone #1 
Availability Zone #2 
www.awsdrdemo.com 
RDP 
GW 
RDP 
RDGPW 
GW 
Web 
/ app Web 
/ app 
Web 
/ app 
Web 
/ app 
Web 
/ app 
Web 
/ app 
AD 
SQL2 
AD1 SQL1 AD2 
Sync Data 
Replication
Northern Virginia 
Availability Zone #1 Availability Zone #1 
RDP 
GW 
RDPGW 
Web 
/ app 
Oregon 
Availability Zone #2 
RDP 
GW 
AD1 AD2 AD3 
Web 
/ app 
Web 
/ app 
SQL1 SQL2 SQL3 
www.awsdrdemo.com 
Async Data 
Replication 
VPN
Northern Virginia 
Availability Zone #1 
APP 
failover.awsdrdemo.com
http://www.awsdrdemo.com/
http://www.awsdrdemo.com/
Check live status at 
http://status.awsdrdemo.com/ha
Check live status at 
http://status.awsdrdemo.com/dr
HttpWebResponse webresponse; 
string uri = http://169.254.169.254/latest/meta-data/placement/availability- zone; 
string retValue; 
/* Create webrequest for the uri */ 
HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(uri); 
/* Capture response and read the stream */ 
webresponse = (HttpWebResponse)webrequest.GetResponse(); 
Encoding enc= System.Text.Encoding.GetEncoding(1252); 
StreamReaderloResponseStream= new 
StreamReader(webresponse.GetResponseStream(), enc); 
retValue = loResponseStream.ReadToEnd();
"AWSTemplateFormatVersion" : "2010-09-09", 
"Description" : "AWS CloudFormation Template ELBWithEC2Instances: Create a load balanced, Auto Scaled sample website where theinstances are locked down to only accept traffic from the load balancer. This script creates an Auto Scaling group behind a load balancer with a simple health check. The web site is available on port 80, however, the instances can be configured to listen on any port (8888 by default).", 
"Parameters" : { 
"KeyPairName" : { 
"Description" : "Name of an existing Amazon EC2 key pair for SSH access", 
"Type" : "String", 
"Default" : "kamalkey" 
}, 
"InstanceType" : { 
"Description" : "WebServerEC2 instance type", 
"Type" : "String", 
"Default" : "m3.medium", 
"AllowedValues" : [ "t1.micro","m1.small","m1.medium","m1.large","m1.xlarge","m2.xlarge","m2.2xlarge","m2.4xlarge","m3.medium","m3.large","m3.xlarge","m3.2xlarge","c1.medium","c1.xlarge"], 
"ConstraintDescription" : "must be a valid EC2 instance type." 
}, 
"WebServerPort" : { 
"Description" : "TCP/IP port of the web server", 
"Type" : "String", 
"Default" : "80" 
}, 
"HostedZoneId" : { 
"Type" : "String", 
"Description" : "The Record Set's Hosted Zone Id for the existing hosted zone", 
"Default" : "Z1M58G0W56PQJA" 
} 
}, 
"Mappings" : { 
"AWSInstanceType2Arch" : { 
"t1.micro" : { "Arch" : "64" }, 
"m1.small" : { "Arch" : "64" }, 
"m1.medium" : { "Arch" : "64" }, 
"m1.large" : { "Arch" : "64" }, 
"m1.xlarge" : { "Arch" : "64" }, 
"m2.xlarge" : { "Arch" : "64" }, 
"m2.2xlarge" : { "Arch" : "64" }, 
"m2.4xlarge" : { "Arch" : "64" }, 
"m3.medium" : { "Arch" : "64" }, 
"m3.large" : { "Arch" : "64" }, 
"m3.xlarge" : { "Arch" : "64" }, 
"m3.2xlarge" : { "Arch" : "64" }, 
"c1.medium" : { "Arch" : "64" }, 
"c1.xlarge" : { "Arch" : "64" } 
}, 
"AWSRegionArch2AMI" : { 
"us-east-1":{"32" : "ami-06ef6b6e", "64" : "ami-06ef6b6e" } 
} 
}, 
"Resources" : { 
"WebServerGroup" : { 
"Type" : "AWS::AutoScaling::AutoScalingGroup", 
"Properties" : { 
"AvailabilityZones" : [ "us-east-1c","us-east-1d"], 
"LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, 
"MinSize" : "2", 
"MaxSize" : "2", 
"LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" }], 
"VPCZoneIdentifier" : ["subnet-d8f2edf0","subnet-2fc76658"], 
"Tags" :[ { 
"Key" : "Name", 
"Value" : "DR-DEMOAPPWEBSERVER", 
"PropagateAtLaunch" : true 
}] 
} 
}, 
"LaunchConfig" : { 
"Type" : "AWS::AutoScaling::LaunchConfiguration", 
"Properties" : { 
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, 
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, 
"Arch" ] } ] }, 
"UserData" : { "Fn::Base64" : { "Ref" : "WebServerPort" }}, 
"SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], 
"InstanceType" : { "Ref" : "InstanceType" }, 
"KeyName" : { "Ref" : "KeyPairName" }, 
"AssociatePublicIpAddress" : "false" 
} 
}, 
"ElasticLoadBalancer" : { 
"Type" : "AWS::ElasticLoadBalancing::LoadBalancer", 
"Properties" : { 
"SecurityGroups" : [ { "Ref" : "LoadBalancerSecurityGroup" } ], 
"Subnets" : ["subnet-90cdd6b8","subnet-6024f917"], 
"Listeners" : [ { 
"LoadBalancerPort" : "80", 
"InstancePort" : { "Ref" : "WebServerPort" }, 
"Protocol" : "HTTP" 
} ], 
"HealthCheck" : { 
"Target" : { "Fn::Join" : [ "", ["HTTP:", { "Ref" : "WebServerPort" }, "/index.html"]]}, 
"HealthyThreshold" : "2", 
"UnhealthyThreshold" : "10", 
"Interval" : "10", 
"Timeout" : "3" 
} 
} 
}, 
"LoadBalancerSecurityGroup" : { 
"Type" : "AWS::EC2::SecurityGroup", 
"Properties" : { 
"GroupDescription" : "Enable HTTP access on port 80", 
"VpcId" : "vpc-0eef506b", 
"SecurityGroupIngress" : [ { 
"IpProtocol" : "tcp", 
"FromPort" : "80", 
"ToPort" : "80", 
"CidrIp" : "0.0.0.0/0" 
} ], 
"SecurityGroupEgress" : [ { 
"IpProtocol" : "tcp", 
"FromPort" : { "Ref" : "WebServerPort" }, 
"ToPort" : { "Ref" : "WebServerPort" }, 
"CidrIp" : "0.0.0.0/0" 
} ] 
} 
}, 
"myDNS" : { 
"Type" : "AWS::Route53::RecordSetGroup", 
"Properties" : { 
"HostedZoneName" : "awsdrdemo.com.", 
"Comment" : "Zone apex alias targeted to myELBLoadBalancer.", 
"RecordSets" : [ 
{ 
"Name" : "www.awsdrdemo.com.", 
"Type" : "A", 
"AliasTarget" : { 
"HostedZoneId" : { "Fn::GetAtt" : ["ElasticLoadBalancer", "CanonicalHostedZoneNameID"] }, 
"DNSName" : { "Fn::GetAtt" : ["ElasticLoadBalancer","CanonicalHostedZoneName"] } 
} 
} 
] 
} 
}, 
"InstanceSecurityGroup" : { 
"Type" : "AWS::EC2::SecurityGroup", 
"Properties" : { 
"GroupDescription" : "Enable RDP access and HTTP access on the inbound port", 
"VpcId" : "vpc-0eef506b", 
"SecurityGroupIngress" : [ { 
"IpProtocol" : "tcp", 
"FromPort" : { "Ref" : "WebServerPort" }, 
"ToPort" : { "Ref" : "WebServerPort" }, 
"CidrIp" : "0.0.0.0/0" 
}, 
{ 
"IpProtocol" : "tcp", 
"FromPort" : "3389", 
"ToPort" : "3389", 
"CidrIp" : "0.0.0.0/0" 
} ] 
} 
} 
}, 
"Outputs" : { 
"URL" : { 
"Description" : "URL of the website", 
"Value" : { "Fn::Join" : [ "", [ "http://", { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ]}]]} 
} 
} 
} 
Create ELB 
Create Auto Scaling group 
Launch instances 
Route 53 recordset updates 
Status notifications
# Retrieve ELB Zone Id from existing Route53 zone 
zoneid=$(aws --output text route53 list-resource-record-sets --hosted-zone-id $hostedzoneid --start-record-name $domainname--start-record-type A --max-items 1 | grepALIASTARGET | awk{'print $4'}) 
# Retrieve ELB DNS name from existing Route53 zone 
dns=$(aws --output text route53 list-resource-record-sets --hosted-zone-id $hostedzoneid --start-record-name $domainname--start-record-type A --max-items 1 | grepALIASTARGET | awk{'print $2'}) 
# Remove existing Alias from Route53 hosted zone 
aws --region us-west-1 route53 change-resource-record-sets --hosted-zone-id $hostedzoneid --change-batch "{ "Changes": [ { "Action": "DELETE", "ResourceRecordSet": { "Name": "$domainname", "Type": "A", "AliasTarget": { "HostedZoneId": "$zoneid", "DNSName": "$dns", "EvaluateTargetHealth": false } } } ]}" 
# Launch DR stack using CloudFormation script 
launchedstackid=$(aws --region $snsregion--output text cloudformation create-stack --stack-name $stackname--template- body file:///usr/local/bin/ELBWithEC2Instances.template --notification-arns$snsarn--parameters ParameterKey="HostedZoneId",ParameterValue="$hostedzoneid") 
# Check the CloudFormationstatus 
do cmd=$(aws cloudformation describe-stacks --region $snsregion--output text --stack-name $stackname--max-items 1 | grepCREATE_COMPLETE)
"Parameters" : { 
"KeyPairName" : { 
"Description" : "Name of an existing Amazon EC2 key pair for SSH access", 
"Type" : "String", 
"Default" : “drkey" 
}, 
"InstanceType" : { 
"Description" : "WebServerEC2 instance type", 
"Type" : "String", 
"Default" : "m3.medium", 
"AllowedValues" : [ "t1.micro","m1.small","m1.medium","m1.large","m1.xlarge","m2.xlarge","m2.2xlarge","m2.4xlarge","m3.medium","m3.large","m3.xlarge","m3.2xlarge","c1.medium","c1.xlarge"], 
"ConstraintDescription" : "must be a valid EC2 instance type." 
}, 
"WebServerPort" : { 
"Description" : "TCP/IP port of the web server", 
"Type" : "String", 
"Default" : "80" 
}, 
"HostedZoneId" : { 
"Type" : "String", 
"Description" : "The Record Set's Hosted Zone Id for the existing hosted zone", 
"Default" : "Z1M58G0W56PQJA" 
} 
},
"Resources" : { 
"WebServerGroup" : { 
"Type" : "AWS::AutoScaling::AutoScalingGroup", 
"Properties" : { 
"AvailabilityZones" : [ "us-east-1c","us-east-1d"], 
"LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, 
"MinSize" : "2", 
"MaxSize" : "2", 
"LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" }], 
"VPCZoneIdentifier" : ["subnet-d8f2edf0","subnet-2fc76658"], 
"Tags" :[ { 
"Key" : "Name", 
"Value" : "DR-DEMOAPPWEBSERVER", 
"PropagateAtLaunch" : true 
}]}}, 
"LaunchConfig" : { 
"Type" : "AWS::AutoScaling::LaunchConfiguration", 
"Properties" : { 
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" },"Arch" ] } ] }, 
"UserData" : { "Fn::Base64" : { "Ref" : "WebServerPort" }}, 
"SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], 
"InstanceType" : { "Ref" : "InstanceType" }, 
"KeyName" : { "Ref" : "KeyPairName" }, 
"AssociatePublicIpAddress" : "false" 
}
"Resources" : { 
"ElasticLoadBalancer" : { 
"Type" : "AWS::ElasticLoadBalancing::LoadBalancer", 
"Properties" : { 
"SecurityGroups" : [ { "Ref" : "LoadBalancerSecurityGroup" } ], 
"Subnets" : ["subnet-90cdd6b8","subnet-6024f917"], 
"Listeners" : [ { 
"LoadBalancerPort" : "80", 
"InstancePort" : { "Ref" : "WebServerPort" }, 
"Protocol" : "HTTP”} ], 
"HealthCheck" : { 
"Target" : { "Fn::Join" : [ "", ["HTTP:", { "Ref" : "WebServerPort" }, "/index.html"]]}, 
"HealthyThreshold" : "2", 
"UnhealthyThreshold" : "10", 
"Interval" : "10", 
"Timeout" : "3”}}}, 
"LoadBalancerSecurityGroup" : { 
"Type" : "AWS::EC2::SecurityGroup", 
"Properties" : { 
"GroupDescription" : "Enable HTTP access on port 80", 
"VpcId" : "vpc-0eef506b", 
"SecurityGroupIngress" : [ { 
"IpProtocol" : "tcp", 
"FromPort" : "80", 
"ToPort" : "80", 
"CidrIp" : "0.0.0.0/0" 
} ]
"myDNS" : { 
"Type" : "AWS::Route53::RecordSetGroup", 
"Properties" : { 
"HostedZoneName" : "awsdrdemo.com.", 
"Comment" : "Zone apex alias targeted to myELBLoadBalancer.", 
"RecordSets" : [ 
{ 
"Name" : "www.awsdrdemo.com.", 
"Type" : "A", 
"AliasTarget" : { 
"HostedZoneId" : { "Fn::GetAtt" : ["ElasticLoadBalancer", "CanonicalHostedZoneNameID"] }, 
"DNSName" : { "Fn::GetAtt" : ["ElasticLoadBalancer","CanonicalHostedZoneName"] } 
} 
} 
]
BufferedReaderin = newBufferedReader(newInputStreamReader(request.getInputStream(); 
while((line = in.readLine()) != null) { 
jsonBody+=line; } 
if(request.getHeader("x-amz-sns-message-type").equalsIgnoreCase("SubscriptionConfirmation")){ 
System.out.println("ProcessingSubscriptionMessage!"); 
StringsubscribeURL= SNSJSONParser.parseJSONString(jsonBody, "SubscribeURL"); 
try{ 
sendGet(subscribeURL); 
System.out.println("Send Confirmation GET to subscription URL"); 
} catch(Exception e) { 
e.printStackTrace(); 
System.err.println("Error confirming subscription via GET request..");} 
}else{ 
System.out.println("Processing Notification Message !"); 
StringsnsMessage= SNSJSONParser.parseJSONString(jsonBody, "Message");s 
String resourceStatusReason = getSubString(snsMessage, "ResourceStatusReason"); 
message+="<li>"+ resourceId+ " :: "+ resourceStatus+ " :: "+ resourceStatusReason+ "</li>”;}else{ 
message+= "<li>"+ snsMessage+ "</li>"; 
} 
}
(99.99%) (0-2 minutes) 0-15 minutes)
http://bit.ly/awsevals
Availability Zone #1 Availability Zone #2 
www.awsdrdemo.com 
RDP 
GW 
RDP 
RDGPW 
GW 
Web 
/ app Web 
/ app 
Web 
/ app 
Web 
/ app 
Web 
/ app 
Web 
/ app 
AD 
sql2 
AD1 AD2 
SQL1
Northern Virginia 
Availability Zone #1 Availability Zone #1 
RDP 
GW 
RDPGW 
RDP 
GW 
Web 
/ app 
Oregon 
Availability Zone #2 
RDP 
GW 
AD1 AD2 AD3 
Web 
/ app 
Web 
/ app 
SQL1 SQL2 SQL3 
www.awsdrdemo.com 
Web 
/ app 
Web 
/ app

More Related Content

What's hot

Improving Infrastructure Governance on AWS - AWS June 2016 Webinar Series
Improving Infrastructure Governance on AWS - AWS June 2016 Webinar SeriesImproving Infrastructure Governance on AWS - AWS June 2016 Webinar Series
Improving Infrastructure Governance on AWS - AWS June 2016 Webinar SeriesAmazon Web Services
 
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...Edureka!
 
AWS CodeDeploy, AWS CodePipeline, and AWS CodeCommit: Transforming Software D...
AWS CodeDeploy, AWS CodePipeline, and AWS CodeCommit: Transforming Software D...AWS CodeDeploy, AWS CodePipeline, and AWS CodeCommit: Transforming Software D...
AWS CodeDeploy, AWS CodePipeline, and AWS CodeCommit: Transforming Software D...Amazon Web Services
 
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用Amazon Web Services
 
AWS Control Tower
AWS Control TowerAWS Control Tower
AWS Control TowerCloudHesive
 
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)Amazon Web Services Korea
 
Using AWS Control Tower to govern multi-account AWS environments at scale - G...
Using AWS Control Tower to govern multi-account AWS environments at scale - G...Using AWS Control Tower to govern multi-account AWS environments at scale - G...
Using AWS Control Tower to govern multi-account AWS environments at scale - G...Amazon Web Services
 
Best Practices for Building Partner-Managed Services on AWS
Best Practices for Building Partner-Managed Services on AWSBest Practices for Building Partner-Managed Services on AWS
Best Practices for Building Partner-Managed Services on AWSAmazon Web Services
 
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS Summit
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS SummitKubernetes on AWS with Amazon EKS - MAD301 - New York AWS Summit
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS SummitAmazon Web Services
 
An Introduction to the AWS Well Architected Framework - Webinar
An Introduction to the AWS Well Architected Framework - WebinarAn Introduction to the AWS Well Architected Framework - Webinar
An Introduction to the AWS Well Architected Framework - WebinarAmazon Web Services
 
AWS Builders Online Series | AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저
AWS Builders Online Series | AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저AWS Builders Online Series | AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저
AWS Builders Online Series | AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저Amazon Web Services Korea
 
K8s on AWS: Introducing Amazon EKS
K8s on AWS: Introducing Amazon EKSK8s on AWS: Introducing Amazon EKS
K8s on AWS: Introducing Amazon EKSAmazon Web Services
 
AWS Multi-Account Architecture and Best Practices
AWS Multi-Account Architecture and Best PracticesAWS Multi-Account Architecture and Best Practices
AWS Multi-Account Architecture and Best PracticesAmazon Web Services
 
Microservices Architectures on Amazon Web Services
Microservices Architectures on Amazon Web ServicesMicroservices Architectures on Amazon Web Services
Microservices Architectures on Amazon Web ServicesAmazon Web Services
 
Containers on AWS: An Introduction
Containers on AWS: An IntroductionContainers on AWS: An Introduction
Containers on AWS: An IntroductionAmazon Web Services
 

What's hot (20)

Improving Infrastructure Governance on AWS - AWS June 2016 Webinar Series
Improving Infrastructure Governance on AWS - AWS June 2016 Webinar SeriesImproving Infrastructure Governance on AWS - AWS June 2016 Webinar Series
Improving Infrastructure Governance on AWS - AWS June 2016 Webinar Series
 
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
 
AWS CodeDeploy, AWS CodePipeline, and AWS CodeCommit: Transforming Software D...
AWS CodeDeploy, AWS CodePipeline, and AWS CodeCommit: Transforming Software D...AWS CodeDeploy, AWS CodePipeline, and AWS CodeCommit: Transforming Software D...
AWS CodeDeploy, AWS CodePipeline, and AWS CodeCommit: Transforming Software D...
 
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
 
AWS Control Tower
AWS Control TowerAWS Control Tower
AWS Control Tower
 
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
 
Using AWS Control Tower to govern multi-account AWS environments at scale - G...
Using AWS Control Tower to govern multi-account AWS environments at scale - G...Using AWS Control Tower to govern multi-account AWS environments at scale - G...
Using AWS Control Tower to govern multi-account AWS environments at scale - G...
 
Deep dive into AWS IAM
Deep dive into AWS IAMDeep dive into AWS IAM
Deep dive into AWS IAM
 
Serverless architecture
Serverless architectureServerless architecture
Serverless architecture
 
Best Practices for Building Partner-Managed Services on AWS
Best Practices for Building Partner-Managed Services on AWSBest Practices for Building Partner-Managed Services on AWS
Best Practices for Building Partner-Managed Services on AWS
 
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS Summit
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS SummitKubernetes on AWS with Amazon EKS - MAD301 - New York AWS Summit
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS Summit
 
An Introduction to the AWS Well Architected Framework - Webinar
An Introduction to the AWS Well Architected Framework - WebinarAn Introduction to the AWS Well Architected Framework - Webinar
An Introduction to the AWS Well Architected Framework - Webinar
 
AWS Builders Online Series | AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저
AWS Builders Online Series | AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저AWS Builders Online Series | AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저
AWS Builders Online Series | AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저
 
AWS 101
AWS 101AWS 101
AWS 101
 
K8s on AWS: Introducing Amazon EKS
K8s on AWS: Introducing Amazon EKSK8s on AWS: Introducing Amazon EKS
K8s on AWS: Introducing Amazon EKS
 
AWS core services
AWS core servicesAWS core services
AWS core services
 
AWS Multi-Account Architecture and Best Practices
AWS Multi-Account Architecture and Best PracticesAWS Multi-Account Architecture and Best Practices
AWS Multi-Account Architecture and Best Practices
 
Introduction to Amazon Athena
Introduction to Amazon AthenaIntroduction to Amazon Athena
Introduction to Amazon Athena
 
Microservices Architectures on Amazon Web Services
Microservices Architectures on Amazon Web ServicesMicroservices Architectures on Amazon Web Services
Microservices Architectures on Amazon Web Services
 
Containers on AWS: An Introduction
Containers on AWS: An IntroductionContainers on AWS: An Introduction
Containers on AWS: An Introduction
 

Similar to (BAC404) Deploying High Availability and Disaster Recovery Architectures with AWS | AWS re:Invent 2014

Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...
Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...
Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...Amazon Web Services
 
Scalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSScalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSFernando Rodriguez
 
게임을 위한 Cloud Native on AWS (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임을 위한 Cloud Native on AWS (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임을 위한 Cloud Native on AWS (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임을 위한 Cloud Native on AWS (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
 
Well-Architected for Security: Advanced Session
Well-Architected for Security: Advanced SessionWell-Architected for Security: Advanced Session
Well-Architected for Security: Advanced SessionAmazon Web Services
 
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)Amazon Web Services
 
AWS Cloud Kata 2014 | Jakarta - 2-1 AWS Intro and Scale 2014
AWS Cloud Kata 2014 | Jakarta - 2-1 AWS Intro and Scale 2014AWS Cloud Kata 2014 | Jakarta - 2-1 AWS Intro and Scale 2014
AWS Cloud Kata 2014 | Jakarta - 2-1 AWS Intro and Scale 2014Amazon Web Services
 
Running Serverless at The Edge (CTD302) - AWS re:Invent 2018
Running Serverless at The Edge (CTD302) - AWS re:Invent 2018Running Serverless at The Edge (CTD302) - AWS re:Invent 2018
Running Serverless at The Edge (CTD302) - AWS re:Invent 2018Amazon Web Services
 
AWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design PatternsAWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design PatternsAmazon Web Services
 
AWS Webcast - What is Cloud Computing?
AWS Webcast - What is Cloud Computing?AWS Webcast - What is Cloud Computing?
AWS Webcast - What is Cloud Computing?Amazon Web Services
 
AWS 101, London - September 2014
AWS 101, London - September 2014AWS 101, London - September 2014
AWS 101, London - September 2014Ian Massingham
 
AWS Cloud Computing for Startups Werner Vogels -part i
AWS Cloud Computing for Startups   Werner Vogels -part iAWS Cloud Computing for Startups   Werner Vogels -part i
AWS Cloud Computing for Startups Werner Vogels -part iAmazon Web Services
 
Build A Website on AWS for Your First 10 Million Users
Build A Website on AWS for Your First 10 Million UsersBuild A Website on AWS for Your First 10 Million Users
Build A Website on AWS for Your First 10 Million UsersAmazon Web Services
 
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...Amazon Web Services
 
(SEC309) Amazon VPC Configuration: When Least Privilege Meets the Penetration...
(SEC309) Amazon VPC Configuration: When Least Privilege Meets the Penetration...(SEC309) Amazon VPC Configuration: When Least Privilege Meets the Penetration...
(SEC309) Amazon VPC Configuration: When Least Privilege Meets the Penetration...Amazon Web Services
 

Similar to (BAC404) Deploying High Availability and Disaster Recovery Architectures with AWS | AWS re:Invent 2014 (20)

Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...
Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...
Disaster Recovery Site on AWS - Minimal Cost Maximum Efficiency (STG305) | AW...
 
Scalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSScalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWS
 
게임을 위한 Cloud Native on AWS (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임을 위한 Cloud Native on AWS (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임을 위한 Cloud Native on AWS (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임을 위한 Cloud Native on AWS (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
 
Well-Architected for Security: Advanced Session
Well-Architected for Security: Advanced SessionWell-Architected for Security: Advanced Session
Well-Architected for Security: Advanced Session
 
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)
 
AWS Cloud Kata 2014 | Jakarta - 2-1 AWS Intro and Scale 2014
AWS Cloud Kata 2014 | Jakarta - 2-1 AWS Intro and Scale 2014AWS Cloud Kata 2014 | Jakarta - 2-1 AWS Intro and Scale 2014
AWS Cloud Kata 2014 | Jakarta - 2-1 AWS Intro and Scale 2014
 
What Is Happening At The Edge
What Is Happening At The EdgeWhat Is Happening At The Edge
What Is Happening At The Edge
 
Running Serverless at The Edge (CTD302) - AWS re:Invent 2018
Running Serverless at The Edge (CTD302) - AWS re:Invent 2018Running Serverless at The Edge (CTD302) - AWS re:Invent 2018
Running Serverless at The Edge (CTD302) - AWS re:Invent 2018
 
AWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design PatternsAWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design Patterns
 
AWS 101 Event - 16 July 2013
AWS 101 Event - 16 July 2013AWS 101 Event - 16 July 2013
AWS 101 Event - 16 July 2013
 
DW on AWS
DW on AWSDW on AWS
DW on AWS
 
AWS Webcast - What is Cloud Computing?
AWS Webcast - What is Cloud Computing?AWS Webcast - What is Cloud Computing?
AWS Webcast - What is Cloud Computing?
 
AWS 101, London - September 2014
AWS 101, London - September 2014AWS 101, London - September 2014
AWS 101, London - September 2014
 
Aplicaciones distribuidas con Dapr
Aplicaciones distribuidas con DaprAplicaciones distribuidas con Dapr
Aplicaciones distribuidas con Dapr
 
AWS Cloud Computing for Startups Werner Vogels -part i
AWS Cloud Computing for Startups   Werner Vogels -part iAWS Cloud Computing for Startups   Werner Vogels -part i
AWS Cloud Computing for Startups Werner Vogels -part i
 
Deep Dive: Amazon RDS
Deep Dive: Amazon RDSDeep Dive: Amazon RDS
Deep Dive: Amazon RDS
 
Build A Website on AWS for Your First 10 Million Users
Build A Website on AWS for Your First 10 Million UsersBuild A Website on AWS for Your First 10 Million Users
Build A Website on AWS for Your First 10 Million Users
 
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
Visibility into Serverless Applications built using AWS Fargate (CON312-R1) -...
 
(SEC309) Amazon VPC Configuration: When Least Privilege Meets the Penetration...
(SEC309) Amazon VPC Configuration: When Least Privilege Meets the Penetration...(SEC309) Amazon VPC Configuration: When Least Privilege Meets the Penetration...
(SEC309) Amazon VPC Configuration: When Least Privilege Meets the Penetration...
 
AWS 101 December 2014
AWS 101 December 2014AWS 101 December 2014
AWS 101 December 2014
 

More from Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

More from Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Recently uploaded

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 

Recently uploaded (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

(BAC404) Deploying High Availability and Disaster Recovery Architectures with AWS | AWS re:Invent 2014

  • 1. November 12, 2014 | Las Vegas, NV Vikram Garlapati
  • 2.
  • 3. •Higher costs for disaster recovery sites or data centers •Costs for storage, backup, archival and retrieval tools, and processes •Capacity planning, procuring, and deploying can be challenging •Very low total cost of ownership •Scalable storage services and consistent tools and processes across various AWS regions and Availability Zones.
  • 4. Backup and restore Pilot light Warm standby Multi- site
  • 5. On-site infrastructure S3 Bucket Over the Internet AWS Import/Export or AWS Storage Gateway AWS region Corporate data center Using AWS Direct Connect Availability Zone Amazon Elastic Compute Cloud (EC2) Amazon S3 bucket Backup and restore
  • 6. Availability Zone AWS region AMI Instance Amazon S3 bucket Pre-bundled with OS and applications Instance quickly provisioned from AMI Data copied from objects in S3 Data Volume Amazon EC2 On-site infrastructure AWS Import/Export or AWS Storage Gateway Using AWS Direct Connect Backup and restore
  • 7. Pilot light www.example.com Data Mirroring/ Replication Not Running Databa se Server Data Volume Corporate data center Web Application Server Master Database Server
  • 8. Pilot light Not Running Database Server Data Volume Corporate data center Web Application Server Master Database Server www.example.com Application Server Web Server Server
  • 9. Warm standby Data Mirroring/ Replication Application Data Source Cut Over Elastic Load Balancer Active Production Amazon Route 53 www.example.com Corporate data center Data Volume Application Server Slave Database Server Web AWS region Web Application Server Master Database Server Non Production Traffic
  • 10. Warm standby Elastic Load Balancer Active Production Amazon Route 53 www.example.com Corporate data center Data Volume Application Server Slave Database Server Web AWS region Web Application Server Master Database Server
  • 11.
  • 12. AWSdatabase licenseslow infrastructure budgetsvariable loads. 99.99% 0-2 minutes0-15 minutes Backup and restore Pilot light Warm standby Multi-site
  • 14.
  • 15. Amazon Route 53 Elastic Load BalancingAuto ScalingRedundant nodes / clusteringRedundant nodesDeploy Multi-AZDeploy multi-region
  • 16. Infrastructure Foundation Services Regions Availability Zones Storage (Object, Block and Archive) Networking Security & Access Control Platform Services Databases Relational NoSQL Caching Analytics Hadoop Real-time Data warehouse App Services Queuing Orchestration App streaming Transcoding Email Search Deployment & Management Containers Dev/ops Tools Resource Templates Mobile Services Identity Sync Mobile Analytics Notifications Enterprise Applications Virtual Desktops Data Workflows Usage Tracking Monitoring and Logs Compute (VMs, Auto-scaling and Load Balancing) CDN and Points of Presence Collaboration and Sharing
  • 18. Oregon Availability Zone #1 Availability Zone #2 Public subnet Private subnet Public subnet Private subnet Northern Virginia Availability Zone #1 Availability Zone #2 Public subnet Private subnet Public subnet Private subnet 10.0.0.0/16 192.168.0.0/16
  • 19. Oregon Availability Zone #1 Availability Zone #2 Public subnet Private subnet Public subnet Private subnet Northern Virginia Availability Zone #1 Availability Zone #2 Public subnet Private subnet Public subnet Private subnet VPN Instance A VPN Instance B Secondary IPsec Primary IPsec
  • 20. Oregon Availability Zone #1 Availability Zone #2 Public subnet Private subnet Public subnet Private subnet Northern Virginia Availability Zone #1 Availability Zone #2 Public subnet Private subnet Public subnet Private subnet VPN Instance A VPN Instance B Secondary IPsec
  • 21. G2 GPU enabled M3 General purpose Memory optimized R3 CR1 M2 Storage and I/O optimized C3 Compute optimized CC2 C1 I2 HI1 HS1 CG1 M1 © 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. Web, app, and database servers
  • 22. Northern Virginia Availability Zone #1 Availability Zone #1 RDPGW Web / app WSFC2 Oregon Availability Zone #2 www.awsdrdemo.com
  • 23. Northern Virginia Availability Zone #1 Availability Zone #1 RDP GW / NAT WSFC2 Oregon Availability Zone #2 RDP GW / NAT RDP GW / NAT
  • 24. Northern Virginia Availability Zone #1 Availability Zone #1 RDPGW Web / app WSFC2 Oregon Availability Zone #2 AD1 AD2 AD3
  • 25. Northern Virginia Availability Zone #1 Availability Zone #1 RDPGW WSFC2 Oregon Availability Zone #2 Web / app Web / app Web & App AMI
  • 26. Northern Virginia Availability Zone #1 Availability Zone #1 Web / app Oregon Availability Zone #2 AD1 SQL1 AD2 SQL2 AD3 SQL3 ASYNC Data Replication
  • 27. Availability Zone #1 Availability Zone #2 www.awsdrdemo.com RDP GW RDP RDGPW GW Web / app Web / app Web / app Web / app Web / app Web / app AD SQL2 AD1 SQL1 AD2 Sync Data Replication
  • 28. Northern Virginia Availability Zone #1 Availability Zone #1 RDP GW RDPGW Web / app Oregon Availability Zone #2 RDP GW AD1 AD2 AD3 Web / app Web / app SQL1 SQL2 SQL3 www.awsdrdemo.com Async Data Replication VPN
  • 29. Northern Virginia Availability Zone #1 APP failover.awsdrdemo.com
  • 30.
  • 33. Check live status at http://status.awsdrdemo.com/ha
  • 34.
  • 35. Check live status at http://status.awsdrdemo.com/dr
  • 36.
  • 37. HttpWebResponse webresponse; string uri = http://169.254.169.254/latest/meta-data/placement/availability- zone; string retValue; /* Create webrequest for the uri */ HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(uri); /* Capture response and read the stream */ webresponse = (HttpWebResponse)webrequest.GetResponse(); Encoding enc= System.Text.Encoding.GetEncoding(1252); StreamReaderloResponseStream= new StreamReader(webresponse.GetResponseStream(), enc); retValue = loResponseStream.ReadToEnd();
  • 38. "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "AWS CloudFormation Template ELBWithEC2Instances: Create a load balanced, Auto Scaled sample website where theinstances are locked down to only accept traffic from the load balancer. This script creates an Auto Scaling group behind a load balancer with a simple health check. The web site is available on port 80, however, the instances can be configured to listen on any port (8888 by default).", "Parameters" : { "KeyPairName" : { "Description" : "Name of an existing Amazon EC2 key pair for SSH access", "Type" : "String", "Default" : "kamalkey" }, "InstanceType" : { "Description" : "WebServerEC2 instance type", "Type" : "String", "Default" : "m3.medium", "AllowedValues" : [ "t1.micro","m1.small","m1.medium","m1.large","m1.xlarge","m2.xlarge","m2.2xlarge","m2.4xlarge","m3.medium","m3.large","m3.xlarge","m3.2xlarge","c1.medium","c1.xlarge"], "ConstraintDescription" : "must be a valid EC2 instance type." }, "WebServerPort" : { "Description" : "TCP/IP port of the web server", "Type" : "String", "Default" : "80" }, "HostedZoneId" : { "Type" : "String", "Description" : "The Record Set's Hosted Zone Id for the existing hosted zone", "Default" : "Z1M58G0W56PQJA" } }, "Mappings" : { "AWSInstanceType2Arch" : { "t1.micro" : { "Arch" : "64" }, "m1.small" : { "Arch" : "64" }, "m1.medium" : { "Arch" : "64" }, "m1.large" : { "Arch" : "64" }, "m1.xlarge" : { "Arch" : "64" }, "m2.xlarge" : { "Arch" : "64" }, "m2.2xlarge" : { "Arch" : "64" }, "m2.4xlarge" : { "Arch" : "64" }, "m3.medium" : { "Arch" : "64" }, "m3.large" : { "Arch" : "64" }, "m3.xlarge" : { "Arch" : "64" }, "m3.2xlarge" : { "Arch" : "64" }, "c1.medium" : { "Arch" : "64" }, "c1.xlarge" : { "Arch" : "64" } }, "AWSRegionArch2AMI" : { "us-east-1":{"32" : "ami-06ef6b6e", "64" : "ami-06ef6b6e" } } }, "Resources" : { "WebServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : [ "us-east-1c","us-east-1d"], "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, "MinSize" : "2", "MaxSize" : "2", "LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" }], "VPCZoneIdentifier" : ["subnet-d8f2edf0","subnet-2fc76658"], "Tags" :[ { "Key" : "Name", "Value" : "DR-DEMOAPPWEBSERVER", "PropagateAtLaunch" : true }] } }, "LaunchConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "UserData" : { "Fn::Base64" : { "Ref" : "WebServerPort" }}, "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "InstanceType" : { "Ref" : "InstanceType" }, "KeyName" : { "Ref" : "KeyPairName" }, "AssociatePublicIpAddress" : "false" } }, "ElasticLoadBalancer" : { "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", "Properties" : { "SecurityGroups" : [ { "Ref" : "LoadBalancerSecurityGroup" } ], "Subnets" : ["subnet-90cdd6b8","subnet-6024f917"], "Listeners" : [ { "LoadBalancerPort" : "80", "InstancePort" : { "Ref" : "WebServerPort" }, "Protocol" : "HTTP" } ], "HealthCheck" : { "Target" : { "Fn::Join" : [ "", ["HTTP:", { "Ref" : "WebServerPort" }, "/index.html"]]}, "HealthyThreshold" : "2", "UnhealthyThreshold" : "10", "Interval" : "10", "Timeout" : "3" } } }, "LoadBalancerSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable HTTP access on port 80", "VpcId" : "vpc-0eef506b", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0" } ], "SecurityGroupEgress" : [ { "IpProtocol" : "tcp", "FromPort" : { "Ref" : "WebServerPort" }, "ToPort" : { "Ref" : "WebServerPort" }, "CidrIp" : "0.0.0.0/0" } ] } }, "myDNS" : { "Type" : "AWS::Route53::RecordSetGroup", "Properties" : { "HostedZoneName" : "awsdrdemo.com.", "Comment" : "Zone apex alias targeted to myELBLoadBalancer.", "RecordSets" : [ { "Name" : "www.awsdrdemo.com.", "Type" : "A", "AliasTarget" : { "HostedZoneId" : { "Fn::GetAtt" : ["ElasticLoadBalancer", "CanonicalHostedZoneNameID"] }, "DNSName" : { "Fn::GetAtt" : ["ElasticLoadBalancer","CanonicalHostedZoneName"] } } } ] } }, "InstanceSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable RDP access and HTTP access on the inbound port", "VpcId" : "vpc-0eef506b", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : { "Ref" : "WebServerPort" }, "ToPort" : { "Ref" : "WebServerPort" }, "CidrIp" : "0.0.0.0/0" }, { "IpProtocol" : "tcp", "FromPort" : "3389", "ToPort" : "3389", "CidrIp" : "0.0.0.0/0" } ] } } }, "Outputs" : { "URL" : { "Description" : "URL of the website", "Value" : { "Fn::Join" : [ "", [ "http://", { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ]}]]} } } } Create ELB Create Auto Scaling group Launch instances Route 53 recordset updates Status notifications
  • 39. # Retrieve ELB Zone Id from existing Route53 zone zoneid=$(aws --output text route53 list-resource-record-sets --hosted-zone-id $hostedzoneid --start-record-name $domainname--start-record-type A --max-items 1 | grepALIASTARGET | awk{'print $4'}) # Retrieve ELB DNS name from existing Route53 zone dns=$(aws --output text route53 list-resource-record-sets --hosted-zone-id $hostedzoneid --start-record-name $domainname--start-record-type A --max-items 1 | grepALIASTARGET | awk{'print $2'}) # Remove existing Alias from Route53 hosted zone aws --region us-west-1 route53 change-resource-record-sets --hosted-zone-id $hostedzoneid --change-batch "{ "Changes": [ { "Action": "DELETE", "ResourceRecordSet": { "Name": "$domainname", "Type": "A", "AliasTarget": { "HostedZoneId": "$zoneid", "DNSName": "$dns", "EvaluateTargetHealth": false } } } ]}" # Launch DR stack using CloudFormation script launchedstackid=$(aws --region $snsregion--output text cloudformation create-stack --stack-name $stackname--template- body file:///usr/local/bin/ELBWithEC2Instances.template --notification-arns$snsarn--parameters ParameterKey="HostedZoneId",ParameterValue="$hostedzoneid") # Check the CloudFormationstatus do cmd=$(aws cloudformation describe-stacks --region $snsregion--output text --stack-name $stackname--max-items 1 | grepCREATE_COMPLETE)
  • 40. "Parameters" : { "KeyPairName" : { "Description" : "Name of an existing Amazon EC2 key pair for SSH access", "Type" : "String", "Default" : “drkey" }, "InstanceType" : { "Description" : "WebServerEC2 instance type", "Type" : "String", "Default" : "m3.medium", "AllowedValues" : [ "t1.micro","m1.small","m1.medium","m1.large","m1.xlarge","m2.xlarge","m2.2xlarge","m2.4xlarge","m3.medium","m3.large","m3.xlarge","m3.2xlarge","c1.medium","c1.xlarge"], "ConstraintDescription" : "must be a valid EC2 instance type." }, "WebServerPort" : { "Description" : "TCP/IP port of the web server", "Type" : "String", "Default" : "80" }, "HostedZoneId" : { "Type" : "String", "Description" : "The Record Set's Hosted Zone Id for the existing hosted zone", "Default" : "Z1M58G0W56PQJA" } },
  • 41. "Resources" : { "WebServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : [ "us-east-1c","us-east-1d"], "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, "MinSize" : "2", "MaxSize" : "2", "LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" }], "VPCZoneIdentifier" : ["subnet-d8f2edf0","subnet-2fc76658"], "Tags" :[ { "Key" : "Name", "Value" : "DR-DEMOAPPWEBSERVER", "PropagateAtLaunch" : true }]}}, "LaunchConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" },"Arch" ] } ] }, "UserData" : { "Fn::Base64" : { "Ref" : "WebServerPort" }}, "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "InstanceType" : { "Ref" : "InstanceType" }, "KeyName" : { "Ref" : "KeyPairName" }, "AssociatePublicIpAddress" : "false" }
  • 42. "Resources" : { "ElasticLoadBalancer" : { "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", "Properties" : { "SecurityGroups" : [ { "Ref" : "LoadBalancerSecurityGroup" } ], "Subnets" : ["subnet-90cdd6b8","subnet-6024f917"], "Listeners" : [ { "LoadBalancerPort" : "80", "InstancePort" : { "Ref" : "WebServerPort" }, "Protocol" : "HTTP”} ], "HealthCheck" : { "Target" : { "Fn::Join" : [ "", ["HTTP:", { "Ref" : "WebServerPort" }, "/index.html"]]}, "HealthyThreshold" : "2", "UnhealthyThreshold" : "10", "Interval" : "10", "Timeout" : "3”}}}, "LoadBalancerSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable HTTP access on port 80", "VpcId" : "vpc-0eef506b", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0" } ]
  • 43. "myDNS" : { "Type" : "AWS::Route53::RecordSetGroup", "Properties" : { "HostedZoneName" : "awsdrdemo.com.", "Comment" : "Zone apex alias targeted to myELBLoadBalancer.", "RecordSets" : [ { "Name" : "www.awsdrdemo.com.", "Type" : "A", "AliasTarget" : { "HostedZoneId" : { "Fn::GetAtt" : ["ElasticLoadBalancer", "CanonicalHostedZoneNameID"] }, "DNSName" : { "Fn::GetAtt" : ["ElasticLoadBalancer","CanonicalHostedZoneName"] } } } ]
  • 44. BufferedReaderin = newBufferedReader(newInputStreamReader(request.getInputStream(); while((line = in.readLine()) != null) { jsonBody+=line; } if(request.getHeader("x-amz-sns-message-type").equalsIgnoreCase("SubscriptionConfirmation")){ System.out.println("ProcessingSubscriptionMessage!"); StringsubscribeURL= SNSJSONParser.parseJSONString(jsonBody, "SubscribeURL"); try{ sendGet(subscribeURL); System.out.println("Send Confirmation GET to subscription URL"); } catch(Exception e) { e.printStackTrace(); System.err.println("Error confirming subscription via GET request..");} }else{ System.out.println("Processing Notification Message !"); StringsnsMessage= SNSJSONParser.parseJSONString(jsonBody, "Message");s String resourceStatusReason = getSubString(snsMessage, "ResourceStatusReason"); message+="<li>"+ resourceId+ " :: "+ resourceStatus+ " :: "+ resourceStatusReason+ "</li>”;}else{ message+= "<li>"+ snsMessage+ "</li>"; } }
  • 45. (99.99%) (0-2 minutes) 0-15 minutes)
  • 47.
  • 48. Availability Zone #1 Availability Zone #2 www.awsdrdemo.com RDP GW RDP RDGPW GW Web / app Web / app Web / app Web / app Web / app Web / app AD sql2 AD1 AD2 SQL1
  • 49. Northern Virginia Availability Zone #1 Availability Zone #1 RDP GW RDPGW RDP GW Web / app Oregon Availability Zone #2 RDP GW AD1 AD2 AD3 Web / app Web / app SQL1 SQL2 SQL3 www.awsdrdemo.com Web / app Web / app