Назад | Перейти на главную страницу

Что такое «Anycast» и чем он полезен?

Я никогда не слышал о трансляциях до тех пор, пока несколько секунд назад не прочитал "Какие есть интересные или полезные трюки с сервером / сетью?".

Википедия "Anycast«статья об этом носит довольно формальный характер и на самом деле не вызывает мысленного представления о том, как это будет использоваться.

Может ли кто-нибудь в нескольких неформальных предложениях объяснить, что такое «anycast», как вы его настраиваете (в общем смысле) и каковы его преимущества (что упрощает)?

Anycast - это сетевая технология, при которой один и тот же префикс IP объявляется из разных мест. Затем сеть решает, в какое место направить запрос пользователя, исходя из стоимости протокола маршрутизации и, возможно, «работоспособности» рекламных серверов.

У Anycast есть несколько преимуществ. Во-первых, в устойчивом состоянии пользователи службы anycast (отличный пример - DNS) всегда будут подключаться к «ближайшему» (с точки зрения протокола маршрутизации) DNS-серверу. Это снижает задержку, а также обеспечивает уровень балансировки нагрузки (при условии, что ваши потребители равномерно распределены по вашей сети).

Еще одно преимущество - простота управления конфигурацией. Вместо того, чтобы настраивать разные DNS-серверы в зависимости от того, где развернут сервер / рабочая станция (Азия, Америка, Европа), у вас есть один IP-адрес, который настраивается в каждом месте.

В зависимости от того, как реализовано anycast, он также может обеспечивать уровень высокой доступности. Если объявление маршрута anycast обусловлено какой-либо проверкой работоспособности (например, DNS-запрос для хорошо известного домена в этом примере), то, как только сервер выйдет из строя, его маршрут может быть удален. После восстановления конвергенции сети пользовательские запросы будут беспрепятственно перенаправлены на следующий ближайший экземпляр DNS без необходимости какого-либо ручного вмешательства или перенастройки.

Последним преимуществом является горизонтальное масштабирование; если вы обнаружите, что один сервер перегружен, просто разверните другой в таком месте, которое позволит ему принимать некоторую часть запросов перегруженного сервера. Опять же, поскольку настройка клиента не требуется, это можно сделать очень быстро.

Одна из вещей, которая часто сбивала меня с толку при понимании слова «anycast», заключается в том, что, хотя это термин высокого уровня, на практике он обычно сводится к двум примерам:

  1. Маршрутизаторы, использующие BGP рекламировать один и тот же блок IP через несколько ТАК КАК пути как приблизительный способ направить пользователей на более близкий сайт. В то же время он обеспечивает почти прозрачное переключение на другие сайты за счет простого удаления маршрутов с проблемного сайта. Это может быть полезно практически для любого протокола, хотя, очевидно, вызывает множество проблем с синхронизацией данных серверной части.

  2. Рекламирование одного и того же IP-адреса службы из нескольких точек в вашей собственной сети (через статическая маршрутизация, OSPF, EIGRP, или что-то еще). Если маршруты взвешены по-другому он действует как механизм аварийного переключения. Если маршруты взвешены равномерно он может использовать возможности балансировки нагрузки для каждого пакета или потока, присущие большинству маршрутизаторов известных производителей. Вы должны быть осторожны, чтобы прикладной уровень протокол удобен с этим, поэтому вы почти всегда слышите, что он используется с DNS где запрос всегда представляет собой один пакет, и все не имеет состояния. Лично я рассматриваю это как хакерское вторжение проблем прикладного уровня в сетевой уровень, когда комбинация DNS и надлежащих балансировщиков нагрузки почти всегда будет лучшим решением.

В основном используется для служб на основе UDP, таких как DNS. По сути, вы объявляете один и тот же маршрут из нескольких центров обработки данных по всему миру. Таким образом, ваши клиенты будут отправлены в «лучший» и «ближайший» центр обработки данных на основе маршрутов BGP. Я заключил «лучший» и «ближайший» в кавычки, потому что сетевые провайдеры могут играть в игры и по-разному маршрутизировать трафик из определенных сетей. Как правило, с anycast все получается лучше, но это не гарантия.

