Есть ли способ локализовать записи DNS? Это означает, что пользователи из Азии разрешают mydomain.com на IP-адрес, отличный от пользователей из США или Европы. Было бы полезно предоставить пользователям сервер поблизости. DNS - единственный метод, который использовался до сих пор, а это означает, что я не могу разместить какую-либо программную маршрутизацию или центральную систему, заменяющую DNS, чтобы решить эту проблему.
Да, в настоящее время есть два популярных решения этой проблемы.
Первый называется Anycast
, где один и тот же IP-блок буквально используется в нескольких местах по всему миру. Иными словами, серверы имен для вашего домена всегда возвращают один и тот же IP-адрес, но этот IP-адрес фактически назначен более чем одному набору физических серверов.
Вы можете прочитать больше об этом здесь http://en.wikipedia.org/wiki/Anycast
Во втором методе снова используется AnyCast, однако на этот раз диапазон IP-адресов, передаваемый по любому типу, относится к самим нашим серверам имен. Поскольку серверы имен будут запрашивать только тех клиентов, которые они ближайший также (что определяется магией BGP), они могут сами возвращать IP-адреса, которые логически локальны для клиента.
Примером этого является домен Google l.google.com.
От хозяина в Австралии
crimson:~ dave$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com is an alias for www-notmumbai.l.google.com.
www-notmumbai.l.google.com has address 66.249.89.99
www-notmumbai.l.google.com has address 66.249.89.147
www-notmumbai.l.google.com has address 66.249.89.103
www-notmumbai.l.google.com has address 66.249.89.104
От хозяина в США
[dave@odessa ~]$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.95.99
www.l.google.com has address 74.125.95.147
www.l.google.com has address 74.125.95.104
www.l.google.com has address 74.125.95.106
www.l.google.com has address 74.125.95.105
www.l.google.com has address 74.125.95.103
Итак, CNAME для www.google.com
решает www.l.google.com
, но когда вы решите это, в зависимости от вашего местоположения ваш клиент получит другой набор IP-адресов. Это связано с тем, что сервер имен, получивший запрос на www.l.google.com
был местный nameserver относительно клиента.
У меня была такая же проблема. У нашей компании есть клиенты в России и Китае, и всем им нужно очень быстрое подключение к нашей службе. Мы использовали Amazon Route 53 Geo dns и только что создали две записи: одна будет направлять клиентов из Китая в наш региональный кластер в Токио, а клиентов из России в Лондон.
Если вы хотите локализовать серверы только для Азии, Северной Америки и Европы, вы можете решить запустить и свое веб-приложение, и свой DNS самостоятельно.
С DNS вы можете использовать что-то вроде Split-Horizon DNS подход, который может быть достигнут за счет интегрированной функциональности вашего DNS-сервера (они могут называть это GeoDNS) или через брандмауэр который будет перенаправлять разные диапазоны IP-адресов на разные запущенные экземпляры вашего DNS-сервера (вы можете запустить несколько разных копий сервера на вашем локальном компьютере, которые будут прослушивать разные локальные IP-адреса).
Вероятно, вы могли бы получить ожидаемые результаты в ≈90% случаев, отвечая на DNS-запросы от СОЗРЕТЬ и AfriNIC IP-адреса с A
запись вашего хозяина в Европе, запросы от APNIC - хост в Азии, а запросы с IP-адресов из / 8 блоки, администрируемые ARIN, LACNIC и остальное адресное пространство / 8 с A
запись вашего сервера в Северной Америке. Это будет иметь некоторые неправильные результаты в определенных ситуациях (некоторые блоки / 8 разделяются между Европой и Северной Америкой, некоторое адресное пространство является произвольным и т. Д.), Но худшее, что может произойти, - это дополнительная задержка для затронутой стороны, поэтому этого не должно быть. это будет большим делом.
(И да, должен быть способ упростить эти вещи, но пока кажется, что его нет.)