Anycast — что это и где используется

что такое anycast

Обычно IP-адрес ассоциируется с одним конкретным сервером. Но в случае с Anycast один и тот же IP может быть объявлен сразу из нескольких точек сети. Идея простая: у разных серверов один и тот же IP-адрес, а трафик уходит туда, куда маршрут ближе с точки зрения сети. То есть клиент обращается к одному и тому же адресу, но реально попадает не обязательно на один и тот же физический сервер, а на ближайший или наиболее предпочтительный узел. Где это удобно:

  • DNS-сервисы
  • CDN
  • DDoS-защита
  • глобальные edge-сервисы
  • публичные API
  • распределенные точки входа

Самый известный пример — публичные DNS. Когда вы отправляете запрос на 1.1.1.1 или 8.8.8.8, за этим IP обычно стоит не один сервер, а целая сеть узлов в разных регионах.

эникаст трафик в сети

Что дает anycast

• меньше задержка. Пользователь попадает на ближайшую точку, а не тянется через полмира.
• лучше отказоустойчивость. Если один узел пропал, маршрутизация просто уводит трафик на другой.
• проще масштабирование. Можно добавлять новые точки присутствия, не меняя IP для клиентов.
• распределение нагрузки на уровне сети. Трафик естественным образом разъезжается по разным площадкам.

Как эникаст выглядит по-простому

есть 3 дата-центра — в Германии, Нидерландах и Польше. Во всех трех анонсируется один и тот же IP. Пользователь из Берлина, скорее всего, попадет в немецкий узел. Пользователь из Амстердама — в нидерландский. А если немецкий узел исчезнет из маршрутизации, трафик может уйти в ближайший оставшийся.

Магия? Какая магия?

Anycast сам по себе не знает, где лучше по задержке для приложения. Он опирается на маршрутизацию, обычно через BGP.

А значит ближайший — это не всегда географически ближайший, а тот, который сеть считает лучшим маршрутом.

anycast и unicast

Где часто путаются

• думают, что Anycast — это обычный балансировщик. Не совсем. Балансировка тут происходит на уровне маршрутов, а не L7/L4-логики.
• считают, что клиент всегда попадет в один и тот же DC. Не обязательно. При изменении маршрутов путь может поменяться.
• пытаются использовать Anycast там, где нужна жесткая session affinity. Для stateful-сервисов это уже сложнее, потому что маршрут может измениться.

Где Anycast особенно нужен

  • DNS;
  • stateless UDP-сервисы;
  • edge reverse proxy;
  • глобальные точки входа;
  • анти-DDoS платформы.
Понравилась статья? Поделиться с друзьями: