Hosting and repo layout (was: Re: plague ready; next step: hosting)

Andreas Thienemann andreas at bawue.net
Thu Oct 18 09:57:37 CEST 2007


Hello,

sorry to chime in pretty late...

On Mon, 15 Oct 2007, Matthias Saou wrote:

[Round-Robin DNS]
> The problem I see here is that if one of the two mirrors is out of sync,
> even for a small duration, things can "ping-pong" for clients, and get
> very quickly annoying. I'd prefer having one main server as
> "ftp.rpmfusion.org", with private rsync access for public mirrors, and
> use mirrorlists by default for our repositories.

I think that having a failover in place for our repository is not a bad 
idea. Mirrorlist is okay if you do not have full control over your mirrors 
as it is the case with fedora.
For livna we are in the lucky position to have at least two distribution 
sites under full controll in addition to some mirrors.

Thus I'd suggest we use the available RR-facility to have a simple DNS 
round robin to share the load between the different distribution sites and 
in addition offer a mirrorlist on these RR hosts as well.
That way we gain redundancy for our users together with at least half 
the load per box for us not counting the users which are not pulling from 
our main distribution site but from our mirrors.


You are right however that having a desynched main-site is going to pose a
problem. I do not consider that a problem for us in the real world, 
though:

Scripting the repopush to be a near atomic operation is no problem but
solved by a tiny shell script called via ssh remote execution.

We are internally using some scripts to solve a similar issue where we 
need to roll out files at different location at the same time. These 
scripts could be easily adapted or simply rewritten for rpmfusion, a task 
I'd offer to do.

The general setup for rpmfusion would work along the following lines:

repopush creates a local repo-tree with the existing rpms and the new
ones. We solved that with a simply copy of the old repo and then copied
the freshly built files into it, but hardlinking might be a bit easier on
the disk-space for rpmfusion.
For this repo the necessary repodata files are created by running 
createrepo on the new tree.

The local tree is then rsynced to a temporary directory on the frontend 
servers. By copying or hardlinking the old files to the temporary tree on 
the frontend servers the rsync operation only has to transfer the absolute 
minimum of traffic.

The freshly synched temporary repo is then then softlinked to the docroot 
of the webserver overwriting the symlink to the older repo.

That way we have an absolut atomic switch to a new repository with no 
inconsistency at all.
Additionally we gain the ability to keep timestamped backups of the 
repository. This was one very important feature for us but might not be 
important for livna.


With a bit of serverside-complexity in the repo-push we suddenly have 
doubled the availability of our infrastructure not yet relying on the 
additional mirror network. If I were in the office I'd probably say 
something about a good value-proposition. :-)


regards,
 andreas


More information about the rpmfusion-developers mailing list