Mailinglist Archive: opensuse-buildservice (256 mails)

< Previous Next >
[opensuse-buildservice] deploying the OBS backend to multiple servers
  • From: Robert Schiele <rschiele@xxxxxxxxx>
  • Date: Wed, 31 Aug 2011 13:12:58 +0200
  • Message-id: <CAObFj3wpmcLODWVM-p=yXqLedaOjp-Xrva7g_tHFPMjkPk0ZZA@mail.gmail.com>
Hi all,

I was doing some thoughts about what is the best way for load
balancing by deploying the backend to multiple servers. I have given
this some thoughts and would be interested to hear the opinion of
people with experience on deploying things to multiple servers or by
those that actually implemented those things.

My understanding is that in principle I could deploy each and every
backend module (like bs_dispatcher or bs_publish) could be deployed to
a different system as long as they have a shared /srv/obs directory. I
am not saying that doing things in that an extreme way is reasonable
but just wanted to check whether this is technically correct or
whether someone sees a problem with that?

Next I did a quick analysis of what backend module seems to access
which parts of the /srv/obs namespace and found the following
relations:

bs_srcserver reads and writes to /build, /db/published, /db/source,
/db/request, /diffcache, /projects, /remotecache, /sources, /trees,
and /events/service
bs_repserver reads and writes to /build, /workers, /repos,
/events/$ARCH, /events/dispatch, and /events/signer
bs_repserver reads from /db/published, /info, and /events/publish
bs_scheduler reads and writes to /jobs, /info, and /events/$ARCH
bs_scheduler reads from /repos
bs_dispatcher reads and writes to /workers, /jobs, /events/dispatch,
and /events/repository
bs_warden reads and writes to /workers and /jobs
bs_signer reads and writes to /jobs, /events/$ARCH, and /events/signer
bs_publisher reads and writes to /build, /db/published, /repos,
/repos_sync, and /events/publish
bs_sshgit reads and writes to /projects

This information was gathered by a lot of grepping through the source
code and thus is not necessarily complete or completely correct. What
I'd be interested here is now whether someone could tell me whether
this is correct or what is missing/wrong in this analysis.

What is completely missing from this analysis is the /upload
directory, since I saw that multiple modules were using that one but
it seemed they were using completely independent namespaces within
there. Is this correct?

The background of this analysis is that if I splitted different
modules to different servers that I knew which directories should be
shared among which hosts via NFS and which of them could be on the
local disk. Or would you generally recommend to share the whole
filesystem space among them since relying on the above information is
generally to fragile?

Are there people with a general recommendation on how to split the
various modules to different servers. When I talked to Adrian once he
suggested to run the WebUI+API on one machine, the srcserver on
another one and the rest on a third one (at least if I remember
correctly). For sure the workers will run on separate machines in any
case. Is this what people think is a good balancing or does someone
come up with different ideas?

Could someone describe the infrastructure of build.opensuse.org? Which
parts are running on separate servers, what parts of the relevant
filesystems are network mounted on the machines from where and so on?

Robert

BTW: I created a graph of the information mentioned above with
graphviz. If someone with better insight can provide the missing
pieces and fixes and people think this is interesting for OBS
documentation I am happy to contribute that.
--
To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-buildservice+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups