I have installed next cloud on the following:
1 Load Balancer (HA Proxy)
2 Webservers (Apache)
2 Fileservers (glusterfs - replicated volume for data)
1 SQL Server (MySQL - Haven’t looked into db clustering yet)
Now I have my nextcloud data stored in /mnt/data/nextcloud, /mnt/data is the mount point that points to the glusterfs volume
nextcloud php application is installed locally on each apache2 server: /var/www/localhost/htdocs/nextcloud.
All works great, however, I noticed that when changing settings in the admin panel, for example, mail settings, max upload size, etc, that the config file and .htaccess file is written and changed. This is a problem on a multiserver setup as it will only change on the local server, and not every server in the pool of application servers.
I have tried putting the nextcloud php application in glusterfs, along with the data, like follows:
nextcloud php application: /mnt/data/nextcloud-app
nextcloud data dir: /mnt/data/nextcloud-data
This gets around the issue, however, glusterfs is known to slow down php applications hosted from it, and I noticed a massive impact on page load speeds when the application files are stored in the gluster volume.
What is the best way of keeping the application servers in sync with each other? I assume that .htaccess, as well as the config and apps directories can change, so they need to be replicated, in both directions, on all application servers.
Best idea I have come up with is to use unison and a cron script to sync changes on schedule.