Danny Sauer - 2011-12-18

I have a need to ensure that Webmin is available at as close to 100% as possible.  Part of accomplishing that is setting up two systems to handle sessions, and I'd like to do this with an active-active clustering setup so that I can also get improved performance under heavy usage when both cluster members are available.  So I guess the question is really about horizontally scaling Webmin.  Most of this is fairly standard web clustering stuff with a load balancer in front of the web servers to distribute load to the least-used system which is currently up.  But the part I'm not sure about solving is the sharing of state data between Webmin instances.  I can get the filesystems used directly by Webmin (and by our modules) onto a shared SAN volume and use something like GFS or Lustre to have multiple systems simultaneously accessing the same data.  That's not impossibly difficult either.

I don't need to worry about miniserv, as I'm using Apache, and we really only use our ownWebmin modules (almost none of the shipped modules are used except for the Webmin configuration/users and Webmin Logs; I only use Webmin as a development framework), so the Webmin API is what I'm concerned about.  Without reading all of the code, though, I'm not sure if the Webmin internals are written to use appropriate locks and generally deal with this situation, though.  Has anyone done this or anything like it?  I'd imagine it'd be more relevant with Usermin or Virtualmin, but the underlying API is the same, so I figured this'd be the place to ask.  Can anyone think of any places where Webmin assumes that it's the only process which will be using a file?  Any places where multiple hostnames might cause a problem?