Одно имя хоста и два сервера в разных странах

У меня есть сайт, пусть это будет www.site.com/ (ASP NET MVC, но это на самом деле не имеет значения) У меня есть другой сайт, пусть это будет www.secondsite.vi/ (он находится во Вьетнаме). Структура сайтов одинаковая, данные в базах данных разные.

Я хочу сделать следующее: Пользователь переходит на www.site.com/. Если его IP-адрес вьетнамский, то его перенаправляют на www.secondsite.vi/ (но в строке URL он все еще видит www.site.com/), в противном случае его пересылают на www.site.com/. Кроме того, когда пользователь вводит www.site.com/ из Вьетнама, его запрос не должен поступать на хостинг основного сайта (пинг слишком длинный)

Можете ли вы предложить, как это можно сделать? Каковы лучшие практические приемы таких действий? Я слышал, что это можно сделать с помощью Amazon Route 53. Если это так, что мне нужно сделать, чтобы добавить на него оба сайта и разделить IP-адрес или диапазон геоинформации? Заранее спасибо!

2 ответа

1. route53-geo

Насколько я понимаю, AWS-маршрут 53 в настоящее время не поддерживает географический DNS (но, учитывая, что они постоянно внедряют новые функции, это может быть уже устаревшим!)

http://www.dnscomparison.com/route53.html "Географические службы DNS в настоящее время не поддерживаются, но, по-видимому, поддержка этой службы будет добавлена ​​в будущем. Вы можете интегрировать службы DNS Route 53 с любой дополнительной веб-службой Amazon."

Служба поддержки AWS заявляет, что эта функция имеет первостепенное значение и появится (около 2011 года...); https://forums.aws.amazon.com/thread.jspa?threadID=75241


2. mod_geoip

Если вы используете apache2/linux, вы можете установить инструмент, такой как mod_geoip2, чтобы перенаправить ваших пользователей обратно к нужному географическому экземпляру на основе их IP-адреса клиента.

В этом вопросе о стекопереработке есть пример, показывающий, как сопоставить регион и отправить пользователя на другой сайт с перенаправлением 302;

RewriteEngine On  
GeoIPEnable On  
GeoIPDBFile /var/share/GeoIP/GeoIP.dat  
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^VN$  
RewriteRule ^$ http://www.secondsite.vi/$1 [L,NC,QSA]

а затем переадресовывать IP-посетителей НЕ-Вьетнамского происхождения обратно на сайт, размещенный в США, на другой конфигурации сервера;

RewriteEngine On  
GeoIPEnable On  
GeoIPDBFile /var/share/GeoIP/GeoIP.dat  
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^VN$  
RewriteRule ^$ http://www.site.com/$1 [L,NC,QSA]

Хотя в вашем сценарии может быть нежелательно вообще связываться с сервером США, если ваши ссылки очень медленные, на самом деле запрос GET для "/" - это на самом деле лишь небольшой объем данных запроса и ответа (200–300 байтов в каждом направлении)-Достаточно для "Местоположение: http://www.secondsite.vi/." 301 перенаправление и другие заголовки ответа. На самом деле, вы можете изменить приведенные выше разделы, чтобы удалить еще одно перенаправление на другой стороне, указав именно такую ​​"домашнюю" страницу;

RewriteEngine On  
GeoIPEnable On  
GeoIPDBFile /var/share/GeoIP/GeoIP.dat  
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^VN$  
RewriteRule ^$ http://www.secondsite.vi/index.html [L,NC,QSA]

Поскольку html на странице, обслуживаемой http://www.secondsite.vi/index.html, имеет правильную серверную базу, http://www.secondsite.vi/ то весь оставшийся трафик не направляется в США.


3. Есть несколько коммерческих поставщиков услуг для Geo-DNS;

как правило, вы определяете группу регионов, и записи A, CNAME обслуживаются в зависимости от исходного IP-адреса клиента;

http://www.geoscaling.com/
http://dyn.com/dns/dynect-managed-dns/
http://www.dnsmadeeasy.com/services/global-traffic-director/
http://www.zerigo.com/news/launch-of-geodns-geolocation-load-balancing

(Я не использовал ни одного из них лично, но я посмотрел на эти услуги для предыдущего требования, поэтому мне было бы интересно узнать, как это работает для вас)


4. Запустите свой собственный Geo-осведомленный сервер имен

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

Однако вы можете установить расширения для DNS-сервера bind (или dnsmasq и т. Д.), Которые позволят использовать гео-информацию для обслуживания ваших собственных записей DNS;

"Как внедрить GeoDNS с помощью BIND & MaxMind" http://phix.me/geodns/

Что ж, я бы рекомендовал использовать CDN, а не Geocast IP. Например, во Франции OVH выделяет за 10 евро в месяц выделенный IP-адрес (поэтому вы всегда предоставляете одинаковое поле A для своего DNS), но у них есть несколько серверов по всему миру, и он автоматически свяжет вашего посетителя из Азии с ближайшим CDN.

У вас есть 10 бэкэндов, это означает, что вы можете предоставить до 10 серверов, и локальный CDN перейдет на самый быстрый из доступных бэкэндов, так что вы сможете ввести свой США и ваш вьетнамский сервер в другой бэкэнд, и ваши вьетнамские посетители всегда будут иметь доступ самый быстрый.

http://www.ovh.com/fr/cdn/

Если вы не хотите этого делать, я бы порекомендовал DNS Made Easy, но не их "большое предложение", как Global Traffic Director, а просто их самое маленькое предложение (Small Business, 29,95 в год), но с "DNS FailOver". опция ( 4,95$ в год), которая всегда отслеживает до 5 бэкэнд-серверов. Вы можете сказать, что если одному бэкенду требуется больше 1 секунды, чтобы ответить вашему клиенту, то он автоматически переходит ко второму, и поэтому, если ваш вьетнамский сервер быстрее отвечает, чем ваш сервер в США, он будет выбран для ответа на ваши вьетнамские гости.

Другие вопросы по тегам