На сайте ultradns.com или comwired.com вы можете выбрать несколько записей A в зависимости от местоположения;
x.com (United States) 174.1.1.1
x.com (Europe) 65.2.2.2
Таким образом, запросы маршрутизируются в зависимости от близости / откуда они приходят.
Вы можете делать это сколько угодно раз, что является отличным сервисом для наших распределенных приложений.
Однако мы хотим управлять этим на наших собственных серверах. Вы знаете какой-нибудь пакет linux, который это делает?
Википедия использует бесплатное (как в свободе слова, а не только как в бесплатном пиве) программное обеспечение PowerDNS сделать это, с бэкэнд geoip.
Просто помните, что все базы данных GeoIP несовершенны, и это географическое положение - плохой инструмент для оценки сетевого расстояния до данного сервера. Протоколы вроде ICS намного лучшее решение.
Доступны патчи для использования GeoIP на различных DNS-серверах.
Привязать: http://www.caraytech.com/geodns/
Хорошая запись патчей Bind, включая RPM: http://www.devco.net/archives/2006/07/11/location_aware_bind.php
djbdns: http://www.anders.com/cms/276/tinydns.GeoIP.patch/djbdns/Geographically.Aware
Также интересен этот хак, который не предполагает исправления Bind: http://phix.me/geodns/
Также см http://code.google.com/p/ruby-pdns/ для чего-то, что позволяет вам использовать GeoIP и многое другое.
Я просто хотел бы отметить, что файл ACL ip2location BIND основан на подписке и поэтому стоит. Методы, описанные в http://phix.me/geodns/ позволить любому создать свой собственный файл ACL BIND бесплатно, используя бесплатно загружаемый файл MaxMind CSV, хотя и предоставлен, ip2location, вероятно, более точен (точность - это то, за что платит большинство людей).
Кстати, если кто-то ищет гео-ориентированную BIND в сети IPv6, я обновил страницу по адресу http://phix.me/geodns/ с другими сценариями, которые могут обрабатывать 128-битные числа в файле CSV. Я только что узнал сегодня, что MaxMind действительно предлагает загружаемый CSV-файл GeoIPv6, с которым эти скрипты будут работать, чтобы создать файл GeoIPv6.acl для BIND.