aboutsummaryrefslogtreecommitdiff
path: root/content/operations/deploiement/grappe/stolon.md
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2022-12-22 17:56:58 +0100
committerAlex Auvolat <alex@adnab.me>2022-12-22 17:56:58 +0100
commitfe27af7a16d9bc56b0767f63d8f0490fcd2f13d1 (patch)
treeaa2545893bc1ca9f973cc45adcc0dcd2d68aef77 /content/operations/deploiement/grappe/stolon.md
parent4831ac27871e44064dc55946c5ae10b8cda32b37 (diff)
downloadguide.deuxfleurs.fr-fe27af7a16d9bc56b0767f63d8f0490fcd2f13d1.tar.gz
guide.deuxfleurs.fr-fe27af7a16d9bc56b0767f63d8f0490fcd2f13d1.zip
Migration des derniers documents depuis op_guide (dépôt infrastructure)
Diffstat (limited to 'content/operations/deploiement/grappe/stolon.md')
-rw-r--r--content/operations/deploiement/grappe/stolon.md95
1 files changed, 95 insertions, 0 deletions
diff --git a/content/operations/deploiement/grappe/stolon.md b/content/operations/deploiement/grappe/stolon.md
new file mode 100644
index 0000000..4a683f4
--- /dev/null
+++ b/content/operations/deploiement/grappe/stolon.md
@@ -0,0 +1,95 @@
++++
+title = "Stolon"
+description = "Comment déployer Stolon"
+date = 2022-12-22
+dateCreated = 2022-12-22
+weight = 11
++++
+
+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" }'
+```