Skip to main content

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).

info

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 имен.

caution

Протокол 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.

info

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.