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

Как мне направить пользователя на правильные серверы в зависимости от географии?

Если у меня есть 3 сервера для моего веб-сайта, как я могу направлять пользователей в нужное место по географическому принципу?

Главный сервер находится в Австралии, но контент синхронизируется с сервером в США. Как кто-то в Великобритании, у меня время пинга до сервера в США меньше 100 мс, а в Австралии - 300-600 мс.

Какие у меня есть варианты направления трафика на правильный сервер?

  1. Широкий IP?
  2. Обнаружить и найти IP-адрес на первом пораженном сервере, а затем перенаправить на другой домен?

Как Googe это делает?

Лучший способ ИМХО - это перекомпилировать BIND с Патч GeoDNS

тогда вы можете управлять клиентами по представлениям, т.е.

view "north_america" ​​{

  match-clients { country_US; country_CA; country_MX; };

   zone "example555.com" {type master;file "pri/example555-north-america";};

Google делает это с помощью технологии под названием «anycast». Они используют один и тот же IP-адрес, назначенный нескольким машинам, размещенным по всему миру. Короче говоря, самый дешевый в соответствии с системой BGP и часто используется кратчайший путь.

Обычно при множественной адресации экспортируется несколько путей к одному IP-адресу ... в вашу сеть входит несколько интернет-провайдеров, поэтому существует несколько способов попасть туда. Вы выбираете самый дешевый / самый быстрый путь. При использовании anycast все происходит одинаково, но разные пути ведут к физически разным машинам в отдаленных местах, а не к одной и той же машине несколькими путями. Для конечного пользователя это не имеет значения, потому что контент, который они получают от любого из них, будет одинаковым.

Поскольку этот трюк требует наличия идентификатора BGP и не менее / 24 блоков адресов, которые вы не сможете использовать ни для чего другого, вы, вероятно, не будете использовать их решение. Вы можете заключить договор на получение статического контента через Akamai Technologies и, возможно, еще несколько компаний. Я не знаю, будут ли какие-либо провайдеры обрабатывать динамический контент таким образом.

Вы также можете использовать такую ​​службу, как GeoIP от MaxMind. Это может быть наиболее рентабельным, но вам нужно будет сделать предварительное кодирование, чтобы перенаправить ваших пользователей на основе проверок по данным IP. Обратите внимание, что они предлагают бесплатную базу данных, и для направления на уровне страны этого, вероятно, достаточно. Идея патча BIND от Disserman также может отлично сработать, используя ответы DNS для направления людей, а не перенаправления. Это может сбить с толку некоторых очень технических пользователей или при отладке странных проблем, когда разные хосты думают, что одно и то же имя указывает на разные места.

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

Я бы рекламировал второй вариант в сочетании с поиском по GeoIP для перенаправления на ближайший сервер.

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

Кроме того, используемые для этого методы позволят вам переключиться при отказе одного из серверов.