Mirmon at Savannah

NOTE: This page describe the previous implementation. In 2017, Savannah's infrastructure was upgraded and improved. See Mirroring for updated information.

Our mirmon instance operates on download.savannah.gnu.org. We run three instances of mirmon: one each for http mirrors of ftp.gnu.org and of dl.sv.nongnu.org for use by a multiplexor so users can be automatically redirected, and a third for all mirrors of ftp.gnu.org, for human consumption.

The general information page for folks willing to run mirrors for either gnu or nongnu is http://www.gnu.org/server/mirror.html. More mirrors are always welcome. Savannah admins: the process for adding new nongnu mirrors is at the end of the DownloadArea page.

GNU info

The list of ftp.gnu.org mirrors is http://www.gnu.org/prep/ftp.html, generated from http://www.gnu.org/prep/FTP, maintained by webmasters.

The "gnu" mirmon instance is for the multiplexor that automatically redirects downloads to a (hopefully) nearby and up to date mirror. Only http urls are included, because everything else has proven too unreliable for users in practice.

The "allgnu" mirmon instance is for humans to look at, most notably those checking and updating the status of GNU mirrors (a thankless but useful task):

nongnu info

The savannah mirmon is the basis for a multiplexor of savannah.nongnu.org, operating in the same way:

More multiplexor and other details

  • The actual redirection is done in the web server, specifically the module Apache2::Geo::Mirror->auto_redirect,
  • which takes the list of GNU mirrors from the file dl:/usr/local/share/GeoIP/gnu-mirror-list.txt,
  • which is automatically created by dl:/root/bin/mirrors-gnu.sh from the current mirmon state and the http-only list of mirrors in dl:/usr/local/share/GeoIP/gnu-download.txt,
  • which in turn is updated nightly by a dl:/etc/cron.d/mirmon cron entry which runs dl:/root/bin/gnu-mirmon.pl.

The mirmon state and redirection lists are updated hourly for both multiplexors (gnu, nongnu), each of which has its own script, dl:/root/bin/mirrors-{gnu,nongnu}.sh, run via mirmon cron entries. Likewise the "allgnu" mirmon is run hourly. The geo location data is updated monthly via dl:/etc/cron.d/maxmind, stored in dl:/usr/local/share/GeoIP.

A special thing about allgnu: because we want to check rsync urls, we need at least mirmon version 1.39 (ca.2009), which is newer than what the OS version on dl provides. So the current mirmon is in dl:/usr/local/share/mirmon (just unpacking the tarball suffices) and the allgnu mirmon job uses that, instead of the OS mirmon.