multiple vanillaforum instances for performance/high availability
Hi all,
I'm currently testing using Vanilla forum in a docker cluster. Ideally I'd like multiple load-balanced instances of vanilla-forum talking to a single database to make for cheap/easy scaling and zero downtime on my VPSes.
Is there any documentation on creating a single forum with multiple load-balanced forum instances? Most of the guides here seem to assume a single machine running the vanillaforum app, which does not sit well with me. I'd much rather use a bunch of cheap low power VPSes than a single high spec one for performance, HA etc.
So far I've put the 'config' and 'upload' directories in a shared Docker volume that all of the Vanilla Forum instances read/write to, which seems to work for the most part. However, I'm seeing some strange issues with the "Yet Another Gamification Application" application add on - depending which instance I'm routed to, the settings mess up, which suggests to me there's some more folders I need to share between the instances to get this approach working. Is there any documentation on what folders need to be shared between multiple instances of the same vanillaforum forum? I surely can't be the first person to run multiple load-balanced instances. Similarly, is there anything else I should be aware of, or settings I should change?
Comments
The first thing that jumps out at me is that if you're using memcached, you also need that at a central location instead of spread between instances. I believe sharing the uploads location and a single config should be sufficient assuming no addon is using config inappropriately (e.g. writing to it excessively).
I do not know enough about YAGA in particular to help with that; we do not run that in our cloud environment so I don't know if there are separate challenges there.
Thanks @Linc, I forgot to mention I have the forum instances sharing a single memcached server too. It looks like my issue was a known issue with YAGA and cached locale strings, I've since managed to fix it and all appears to be working well.