Примером этого может быть перечисление ваших DNS-серверов как 1.2.3.4 и 1.2.3.5. Ваши маршрутизаторы объявят маршрут для 1.2.3 / 24 из нескольких центров обработки данных. Если вы находитесь в Японии и имеете там центр обработки данных, скорее всего, вы окажетесь там. Если вы находитесь в США, вас отправят в ваш центр обработки данных в США. Опять же, он основан на маршрутизации BGP, а не на фактической географической маршрутизации, но обычно именно так все и выходит.

В соответствии с моим первоначальным ответом я только что разместил в своем блоге еще две статьи под названием: Anycast DNS - Часть 3, Использование RIP и Anycast DNS - Часть 3, Использование RIP (продолжение). В последнем содержится более подробная информация, но на www.netlinxinc.com/netlinx-blog.html вы найдете актуальные рецепты настройки маршрутизаторов Cisco и программного обеспечения маршрутизации на основе хоста Quagga с открытым исходным кодом для Anycast DNS с использованием RIP.

В настоящее время я работаю над написанием четвертой статьи из этой серии. Это предоставит получателям информацию о том, как развернуть Anycast DNS с помощью OSPF. В конце этой серии я покажу рецепты развертывания Anycast DNS с использованием BGP.

Anycast DNS - Часть 1, Обзор

Anycast DNS - Часть 2, Использование статических маршрутов

Anycast DNS - Часть 3, Использование RIP

Anycast DNS - Часть 3, Использование RIP (продолжение)

Учитывая, что на данный момент это в основном DNS ...

Неформально это делает вашу службу более устойчивой и с лучшим доступом к сети / задержкой / скоростью, позволяя вам настроить одну и ту же службу в нескольких местах по всему миру, используя один и тот же адрес. Когда кто-то запрашивает этот адрес, ему дается ближайший / лучший маршрут.

С точки зрения сервера:

Если одноадресная передача идет одному человеку, а многоадресная передача - нескольким, а широковещательная передача - всем людям, то любая передача является шизофренической и имеет несколько личностей, с которыми соединяется личность, наиболее подходящая для каждого человека. Хм. Не лучшая аналогия.

Действительно интересным применением anycast является DNS. Вы можете разместить 5 разных DNS-серверов в разных физических и сетевых местах, но совместно использовать один (а иногда и первичный, и вторичный DNS) адреса. В зависимости от того, где находится источник, они направляются к ближайшему узлу. Это выполняет некоторую балансировку трафика, а также обеспечивает избыточность в случае отказа DNS-сервера.

По словам одного из моих коллег, это также полезно в качестве метода предотвращения DoS-атак, поскольку люди могут атаковать только «ближайший» произвольный IP-адрес, поэтому, если, например, в США много зомбинов, ваш сайт в Европе будет в основном это не влияет, поскольку они не могут отправлять ему пакеты.

Кроме того, его можно использовать как способ (несколько наивно) фильтровать поддельные пакеты, если они явно исходят откуда-то, что вряд ли будет объявлено в BGP как правильный маршрут (например, пакеты, поступающие в Европу, когда ASN указывает на североамериканский блок).

Также полезно отметить, что Anycast не является хорошим или надежным для некоторых TCP-соединений, которые не могут пережить сбросы или любой длительный разговор.

IP-адреса Anycast, использующие BGP, сообщают Интернету, что есть 2, 3 или более путей к конкретному ХОСТУ, однако на самом деле это НЕ тот же хост, они являются точными копиями хостов, объявленных в нескольких центрах обработки данных, для достижения соединений с меньшей задержкой.

Например, у меня есть 3 сервера, выполняющих перенаправление 301 без www для 198.251.86.133, если вы пингуете этот хост, вы можете иногда получать ДВОЙНЫЕ ответы или даже падать в зависимости от того, где вы находитесь, так как мои серверы находятся на востоке США, США. -West и EUR. для краткосрочных подключений (например, 301, которые кешируются браузером) это дает быстрый ответ локального сервера в ближайшем центре обработки данных.

С точки зрения избыточности в anycast ничего не встроено, вам все равно потребуется независимая избыточность на каждом сайте, поскольку этот IP-адрес (в типичных сценариях) всегда будет указывать на эти центры обработки данных.