We have a few OOD instances, and some of them have multiple backend webservers. For apps that we add, we need the same apps to be shared by all webservers for an OOD instance (and similarly, for users’ sandbox apps). Restating: when using an OOD instance, the same apps (under sys and dev) must be seen no matter which webserver a session is on.
We achieve this by NFS mounts of an app space for each OOD instance to /var/www/ood/apps on the webservers:
storage-host:/ood_apps/one mounted to /var/www/ood/apps on all webservers for OOD one instance
storage-host:/ood_apps/two mounted to /var/www/ood/apps on all webservers for OOD two instance
This has the intended effect of sharing sys and dev apps for each OOD instance.
However, there is a complication due to “built-in” apps (dashboard, shell, etc.) being under the same path (/var/www/ood/apps/sys/) as apps which we add. We would like almost-no-outage updates to be possible by removing half the webservers from the backend, updating them, switching servers in the backend, updating the rest and returning them. We can do this process, but as soon as the first webserver (not serving any sessions) updates the dashboard or other built-in apps, the site breaks and is not available until updating the first batch of servers and putting them in the backend is done. (Here “backend” is HAProxy backend, although could also apply to other types of load balancing.)
In considering ways to address this, one possibility is to make separate storage spaces for each OOD version for each OOD instance, so instead of the two shown above, there would be something like:
storage-host:/ood_apps/one-v3 mounted to /var/www/ood/apps on all webservers for OOD one instance for v3
storage-host:/ood_apps/one-v4 mounted to /var/www/ood/apps on all webservers for OOD one instance for v4
storage-host:/ood_apps/two-v3 mounted to /var/www/ood/apps on all webservers for OOD two instance for v3
storage-host:/ood_apps/two-v4 mounted to /var/www/ood/apps on all webservers for OOD two instance for v4
This approach has the disadvantage of unnecessary duplication of apps (for sys and dev). It also doesn’t address the conceptual mismatch between the built-in apps (from rpm/deb package) where it may be preferable for each webserver to have its own copy, and the site-added apps where a single copy should be shared for an OOD instance.
I understand that this is a design issue and there may be complex implications/dependencies involved. I am interested in how these issues have been handled at other sites, and further questions/discussion/advice about this.