Один IP — один сервер, или один IP — много
Unicast
Один IP — ровно один сервер
Anycast
Один IP, анонсируется из многих точек
Anycast DNS: как один IP работает сразу в десятках мест
Обычно один IP-адрес указывает на одну конкретную машину, доступную по одному сетевому пути. Anycast намеренно нарушает это правило: один и тот же IP-адрес одновременно анонсируется из множества физически разнесённых точек по всему миру. Затем интернет-маршрутизация доставляет каждый запрос в ту из анонсирующих точек, которая топологически ближе всего к отправителю. Это не обязательно самая близкая точка по физическому расстоянию, а самая близкая по сетевому пути.
Почему DNS-инфраструктура так сильно полагается на anycast
Публичные резолверы вроде 1.1.1.1 и 8.8.8.8 используют anycast-адреса. Когда вы обращаетесь к 1.1.1.1 из Токио, а кто-то другой к тому же адресу из Берлина, вы на самом деле попадаете на разные физические серверы, каждый на ближайший по сети, хотя оба вписали в настройки один и тот же IP-адрес. Именно поэтому один запоминающийся IP обеспечивает стабильно низкую задержку по всему миру, а не заставляет всех обращаться в один дата-центр независимо от местоположения.
| Unicast | Anycast | |
|---|---|---|
| Один IP соответствует | Ровно одному физическому серверу | Множеству физических серверов одновременно |
| Маршрутизация выбирает | Единственный фиксированный путь | Топологически ближайшую из анонсирующих точек |
| Если одна точка отключилась | Сервис становится недоступен | Трафик переключается на следующую по близости точку |
| Уязвимость к DDoS | Атакующий трафик концентрируется на одной цели | Атакующий трафик естественным образом распределяется по всем точкам |
- Отказоустойчивость: если одна anycast-точка отключается, маршрутизация просто переключается на следующую ближайшую, часто совершенно незаметно для клиента.
- Подход не ограничен DNS: CDN и некоторые другие сервисы, чувствительные к задержкам, используют ту же технику.
Что это значит на практике
Чтобы получить выгоду от anycast, ничего настраивать по-особому не нужно: всё происходит на уровне сетевой маршрутизации и невидимо для приложения, выполняющего запрос. Знать об этом стоит прежде всего потому, что так понятно, почему крупный публичный резолвер остаётся быстрым и доступным по всему миру и вам не нужно выбирать региональную конечную точку, как это приходится делать для облачной базы данных или вычислительного инстанса.
BGP — механизм, стоящий за понятием «топологически ближайший»
«Ближайший по сетевому пути» не определяется измерением физического расстояния в реальном времени. Каждая сеть, анонсирующая anycast-адрес, делает это через BGP, протокол маршрутизации, который связывает отдельные сети интернета. Каждый маршрутизатор на пути выбирает тот путь к адресу, который в данный момент выглядит самым коротким по метрикам самого BGP, как правило с наименьшим числом сетевых переходов, а не километров. На практике это обычно коррелирует с физической близостью, но не идеально: запрос иногда уходит в чуть более удалённую точку, если этот путь по меркам BGP оказывается короче, особенно при сбоях в сетях или нетипичных пиринговых соглашениях.
Почему anycast подходит не для всего
Anycast отлично подходит для коротких обменов без сохранения состояния, например одного DNS-запроса и ответа: ничего не потеряется, если следующий пакет попадёт на другой физический сервер, не на тот, что обработал первый. Для долгих соединений с состоянием он подходит плохо: если сетевой путь изменится посреди соединения (флаппинг маршрута, смена пиринга), TCP-сессия уйдёт на другую физическую точку, не ту, что её начала, и просто оборвётся, потому что новый сервер не знает о её существовании. Отчасти поэтому anycast так тесно связан с DNS и другими протоколами «запрос-ответ» поверх UDP и гораздо реже применяется для долгоживущих подключений к базам данных или видеопотоков.
Нужно проверить публичные DNS-адреса домена? Воспользуйтесь инструментом Domain IP Lookup.
Читайте также
Почему проверка показывает CDN, а не исходный сервер
Посетитель
запрашивает домен
Edge-сервер CDN
104.21.x.x
именно его возвращает DNS
Исходный сервер
реальный IP не раскрывается
Как CDN используют DNS для маршрутизации трафика по миру
Главная работа сети доставки контента происходит на уровне DNS, ещё до того, как запрошен хотя бы один байт самого контента.
Одно имя хоста — несколько записей A
1-й ответ
93.184.216.34
2-й ответ
93.184.216.35
3-й ответ
93.184.216.36
Резолвер возвращает все записи, обычно с ротацией порядка
DNS round-robin: как распределить трафик между IP-адресами
Как DNS round-robin возвращает несколько адресов, что он может и чего не может для распределения нагрузки и как кеширование влияет на наблюдаемые результаты.
Одно имя хоста — несколько записей A
1-й ответ
93.184.216.34
2-й ответ
93.184.216.35
3-й ответ
93.184.216.36
Резолвер возвращает все записи, обычно с ротацией порядка
DNS-балансировка нагрузки: методы, плюсы и ограничения
Сравниваем DNS-распределение трафика с прикладными балансировщиками: как TTL, проверки работоспособности и региональные ответы влияют на доступность.