We regularly get questions about how to set up a Galera cluster with just 2 nodes. The documentation clearly states you should have at least 3 Galera nodes to avoid network partitioning. But there are some valid reasons for considering a 2 node deployment, e.g., if you want achieve database high availability but have limited budget to spend on a third database node. Or perhaps you are running Galera in a development/sandbox environment and prefer a minimal setup.
Galera implements a quorum-based algorithm to select a primary component through which it enforces consistency. The primary component needs to have a majority of votes, so in a 2 node system, there would be no majority resulting in split brain. Fortunately, it is possible to add a garbd (Galera Arbitrator Daemon), which is a lightweight stateless daemon that can act as the odd node. Arbitrator failure does not affect the cluster operations and a new instance can be reattached to the cluster at any time. There can be several arbitrators in the cluster.
ClusterControl has support for deploying garbd on non-database hosts.
Normally a Galera cluster needs at least three hosts to be fully functional, however at deploy time two nodes would suffice to create a primary component. Here are the steps:
- Deploy a Galera cluster of two nodes,
- After the cluster has been deployed by ClusterControl, add garbd on the ClusterControl node.
You should end up with the below setup:
Deploy the Galera Cluster
Go to the ClusterControl deploy wizard to deploy the cluster.
Even though ClusterControl warns you a Galera cluster needs an odd number of nodes, only add two nodes to the cluster.
Deploying a Galera cluster will trigger a ClusterControl job which can be monitored at the Jobs page.
Install Garbd
Once deployment is complete, install garbd on the ClusterControl host. It will be under the Manage -> Load Balancer:
Installing garbd will trigger a ClusterControl job which can be monitored at the Jobs page. Once completed, you can verify garbd is running with a green tick icon at the top bar:
That’s it. Our minimal two-node Galera cluster is now ready!