Using Omeka with multiple servers

Is it possible to point two Omeka installations at the same database and have them work properly? I guess that as well as the database, they would need to be able to see the same “files” directory (e.g. via a shared network filesystem mount) to be able to serve the same content.

Use cases I am thinking of are:

  1. Where you have two web servers behind a load balancer, enabling one server to be rebooted (e.g. for kernel updates) while the other one carries on working.
  2. Having one server open to the outside world to serve the public, and on which it would not be possible to log in, and having a second server which would be accessible within our institution only, where users can sign in and edit the items and sites.

In the second case, another way of achieving better security might be to use Apache configuration to block admin interface addresses when outside our institutional network. There are other reasons for having the editing server separate from the public interface server: our IT people like to prevent our servers from accessing other things over the internet, as that makes it harder for hackers to take over a machine, so they usually very much restrict what our servers can see. But Omeka’s editing interface really needs to be able to see as much of the internet as possible, because if you’re embedding IIIF or oEmbed content, you cannot predict where it might need to come from. Once the item is created, though, it may not be necessary for the public interface to talk to these APIs at the point of rendering the items. I’m not sure about this, but it seems likely.

Hi @mephillips ,

#1 seems feasible to me. For files specifically, you could look into using cloud storage. However, you will also need to ensure that you have the same version of the theme and all the same versions of the modules installed on each server, and these directories could all be linked on the same shared network filesystem mount.

We would probably have a shared area for “files” mounted via NFS on both servers, but have the themes, modules, and so on stored separately on each server. We would use Jenkins to deploy any software updates to each server in turn. That would make sure they were running the same versions all the time, apart from the brief period where each is updated and Apache restarted.