Improving our Subversion Services
This week the ASF Infrastructure Team deployed one of the first major changes to how svn.apache.org works since it was launched, 6 years ago.
We now distribute Subversion traffic to our servers based on the geographic region of a client.
We are using pgeodns, the same software that powers CPAN Search and the NTP Pool. With pgeodns we can give out different DNS entries to clients, depending on where they are connecting from. It isn't an exact science, but for most clients it is good enough to find the closer Subversion Server.
If you are connecting from Europe, your client will connect to Harmonia. Harmonia is a Sun x4150 running FreeBSD 7.0, using ZFS raid2z over 6 disks, hosted in Amsterdam at SURFnet.
Users in North America are directed to Eris, our traditional Subversion Master Server. Eris is a Dell 2950 also running FreeBSD 7.0, using ZFS raid2z over 4 disks, hosted in Corvallis, Oregon at OSUOSL.
Using svnsync as described in Norman's ApacheCon EU 2009 Talk, we replicate all commits to the master to the slave in real time. If a commit is made to the slave, we proxy the commit to the master.
Read operations are handled on the nearest mirror, and are much faster for everything from the initial checking out to running an update due to the decreased latency.
While this change should improve the experience significantly, we have some other changes coming up soon for svn.apache.org:
- Upgrade to Subversion 1.6: Representation Sharing, inode packing, and memcached support should help make our SVN servers even faster.
- Upgrade both Eris and Harmonia to FreeBSD 7.2-STABLE: The ZFS filesystem is experimental in FreeBSD 7, and there are many stability and performance enhancements available in newer versions.
- Adding more Geographic Mirrors: Once we are comfortable with the current setup, we would like to expand to another mirror location, hopefully in Australia or Asia.