Files
patroni/README.md
T

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.