1.8 KiB
Template for PostgreSQL HA with etcd
There are many ways to run high availability with PostgreSQL; here we present a template for you to create your own custom fit high availability solution using etcd and python for maximum accessibility.
Compose runs a a Postgresql as a service platform, which is highly-available from creation. This is a coded example from our prior blog post: High Availability for PostgreSQL, Batteries Not Included.
To get started, do the following from different terminals:
> etcd --data-dir=data/etcd
> ./run.py postgres0.yml
> ./run.py postgres1.yml
From there, you will see a high-availability cluster start up. Test different settings in the YAML files to see how behavior changes. Kill some of the different components to see how the system behaves.
To get a haproxy load balancing between these two hosts, run:
> haproxy -f haproxy.cfg
> sh haproxy_status.sh 127.0.0.1 5432 15432
> sh haproxy_status.sh 127.0.0.1 5433 15433
> psql --host 127.0.0.1 --port 5000 postgres
How it works?
For a diagram of the high availability decision loop, see the included a PDF: postgres-ha.pdf
Requirements on a Mac
Run the following on a Mac to install requirements:
brew install postgresql etcd haproxy libyaml
pip install psycopg2 pyyaml
Notice
There are many different ways to do HA with PostgreSQL, see the docs for a complete list.
We call this project a "template" because it is far from a one-size fits all, or a plug-and-play replication system. It will have it's own caveats. Use wisely.