aboutsummaryrefslogtreecommitdiff
path: root/content/operations/stolon.md
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2023-04-17 12:24:51 +0200
committerAlex Auvolat <alex@adnab.me>2023-04-17 12:24:51 +0200
commit7d41074f738de8f9d7a7e910fb1c26ed698373c2 (patch)
tree4f9ec3cea7b573d7fe7a90e619453ab3473b6a40 /content/operations/stolon.md
parent1701a090c292f9f3f1894e6844032b3cbe6d15de (diff)
parent4a98a21215262f646307113782b3e8762de70660 (diff)
downloadguide.deuxfleurs.fr-7d41074f738de8f9d7a7e910fb1c26ed698373c2.tar.gz
guide.deuxfleurs.fr-7d41074f738de8f9d7a7e910fb1c26ed698373c2.zip
Merge branch 'main' into reduce-image-sizes
Diffstat (limited to 'content/operations/stolon.md')
-rw-r--r--content/operations/stolon.md97
1 files changed, 97 insertions, 0 deletions
diff --git a/content/operations/stolon.md b/content/operations/stolon.md
new file mode 100644
index 0000000..de20f09
--- /dev/null
+++ b/content/operations/stolon.md
@@ -0,0 +1,97 @@
+---
+title: "Stolon"
+description: "Comment déployer Stolon"
+date: 2022-12-22
+dateCreated: 2022-12-22
+weight: 11
+extra:
+ parent: 'operations/deployer.md'
+---
+
+Spawn container:
+
+```bash
+docker run \
+ -ti --rm \
+ --name stolon-config \
+ --user root \
+ -v /var/lib/consul/pki/:/certs \
+ superboum/amd64_postgres:v11
+```
+
+
+Init with:
+
+```
+stolonctl \
+ --cluster-name chelidoine \
+ --store-backend=consul \
+ --store-endpoints https://consul.service.prod.consul:8501 \
+ --store-ca-file /certs/consul-ca.crt \
+ --store-cert-file /certs/consul2022-client.crt \
+ --store-key /certs/consul2022-client.key \
+ init \
+ '{ "initMode": "new",
+ "usePgrewind" : true,
+ "proxyTimeout" : "120s",
+ "pgHBA": [
+ "host all postgres all md5",
+ "host replication replicator all md5",
+ "host all all all ldap ldapserver=bottin.service.prod.consul ldapbasedn=\"ou=users,dc=deuxfleurs, dc=fr\" ldapbinddn=\"<bind_dn>\" ldapbindpasswd=\"<bind_pwd>\" ldapsearchattribute=\"cn\""
+ ]
+ }'
+
+```
+
+Then set appropriate permission on host:
+
+```
+mkdir -p /mnt/{ssd,storage}/postgres/
+chown -R 999:999 /mnt/{ssd,storage}/postgres/
+```
+
+(102 is the id of the postgres user used in Docker)
+It might be improved by staying with root, then chmoding in an entrypoint and finally switching to user 102 before executing user's command.
+Moreover it would enable the usage of the user namespace that shift the UIDs.
+
+
+
+## Upgrading the cluster
+
+To retrieve the current stolon config:
+
+```
+stolonctl spec --cluster-name chelidoine --store-backend consul --store-ca-file ... --store-cert-file ... --store-endpoints https://consul.service.prod.consul:8501
+```
+
+The important part for the LDAP:
+
+```
+{
+ "pgHBA": [
+ "host all postgres all md5",
+ "host replication replicator all md5",
+ "host all all all ldap ldapserver=bottin.service.2.cluster.deuxfleurs.fr ldapbasedn=\"ou=users,dc=deuxfleurs,dc=fr\" ldapbinddn=\"cn=admin,dc=deuxfleurs,dc=fr\" ldapbindpasswd=\"<REDACTED>\" ldapsearchattribute=\"cn\""
+ ]
+}
+```
+
+Once a patch is writen:
+
+```
+stolonctl --cluster-name pissenlit --store-backend consul --store-endpoints http://consul.service.2.cluster.deuxfleurs.fr:8500 update --patch -f /tmp/patch.json
+```
+
+## Log
+
+- 2020-12-18 Activate pg\_rewind in stolon
+
+```
+stolonctl --cluster-name pissenlit --store-backend consul --store-endpoints http://consul.service.2.cluster.deuxfleurs.fr:8500 update --patch '{ "usePgrewind" : true }'
+```
+
+- 2021-03-14 Increase proxy timeout to cope with consul latency spikes
+
+```
+stolonctl --cluster-name pissenlit --store-backend consul --store-endpoints http://consul.service.2.cluster.deuxfleurs.fr:8500 update --patch '{ "proxyTimeout" : "120s" }'
+```