Route 53
Route 53 — это высокодоступный (единственный AWS сервис, который предоставляет 100% SLA) и масштабируемый веб-сервис DNS. Можно использовать Route 53 для выполнения трех основных функций в любой комбинации:
- регистрации домена;
- маршрутизации DNS;
- проверки работоспособности, хелсчеки.
Route 53 - это Authoritative Nameserver
, где можно управлять DNS Records
.
53 - потому, что это традиционный DNS порт.
Hosted Zones
Public Hosted Zones
Содержат записи, которые указывают как роутить траффик в Интернет (public domain names, application1.mypublicdomain.com).
Private Hosted Zones
Содержат записи, которые указывают как роутить траффик в пределах одного или нескольких VPC (private domain names, application1.company.internal).
Hosted Zones обойдутся в $0.50/месяц за зону.
Domains
Регистрация домена происходит во вкладке Domains
. Можно перенести существующий или зарегистрировать за деньги новый. При регистрации появится 4 записи домена: A
, NS
, SOA
, CNAME
(www).
Домену можно создать запись, для этого надо указать Record name
(test.example.com), Record type
(A), Value
(11.22.33.44), TTL
(300), Routing policy
.
TTL
TTL
указывается такой, взависимости от ситуации, которою мы хотим достичь. Например:
- чем выше
TTL
, тем меньше будет траффика наRoute 53
, но и актуализация DNS записей будет хуже; - чем меньше
TTL
, тем больше будет траффика наRoute 53
, из-за чего будет выше косты, но при этом актуализация DNS записей будет лучше.
CNAME vs Alias
CNAME
указывает hostname на любой другой hostname (app.mydomain.com => blabla.anything.com). Только для некорневого домена (something.mydomain.com).
Запись CNAME
мапит DNS-запросы имени текущей записи, например acme.example.com, к другим доменам (example.com или example.net) или субдоменом (acme.example.com или zenith.example.org).
По сути, это работает как редирект для DNS имен.
Протокол DNS не позволяет создавать запись CNAME
для верхнего узла пространства имен DNS, также известного как вершина зоны (Zone Apex
). Например, если вы зарегистрируете DNS-имя example.com, Zone Apex
будет example.com. Вы не можете создать запись CNAME
для example.com, но можете создавать записи CNAME
для www.example.com, newproduct.example.com и т.д.
Кроме того, если вы создадите запись CNAME
для субдомена, вы не сможете создавать другие записи для этого субдомена. Например, если вы создаете CNAME
для www.example.com, вы не можете создавать другие записи, для которых значение поля «Имя» равно www.example.com.
Alias
указывает hostname на AWS Resource (app.mydomain.com => blabla.amazonaws.com). Работает для корневого и некорневого домена (mydomain.com). Это бесплатно и есть нативный хелсчек.
По сути, тот же редирект как и CNAME
, но упрощенный для AWS Resources, нативный инструмент для AWS.
Alias Record
- это всегда A/AAAA тип записи для AWS Resources (IPv4/IPv6). А также мы не можем назначить TTL
, оно назначается автоматически Route 53.
А также нельзя назначить Alias Record
на EC2 DNS name.
Alias Records Targets:
ELB
,CloudFront
,API Gateway
,Elastic Beanstalk
,S3 Websites
,VPC Interface Endpoints
,Global Accelerator
,Route 53 Record
(та же Hosted Zone).
Routing Policies
Simple
Обычно это роутинг DNS запроса к одиночному ресурсу, Single Value
. Например, клиент обращается к foo.example.com и получает одну А
запись со значением 11.22.33.44.
Но бывают случаи с Multiple Value
, где клиент обращается к foo.example.com и получает несколько А записей с разными айпишниками и на стороне клиента идет случайная выборка и применение.
Когда включен Alias
надо указать только один AWS Resource. Нельзя проассоциировать с хелсчеками.
Weighted (взвешенное)
Представлено контролирование DNS ответов от Route 53, чьи редиректы на EC2 инстансы, когда их несколько, могут быть настроены в процентном соотношении: 70% на первый, 20% на второй и 10% на третий. DNS записи должны иметь такое же имя и тип.
Можно проассоциировать с хелсчеками. Вообще это полиси может подходить, когда надо настроить балансировку нагрузки между регионами, протестировать новую версию веб-сервиса, отправляя небольшое количество траффика на него. Чтобы деактивировать полиси, можно установить значение 0
в записи, чтобы перестать отправлять траффик на ресурс.
Latency
Идея состоит в том, чтобы делать редирект на ресурс, который имеет наименьшую задержку. Latency
строится на основании траффика между клиент ами и AWS Regions (пользователи с Германии могут быть заредирекчены на США, если там лучше с задержкой).
Можно проассоциировать с хелсчеками и даже настроить фейловер.
Failover
Это когда настроенный хелсчек нам говорит о том, что основной (Primary Record
) EC2 инстанс недоступный и Route 53 автоматический выполняет фейловер на запасной EC2 инстанс (Secondary Record
), чтобы клиент шел по доступной записи.
Geolocation
Это не тоже самое, что и Latency
, но связано с роутингом на основании локации клиента. Тут можно указать локацию по Continent
, Country
, US State
, что если пользователь оттуда, то и DNS Record
соответствующий. Должен быть указан Default Record
на случай, если локация не сходится.
Можно проассоциировать с хелсчеками.
Geoproximity
Направление траффика к ресурсам на основании географического нахождения клиента и ресурса. Тут раскрывается число Bias
- нужно для изменения объема географического нахождения. Если нужно больше траффика на определенный ресурс, то надо расширить Bias
увеличив от 1
до 99
. Либо сократить траффик, уменьшив Bias
от -1
до -99
. Ресурс может быть как и AWS так и On-Premises Data Center.
Необходимо использовать Route 53 Traffic Flow (advanced) для этой фичи.
IP-based
Направление траффика к ресурсам на основании IP-адреса клиента - мы прописываем коллекцию CIDR
блоков, IP-range, для location-1 и location-2. В DNS записях для example.com будет 2 записи с 2 IP-адресами и пунктом IP-based
: location-1 & location-2.
Multi Value
Используется для направления траффика к множеству ресурсов. До 8
здоровых записей возвращаются для кождого Multi-Value
запроса. Не освобождает от наличия ELB
. Route 53 отдает значения записей клиентам на основе хелсчеков.
Можно проассоциировать с хелсчеками.
Health Checks
Представленные Амазоном HTTP хелсчеки могут быть использованы только для Public Hosted Zones
. Но для Private Hosted Zones
есть решение на основе CloudWatch Metric и проассоциировать с CloudWatch Alarm и на него уже сделать хелсчек.
Хелсчеки поддерживают протоколы HTTP
, HTTPS
, TCP
. Реагируют хорошо только на 2хх
и 3хх
статус коды. Надо сделать правило на фаерволе для Route 53 Health Checkers. Поддерживает Parent
и Child
(до 256) хелсчеки (can use OR
, AND
, NOT
) для группирования мониторинга.
Пример: У нас есть 2 Public
Load Balancers
в разныхAWS Regions
. Также есть приложение, которое работает с каждым из них. Мульти-региональный сетап, получается. Со стороны DNS настройки нам надо в Route 53 создатьDNS Records
так, что когда пользователи вводят наш URL - example.com, они редиректились к ближайшемуLoad Balancer
, то есть тип DNS записи -Latency
. НО, нам надо удостовериться в аптаймеAWS Regions
, чтобы мы не отсылали наших пользователей на этотAWS Regions
. Для этого нам надо создатьHealth Checks
(Automated DNS Failover) с Route 53 наAWS Regions
.