
GeoDNS is a DNS server that can distribute load for a hostname to the nearest mirrors (as defined by geography; on the country / continent level).
The Perl based version has been used in production for "mission critical" applications since 2001, the Go (Golang) based version since August 2012.
It is used for search.cpan.org/cpansearch.perl.org and for ftp.perl.org/ftp.cpan.org. It is also used to provide nearby-ish servers 15 billion times a month for the NTP Pool project.
It is reasonably feature rich, though the features are optimized for the 'GeoDNS' use case and not so much for a general DNS server.
By now (April 2013) the Go version is highly recommended. If you need less than 200 DNS lookups per second per DNS server the Perl version is fine and might be a little easier to setup, but the Go version is better tested and actively maintained and developed and is quickly getting way ahead in features. The Go version is also much faster (in prodution we've seen it do 20,000+ requests a second on commodity hardware and even virtual servers).
After installing and setting up Go you can use go get
github.com/abh/geodns to download geodns and the dependencies.
This git repository is also
at github. If you want
precompiled binaries, please send me an email. They are available for
32- and (highly recommended) 64-bit Linux and 64-bit FreeBSD.
The latest release can be downloaded from the downloads page. The git repository is at at github.
We have an issue tracker and a mailing list. We also have an ohloh page. :-)
Email ask@develooper.com with questions, comments and patches.
pgeodns is copyright 2001-2013 Ask Bjørn Hansen, Develooper LLC and licensed under the Apache License 2.0.