{"id":25419490,"url":"https://github.com/iambotcoder/aws-route-53-failover-routing","last_synced_at":"2025-08-09T15:19:46.268Z","repository":{"id":276604625,"uuid":"929760188","full_name":"iambotcoder/AWS-Route-53-Failover-Routing","owner":"iambotcoder","description":"This project focuses on setting up Amazon Route 53 Failover Routing for a web application.","archived":false,"fork":false,"pushed_at":"2025-02-09T11:53:31.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-16T18:48:51.899Z","etag":null,"topics":["aws","ec2-instance","route53"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iambotcoder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-09T10:36:02.000Z","updated_at":"2025-02-09T11:54:26.000Z","dependencies_parsed_at":"2025-02-09T11:37:19.505Z","dependency_job_id":null,"html_url":"https://github.com/iambotcoder/AWS-Route-53-Failover-Routing","commit_stats":null,"previous_names":["iambotcoder/aws-route-53-failover-routing"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iambotcoder%2FAWS-Route-53-Failover-Routing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iambotcoder%2FAWS-Route-53-Failover-Routing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iambotcoder%2FAWS-Route-53-Failover-Routing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iambotcoder%2FAWS-Route-53-Failover-Routing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iambotcoder","download_url":"https://codeload.github.com/iambotcoder/AWS-Route-53-Failover-Routing/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253767487,"owners_count":21961116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","ec2-instance","route53"],"created_at":"2025-02-16T18:48:54.676Z","updated_at":"2025-05-12T15:44:24.760Z","avatar_url":"https://github.com/iambotcoder.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Amazon Route 53 Failover Routing Project\n\n---\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"568\" alt=\"failover-arch\" src=\"https://github.com/user-attachments/assets/cdca40fd-d1e7-4b6e-8f2a-c68fe5c8f1cf\" /\u003e\n\u003c/p\u003e\n## 🍽️ Let's Consider a Café Example  \n\nImagine a café website hosted on **two EC2 instances** (`CafeInstance1` and `CafeInstance2`) in different **Availability Zones (AZs)**. Customers access the website to view the menu and place orders.  \n\n- **Primary Instance (`CafeInstance1`)** serves the website under normal conditions.  \n- **Secondary Instance (`CafeInstance2`)** acts as a backup in case the primary instance fails.  \n- **Amazon Route 53 Failover Routing** ensures high availability by automatically redirecting traffic to `CafeInstance2` when `CafeInstance1` becomes unavailable.  \n- **AWS SNS** sends an email alert when failover occurs, ensuring quick response to outages.  \n\nThis setup helps maintain seamless customer experience and reliability for the café's online presence. ☕🌐\n\n---\n\n## 📖 Overview\nThis project demonstrates how to set up **Amazon Route 53 Failover Routing** for a web application. The configuration ensures high availability by automatically redirecting traffic to a secondary EC2 instance when the primary instance becomes unavailable.\n\n---\n\n## 📑 Table of Contents\n- 🔑 Prerequisites\n- 🗺️ Architecture\n- 📝 Task 1: Confirm the Café Websites\n- 📝 Task 2: Configure Route 53 Health Check\n- 📝 Task 3: Configure Route 53 Failover Records\n  - Task 3.1: Create an A Record for the Primary Website\n  - Task 3.2: Create an A Record for the Secondary Website\n- 📝 Task 4: Verify DNS Resolution\n- 📝 Task 5: Test Failover\n- 🗑️ Cleaning Up Resources\n- ✅ Conclusion\n- 📚 Reference\n\n---\n\n## 🔑 Prerequisites\nBefore you start, ensure you have the following:\n- **AWS Management Console** access.\n- **Two EC2 Instances** (`CafeInstance1` and `CafeInstance2`) running in separate **Availability Zones (AZs)**.\n- **Route 53 Hosted Zone** configured with a domain.\n- **AWS Simple Notification Service (SNS)** set up for email notifications.\n\n---\n\n## 🗺️ Architecture\n### 🔄 Workflow:\n1. Two EC2 instances (`CafeInstance1` and `CafeInstance2`) host a café website in different AZs.\n2. **Route 53 Health Check** monitors the primary instance (`CafeInstance1`).\n3. If `CafeInstance1` fails, **Route 53 automatically switches traffic** to `CafeInstance2`.\n4. **AWS SNS** sends an email alert when failover occurs.\n\n---\n\n## 📝 Task 1: Confirm the Café Websites\n1. Open the **AWS Management Console**.\n2. Navigate to **EC2** → **Instances**.\n3. Verify that `CafeInstance1` (AZ1) and `CafeInstance2` (AZ2) are **running**.\n4. Copy the **PrimaryWebSiteURL** and **SecondaryWebsiteURL**.\n5. Open both URLs in a browser and verify the café application is running.\n6. Place an order to test functionality.\n\n---\n\n## 📝 Task 2: Configure Route 53 Health Check\n1. Open **Route 53** in the AWS Management Console.\n2. Go to **Health Checks** → **Create Health Check**.\n3. Configure the following:\n   - **Name:** `Primary-Website-Health`\n   - **Monitor:** `Endpoint`\n   - **Specify Endpoint By:** `IP Address`\n   - **IP Address:** `CafeInstance1` public IP.\n   - **Path:** `/cafe`\n   - **Request Interval:** `Fast (10 seconds)`\n   - **Failure Threshold:** `2`\n   - **Enable SNS Notification:** ✅ Yes\n   - **Topic Name:** `Primary-Website-Health`\n   - **Recipient Email:** `Your Email Address`\n4. Click **Create Health Check**.\n5. Check your email and confirm the SNS subscription.\n\n---\n\n## 📝 Task 3: Configure Route 53 Failover Records\n### 📝 Task 3.1: Create an A Record for the Primary Website\n1. Navigate to **Route 53** → **Hosted Zones**.\n2. Select your domain (`XXXXXX_XXXXXXXXXX.vocareum.training`).\n3. Click **Create Record** and enter:\n   - **Record Name:** `www`\n   - **Type:** `A`\n   - **Value:** `CafeInstance1 IP`\n   - **TTL:** `15`\n   - **Routing Policy:** `Failover`\n   - **Failover Record Type:** `Primary`\n   - **Health Check ID:** `Primary-Website-Health`\n   - **Record ID:** `FailoverPrimary`\n4. Click **Create Record**.\n\n### 📝 Task 3.2: Create an A Record for the Secondary Website\n1. Click **Create Record** again.\n2. Enter the following details:\n   - **Record Name:** `www`\n   - **Type:** `A`\n   - **Value:** `CafeInstance2 IP`\n   - **TTL:** `15`\n   - **Routing Policy:** `Failover`\n   - **Failover Record Type:** `Secondary`\n   - **Health Check ID:** Leave empty\n   - **Record ID:** `FailoverSecondary`\n3. Click **Create Record**.\n\n---\n\n## 📝 Task 4: Verify DNS Resolution\n1. Copy the **Record Name** (`www.XXXXXX_XXXXXXXXXX.vocareum.training`).\n2. Open a browser and visit:\n   ```\n   http://www.XXXXXX_XXXXXXXXXX.vocareum.training/cafe\n   ```\n3. The **Primary Website** should load successfully.\n\n---\n\n## 📝 Task 5: Test Failover\n1. Navigate to **EC2 → Instances**.\n2. Select `CafeInstance1`.\n3. Click **Instance State** → **Stop Instance**.\n4. Go to **Route 53** → **Health Checks**.\n5. Wait for `Primary-Website-Health` to change status to `Unhealthy`.\n6. Refresh your website – it should now be served by `CafeInstance2`.\n7. Restart `CafeInstance1` and verify **failback**.\n\n---\n\n## 🗑️ Cleaning Up Resources\nTo avoid unnecessary costs, delete the following resources:\n1. **Route 53 Health Check**\n   - Open **Route 53** → **Health Checks**.\n   - Select `Primary-Website-Health` and click **Delete**.\n2. **Route 53 Failover Records**\n   - Open **Route 53** → **Hosted Zones**.\n   - Delete the failover records (`FailoverPrimary` and `FailoverSecondary`).\n3. **SNS Subscription**\n   - Open **Amazon SNS**.\n   - Delete the **Primary-Website-Health** topic.\n4. **EC2 Instances** (if no longer needed)\n   - Open **EC2 Dashboard**.\n   - Select `CafeInstance1` and `CafeInstance2`.\n   - Click **Terminate Instances**.\n\n---\n\n## ✅ Conclusion\nIn this project, we successfully configured **Amazon Route 53 Failover Routing** to ensure high availability for a web application. The setup automatically redirected traffic to a secondary instance when the primary instance failed. Additionally, AWS SNS sent an email alert upon failover detection.\n\n---\n\n## 📚 Reference\nThis project was inspired by AWS Restart Canvas Lab: **176-[JAWS]-Activity - Route 53 Failover Routing**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiambotcoder%2Faws-route-53-failover-routing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiambotcoder%2Faws-route-53-failover-routing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiambotcoder%2Faws-route-53-failover-routing/lists"}