From 36c17e944be73313e73a97d7a7d4526d808cbb8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Oriol=20i=20Aguilar?= Date: Tue, 14 Mar 2023 15:39:50 +0100 Subject: [PATCH] high availability across multiple datacenter #2587 (#2598) documentations about how deploy a high availability across multiple datacenters Close #2587 --- .../multi-dc-asynchronous-replication.drawio | 1 + .../multi-dc-asynchronous-replication.png | Bin 0 -> 40577 bytes .../multi-dc-synchronous-replication.drawio | 1 + .../multi-dc-synchronous-replication.png | Bin 0 -> 33366 bytes docs/ha_multi_dc.rst | 54 ++++++++++++++++++ docs/index.rst | 1 + 6 files changed, 57 insertions(+) create mode 100644 docs/_static/multi-dc-asynchronous-replication.drawio create mode 100644 docs/_static/multi-dc-asynchronous-replication.png create mode 100644 docs/_static/multi-dc-synchronous-replication.drawio create mode 100644 docs/_static/multi-dc-synchronous-replication.png create mode 100644 docs/ha_multi_dc.rst diff --git a/docs/_static/multi-dc-asynchronous-replication.drawio b/docs/_static/multi-dc-asynchronous-replication.drawio new file mode 100644 index 00000000..f581b92b --- /dev/null +++ b/docs/_static/multi-dc-asynchronous-replication.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/_static/multi-dc-asynchronous-replication.png b/docs/_static/multi-dc-asynchronous-replication.png new file mode 100644 index 0000000000000000000000000000000000000000..73e6f0c9e06a741acec31566621a4bb736f85737 GIT binary patch literal 40577 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 \ No newline at end of file diff --git a/docs/_static/multi-dc-synchronous-replication.png b/docs/_static/multi-dc-synchronous-replication.png new file mode 100644 index 0000000000000000000000000000000000000000..0f439a225778254f9ab4648cf72f75af570f2089 GIT binary patch literal 33366 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 G@P7e%netQs literal 0 HcmV?d00001 diff --git a/docs/ha_multi_dc.rst b/docs/ha_multi_dc.rst new file mode 100644 index 00000000..de34eaf5 --- /dev/null +++ b/docs/ha_multi_dc.rst @@ -0,0 +1,54 @@ +.. _ha_multi_dc: + +================= +HA multi datacenter +================= + +The high availability of a PostgreSQL cluster deployed in multiple data centers is based on replication, which can be synchronous or asynchronous (`replication_modes `_). + +In both cases, it is important to be clear about the following concepts: + +- Postgres can run as primary or standby leader only when it owns the leading key and can update the leading key. +- You should run the odd number of etcd, ZooKeeper or Consul nodes: 3 or 5! + +Synchronous Replication +---------------------------- + +To have a multi DC cluster that can automatically tolerate a zone drop, a minimum of 3 is required. + +The architecture diagram would be the following: + +.. image:: _static/multi-dc-synchronous-replication.png + +We must deploy a cluster of etcd, ZooKeeper or Consul through the different DC, with a minimum of 3 nodes, one in each zone. + +Regarding postgres, we must deploy at least 2 nodes, in different DC. Then you have to set ``synchronous_mode: true`` in the global configuration (``patronictl edit-config``). + +This enables sync replication and the primary node will choose one of the nodes as synchronous. + +Asynchronous Replication +---------------------------------- + +With only two data centers it would be better to have two independent etcd clusters and run Patroni :ref:`standby cluster ` in the second data center. If the first site is down, you can MANUALLY promote the ``standby_cluster``. + +The architecture diagram would be the following: + +.. image:: _static/multi-dc-asynchronous-replication.png + +Automatic promotion is not possible, because DC2 will never able to figure out the state of DC1. + +You should not use ``pg_ctl promote`` in this scenario, you need "manually promote" the healthy cluster with ``patronictl edit-config`` and remove ``standby_cluster`` section from there. + +.. warning:: + If the source cluster is still up and running and you promote the standby cluster you create a split-brain. + +In case you want to return to the "initial" state, there are only two ways of resolving it: + +- Add the standby_cluster section back and it will trigger pg_rewind, but there are chances that pg_rewind will fail. +- Rebuild the standby cluster from scratch. + +Before promoting standby cluster one have to manually ensure that the source cluster is down (STONITH). When DC1 recovers, the cluster has to be converted to a standby cluster. + +Before doing that you may manually examine the database and extract all changes that happened between the time when network between DC1 and DC2 has stopped working and the time when you manually stopped the cluster in DC1. + +Once extracted, you may also manually apply these changes to the cluster in DC2. diff --git a/docs/index.rst b/docs/index.rst index 9cff0aa7..f6935388 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -32,6 +32,7 @@ Currently supported PostgreSQL versions: 9.3 to 15. security replica_bootstrap replication_modes + ha_multi_dc pause kubernetes watchdog