Discourse High Availability setup multi master

AI-generated summary

A user, MicWit, is considering switching from PHPBB to Discourse and wants to set up a high availability (HA) multi-master setup across multiple servers connected over the internet. He currently has a similar setup for his PHPBB forum using ProxMox servers, DDNS, and a MySQL multi-master setup.

However, Stephen notes that syncing MySQL across domestic internet connections can be painful due to latency. Falco further clarifies that Discourse uses PostgreSQL, which does not have a native multi-master feature, making this use case unsupported at the moment.

Hi,

I have never used Discourse before (I have used PHPBB) but am looking at the option for future forums as I like the interface. At the moment I run PHPBB through reseller hosting on a cpanel account. Of course this won’t work for Discourse, so I am looking at running it how I am running a few other services.

Both myself and a few mates run ProxMox servers at our own homes. I have set up a container on ProxMox that essentially runs as a DDNS back to my cPanel account and updates sub-domains as required. For HA I then have the same on my mates servers and a PHP script on a cron job on the cPanel server points all the domains to where ever is live. Those subdomains then hit a Reverse Proxy on the ProxMox server and are sent to the container required. We are about to set up a MySQL server as a container that will sync across the internet between servers (we can potentially use this as load balancing as its a multi-master setup).

If we are to use Discourse, I would need something similar set up. Is it possible to set up Discourse across (potentially slow) an internet connection to sync 2 instances and use both as masters?

Thanks

Syncing MySQL across domestic internet connections is going to be truly painful.

It’s designed for use between nodes in a datacenter with microseconds of latency.

Discourse doesn’t use MySQL, it uses PostgreSQL.

PostgreSQL doesn’t have a native multi master feature, so this isn’t a supported use case at the moment.