Deploying webserver by creating a High Availability Architecture using AWS CLI
Task Description
- Webserver configured on EC2 Instance
- Document Root(/var/www/html) made persistent by mounting on EBS Block Device.
- Static objects used in code such as pictures stored in S3
- Setting up Content Delivery Network using CloudFront and using the origin domain as S3 bucket.
- Finally place the Cloud Front URL on the webapp code for security and low latency
🤩So guys this is my new article which give you some high level idea about HIGH AVAILABILITY ARCHITECTURE .
I Hope you will get knowledge from this article.
so ! why are you waiting ?
LOOK FOR WHAT’S AHEAD & IT WILL TAKE YOU FAR BEYOND
Deploy a webserver
Let’s start with Step by Step :-
Step 1 : First create a key pair which help you to launch the instance for create a new key pair use below mention command .
aws ec2 create-key-pair --key-name “my” --query “KeyMaterial” --output text > my.pem
Step 2 : Create a Security Group for your instance using the below mention command .
aws ec2 create-security-group --description “Allow 22 & 80 “ — group-name “myweb” “sg-07f4f6d47aac53c9c”
Step 3 : Allow Port 22 for accessing the ssh protocol which help you to login with instance remotly.
aws ec2 authorize-security-group-ingress --group-name “myweb” — protocol “tcp” — port 22 — cidr “0.0.0.0/0”
Step 4 : Allow port 80 to access the Webserver.
aws ec2 authorize-security-group-ingress --group-name "myweb" --protocol "tcp" --port 80 --cidr "0.0.0.0/0"
Step 5 : Now its time to launch ec2-instance with the help upper created new key-pair & security group.
aws ec2 run-instances --image-id " ami-0e306788ff2473ccb" --instance-type "t2.micro" --key-name "my" --security-group-id "sg-07f4f6d47aac53c9c" --count 1 --subnet-id "subnet-35b4df79"
Step 6 : Now instance will be ready but we want to attach extra volume for saving the data persistence .
why attached extra EBS VOLUME�🤔
If by chance instance will be crashed or destroy then the data should not be lost.
for creating new volume using below mention command.
aws ec2 create-volume --availability-zone "ap-south-1b
" --size 1
Step 7 : Now EBS Volume created , to put some data into the EBS volume we need to attached EBS Volume with ec2-instance . use below mention command.
aws ec2 attach-volume --device "xvdb" --instance-id "i-0ac9dd067ed8b860d" --volume-id "vol-007d85bbbb2ad295d"
Step 8 : Now setup will completed EBS Volume attached with instance . Now we have to login with the help of ssh protocol .use below mention command.
ssh -i my.pem ec2-user@instance_public_ip
Step 9 : Now you login with ec2-user but you need to login with root user to access all the permission of the instance. for this use below mention command.
ec2-user@ip-172-31-15-177~]$sudo su
Step 10 : Now install the Apache Webserver on the top of the instance using below mention command.
[root@ip-172-31-15-177 ec2-user]# yum install httpd-y
Step 11 : Now start the httpd service by using below mention command.
[root@ip-172-31-15-177 ec2-user]# systemctl start httpd
Step 12 : Check the service started or not use below mention command.
[root@ip-172-31-15-177 ec2-user]# systemctl status httpd
Step 13 : See how many volumes your instance has, using the below-mentioned command.
[root@ip-172-31-15-177 ec2-user]# fdisk -l
Step 14 : Now you have to do the partition of the volume to use it . for this you have to go inside the disk console . using the below-mentioned command.
[root@ip-172-31-15-177 ec2-user]# fdisk /dev/xvdb
Step 15 : Partition has taken place so now you have to format the volume using the below-mentioned command.
[root@ip-172-31-15-177 ec2-user]# mkfs.ext4 /dev/xvdb1
Step 16 : After format the volume mount it by using command with directory /var/www/html where we put our code of web page .
[root@ip-172-31-15-177 ec2-user]# mount /dev/xvdb1 /var/www/html/
Step 17 : Now create a new bucket to save all the static data of the web page using below mention command .
aws s3 mb s3://webmy
Step 18 : now after create S3 Bucket , copy all the static data by using below mention command .
aws s3 cp . s3://bucket_name --recursive --acl public-read
Step 19 : After copying the static data, I want to distribute this data to all Edge Locations of AWS. For distributing the data to all the edge locations we have to use the CloudFront service of AWS. So use the below-mentioned command to create the distribution.
aws cloudfront create-distribution --origin-domain-name bucketname.s3.amazomaws.com
Step 20 : After deploying the static data at all the edge locations we have to just copy and paste the domain name of distribution at the place of data which you are using as static and have copied inside the S3 bucket as I have done in my webpage code which is mentioned in below screenshot. for this go to the /var/www/html folder .
Step 21 : Now browse the webpage with publicIP//file_name.html .
I tried to explain as much as possible. Hope You learned Something from here. Feel free to check out my LinkedIn profile and obviously feel free to comment.
LINKEDIN PROFILE LINK :- https://www.linkedin.com/in/jatin-lodhi-9230571a7/