Amazon Route 53 (AWS Certified Solutions Architect - Associate)
Table of contents
- What is DNS?
- DNS Terminologies
- How DNS works?
- Amazon Route 53
- Route 53 - Routing Policy
- Routing Policy - Simple
- Routing Policy - Weighted
- Routing Policy - Latency based
- Route 53 - Health Checks
- Health Checks - Monitor an Endpoint
- Health Checks - Calculated Health Checks
- Health Checks - Private Hosted Zones
- Routing Policy - Failover
- Routing Policy - Geolocation
- Routing Policy - Geoproximity
- Routing Policy - IP based
- Routing Policy - Multi Value
- Domain Registrar VS DNS Service
What is DNS?
DNS = Domain Name System
It translates human friendly hostnames into the machine IP address.
ex: www.google.com => 172.17.18.36
DNS is the backbone of the internet.
DNS uses hierarchical naming structure
.com
example.com
www.example.com
api.example.com
DNS Terminologies
Domain Registrar
This is where you are going to register your domain names.
Amazon Route 53, GoDaddy, etc.
DNS Records
- A, AAAA, CNAME, NS, etc.
Zone File
It contains all DNS records.
This is how to match these hostnames to IPs or addresses.
Name Servers
- It resolves DNS queries (Authoritative or Non-Authoritative).
Top Level Domain (TLD)
- amazon.com, google.com
How DNS works?
- Please refer this Udemy lecture.
Amazon Route 53
A highly available, scalable, fully managed and Authoritative DNS
- Authoritative = the customer (you) can update the DNS records
Route 53 is also a Domain Registrar.
It has ability to check the health of your resources.
It is the only AWS service with 100% SLA.
53 in Route 53 refers to the traditional DNS port.
Route 53 - Records
How you want to route traffic for a domain.
Each record contains:
Domain/sub-domain name - ex: example.com
Record Type - ex: A, AAAA, etc.
Value - ex: 12.34.56.78
Routing Policy - how Route 53 responds to queries
TTL (Time To Live) - amount of time the record cached at DNS Resolvers
Route 53 supports the following DNS record types:
(must know) A / AAAA / CNAM / NS
(advanced) CAA / DS / MX / NAPTR / PTR / SOA / TXT / SPF / SRV
Route 53 - Record Types
A - maps a hostname to IPv4
AAAA - maps a hostname to IPv6
CNAME - maps a hostname to another hostname
The target is a domain name which must have A or AAAA record
Can't create a CNAME record for top node of a DNS namespace (Zone Apex)
ex: you can't create for example.com, but can create for www.example.com
NS - Name Servers for the Hosted Zone
- Control how traffic is routed for a domain
Route 53 - Hosted Zones
A container for records that define how to route traffic to a domain and sub-domains.
There are 2 types of Hosted Zones:
Public Hosted Zones - contains records that specify how to route traffic on the internet (public domain names)
ex: application1.mypublicdomain.com
Private Hosted Zones - contains records that specify how you route traffic within one or more VPCs (private domain names)
ex: application1.company.internal
You pay $0.50 per month per hosted zone.
Route 53 - Records TTL
High TTL - ex: 24hr
Less traffic on Route 53
Possibly outdated records
Low TTL - ex: 60sec
More traffic on Route 53 (more cost)
Records are outdated for less time
Easy to change records
Except for Alias records, TTL is mandatory for each DNS record
CNAME vs Alias
AWS resource (Load Balancer, CloudFront, etc.) expose on AWS hostname:
- lb1-1234.us-east-1.elb.amazonaws.com and we want myapp.mydomain.com
We have 2 options:
CNAME
Points a hostname to any other hostname (app.mydomain.com => xyz.anything.com)
Only for non-root domain (app.mydomain.com and not for mydomain.com)
Alias
Points a hostname to an AWS resource (app.mydomain.com => xyz.amazonaws.com)
Works for root and non-root domain (mydomain.com)
Free of charge
Native health check
Route 53 - Alias Records
Maps a hostname to an AWS resource.
An extension to DNS functionality.
Automatically recognizes changes in the resource's IP addresses.
Unlike CNAME, it can be used for the top node of a DNS namespace (Zone Apex) ex: example.com
Alias Record is always of type A/AAAA for AWS resources (IPv4/IPv6).
You can't set the TTL.
Alias Records Targets
Elastic Load Balancers
CloudFront Distributions
API Gateway
Elastic Beanstalk environments
S3 Websites
VPC Interface Endpoints
Global Accelerator
Route 53 record in the same hosted zone
Note:
- You can not set an ALIAS record for an EC2 DNS name
Route 53 - Routing Policy
Define how Route 53 responds to DNS queries.
Don't get confused by the word 'Routing'.
It is not the same as Load Balancer routing which routes the traffic.
DNS does not route any traffic, it only responds to the DNS queries.
Route 53 supports the following Routing Policies
Simple
Weighted
Failover
Latency based
Geolocation
Multi-Value Answer
Geoproximity (using Route 53 Traffic Flow feature)
Routing Policy - Simple
Typically, route traffic to a single resource.
Can specify multiple values in the same record.
If multiple values are returned, a random one is chosen by the client.
When Alias enabled, specify only one AWS resource.
Can't be associated with Health Checks.
Routing Policy - Weighted
Control the % of the requests that go to each specific resource.
Assign each record a relative weight:
traffic (%) = Weight for a specific record / Sum of all the weights for all records
Weights don't need to sum up to 100
DNS records must have the same name and type.
Can be associated with Health Checks.
Use cases: load balancing between regions, testing new application versions, etc.
Assign a weight of 0 to a record to stop sending traffic to a resources.
If all records have weight of 0, then all records will be returned equally.
Routing Policy - Latency based
Redirect to the resource that has the least latency close to us.
Super helpful when latency for users is a priority.
Latency is based on traffic between users and AWS regions.
Germany users may be directed to the US (if that's the lowest latency).
Can be associated with Health Checks ( has a Failover capability).
Route 53 - Health Checks
HTTP Health Checks are only for public resources.
Health Check => Automated DNS Failover:
Health checks that monitor an endpoint (application, server, other AWS resource)
Health checks that monitor other health checks (Calculated Health Checks)
Health checks that monitor that monitor CloudWatch Alarms (full control) - ex: throttles of Dynamo DB, alarms on RDS, custom metrics, etc. (helpful for private resources)
Health Checks are integrated with CloudWatch Metrics.
Health Checks - Monitor an Endpoint
About 15 global health checkers will check the endpoint health
Healthy/Unhealthy Threshold - 3 (default)
Interval - 30 sec (can set to 10 sec - higher cost)
if >18% of health checkers report the endpoint is healthy, Route 53 considers it Healthy. Otherwise it's Unhealthy.
Ability to choose which locations you want Route 53 to use.
Health Checks pass only when the endpoint responds with the 2xx and 3xx status codes.
Health Checks can be setup to pass/fail based on the text in the first 5120 bytes of the response.
Configure your router/firewall to allow incoming requests from Route 53 Health Checkers.
Health Checks - Calculated Health Checks
Combine the results of multiple health checks into a single health check.
You can use AND, OR or NOT.
Can monitor up to 256 child health checks.
Specify how many of the health checks need to pass to make the parent pass.
Usage: performance maintenance to your website without causing all the health checks to fail.
Health Checks - Private Hosted Zones
Route 53 health checkers are outside the VPC.
They can't access private endpoints (private VPC or on-premises resource)
You can create a CloudWatch Metric and associate a CloudWatch Alarm, then create a health check that checks the alarm itself.
Routing Policy - Failover
- Write it down from google (not there in video)
Routing Policy - Geolocation
Different from Latency-based.
This routing is based on user location.
Specify location by Continent, Country or by US State (if there's overlapping, most precise location is selected).
Should create a Default record (in case there's no match on location).
Use cases: website localization, restrict content distribution, load balancing, etc.)
Can be associated with Health Checks.
Routing Policy - Geoproximity
Route traffic to your resources based on the geographic location of users and resources.
Ability to shift more traffic to resources based on the defined bias.
To change the size of the geographic region, specify bias values:
To expand (1 to 99) - more traffic to the resource
To shrink (-1 to -99) - less traffic to the resource
Resources can be :
AWS resources (specify AWS region)
Non-AWS resources (specify Latitude and Longitude)
You must use Route 53 Traffic Flow (advanced) to use this feature
Routing Policy - IP based
Routing is based on clients IP addresses.
You provide a list of CIDRs for your clients and the corresponding endpoints/locations (user-IP-to-endpoint mapping).
Use cases: Optimize performance, reduce network costs, etc.
Ex: route end users from a particular ISP to s specific endpoint.
Routing Policy - Multi Value
Use when routing traffic to multiple resources.
Route 53 return multiple values/resources.
Can be associated with Health Checks (return only values for healthy resources).
Up to 8 healthy records are returned for each Multi-Value query.
Multi-Value is not a substitute for having an ALB.
Domain Registrar VS DNS Service
You can buy or register your domain name with a Domain Registrar typically by paying annual charges (ex: GoDaddy, Amazon Registrar, etc.)
The Domain Registrar usually provides you with a DNS Service to manage your DNS Records.
But you can use another DNS service to manage your DNS records.
Ex: Purchase the domain from GoDaddy and use Route53 to manage your DNS records.
3rd Party Registrar with Amazon Route 53
If you buy your domain on a 3rd party registrar, you can still use Route 53 as the DNS service provider.
Create a public hosted zone in Route 53.
Update NS records on 3rd party website to use Route 53 Name Servers.
Domain Registrar != DNS Service
But every Domain Registrar usually comes with some DNS features.
Subscribe to my newsletter
Read articles from Rohit Pagote directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Rohit Pagote
Rohit Pagote
I am an aspiring DevOps Engineer proficient with containers and container orchestration tools like Docker, Kubernetes along with experienced in Infrastructure as code tools and Configuration as code tools, Terraform, Ansible. Well-versed in CICD tool - Jenkins. Have hands-on experience with various AWS and Azure services. I really enjoy learning new things and connecting with people across a range of industries, so don't hesitate to reach out if you'd like to get in touch.