Introduction:
This project aimed to deploy a highly available, scalable, and secure web application in an AWS Multi-Region environment for disaster recovery purposes. The main goal was to ensure that in the event of any failures such as region failures, instance failures, Apache web server service failures, and AZ failures, the web application would remain functional.
Implementation:
I implemented this project by following the high-level steps outlined in the project description. First, I created a Golden AMI with the necessary prerequisites for setting up a web server in the us-east-1 region. I then installed an Apache web server and copied the Golden AMI to the us-west-1 region.
Next, I created two VPCs, one in each region, with CIDR ranges of 172.32.0.0/16 and 172.33.0.0/16, respectively. I deployed internet-facing Application Load Balancers in both regions, each with a listening port of 443 and an SSL certificate from ACM.
In both regions, I also deployed launch configurations and auto-scaling groups for the web server, with a minimum of 1 and a maximum of 4 instances. I customized the launch configuration’s user-data to automate the software provisioning for the web server and used the index.html file stored in the S3 bucket as the artifact.
In the us-east-1 region, I associated the auto-scaling group with subnets from two AZs and the IAM role with session manager and S3 policies. In the us-west-1 region, I created a VPC peering connection between the two VPCs, allowing for private communication. I also associated the auto-scaling group with the Golden AMI.
Finally, I created a resource record in Route 53 with a failover routing policy, with the primary record pointing to the ALB in the us-east-1 region and the standby record pointing to the ALB in the us-west-1 region.
Conclusion:
By implementing this project, I was able to deploy a disaster recovery solution on AWS that ensures the availability and functionality of a web application in the event of failures. The implementation included creating VPCs, deploying internet-facing Application Load Balancers, creating auto-scaling groups, and customizing the launch configuration’s user-data. By following best practices and utilizing AWS services, I was able to achieve a scalable, secure, and highly available disaster recovery solution on the cloud.
Technology / Services
- Amazon S3
- AWS EC2
- AWS VPC
- VPC Peering
- AWS Route 53
- Application Load Balancer
- Auto Scaling Group
- IAM Role