107 lines
2.9 KiB
Markdown
107 lines
2.9 KiB
Markdown
---
|
||
title: Howto Patroni
|
||
categories: databases
|
||
...
|
||
|
||
* Documentation : <https://patroni.readthedocs.io/en/latest/>
|
||
* Dépôt Github : <https://github.com/zalando/patroni>
|
||
|
||
[Patroni](https://github.com/zalando/patroni) est un outil qui permet de créer votre propre système de haute disponibilité, utilisant Python, et s’appuyant sur un stockage distribué comme etcd, Zookeeper, Consul ou Kubernetes.
|
||
Cela permet aux administrateurs de base de données, de déployer des clusters PostgreSQL de manière simple et rapide.
|
||
|
||
**ATTENTION : Documentation en cours d'écriture !**
|
||
|
||
# Installation
|
||
|
||
En Debian 11 la version de Patroni est la 2.0.2, on installe simplement le paquet `patroni` :
|
||
|
||
~~~
|
||
# apt install patroni
|
||
~~~
|
||
|
||
# Configuration
|
||
|
||
La syntaxe de la configuration de Patroni est en Yaml.
|
||
|
||
Le paquet Debian installe une configuration de base dans `/etc/patroni/config.yml.in` et dans `/etc/patroni/dcs.yml` mais nous préférons créer notre propre fichier de configuration dans `/etc/patroni/config-patroni.yml`
|
||
|
||
Voici un exemple de configuration dans `/etc/patroni/config-patroni.yml` :
|
||
|
||
~~~
|
||
scope: cluster-foo
|
||
name: cluster-foo1
|
||
|
||
restapi:
|
||
listen: 10.0.0.1:8008
|
||
connect_address: 10.0.0.1:8008
|
||
|
||
etcd:
|
||
hosts: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
|
||
|
||
bootstrap:
|
||
dcs:
|
||
ttl: 30
|
||
loop_wait: 10
|
||
retry_timeout: 10
|
||
maximum_lag_on_failover: 1048576
|
||
postgresql:
|
||
use_pg_rewind: true
|
||
use_slots: true
|
||
parameters:
|
||
wal_level: replica
|
||
hot_standby: "on"
|
||
wal_keep_segment: 8
|
||
max_wal_senders: 5
|
||
max_relication_slots: 5
|
||
checkpoint_timeout: 30
|
||
|
||
initdb:
|
||
- encoding: UTF8
|
||
- data-checksums
|
||
|
||
pg_hba:
|
||
- host replication repl 127.0.0.1/32 md5
|
||
- host replication repl 10.0.0.1/0 md5
|
||
- host replication repl 10.0.0.2/0 md5
|
||
- host replication repl 10.0.0.3/0 md5
|
||
- host all all 0.0.0.0/0 md5
|
||
|
||
users:
|
||
admin:
|
||
password: passforadmin
|
||
options:
|
||
- createrole
|
||
- createdb
|
||
repl:
|
||
password: passforrepl
|
||
options:
|
||
- replication
|
||
|
||
postgresql:
|
||
listen: 10.0.0.1:5432
|
||
connect_address: 10.0.0.1:5432
|
||
bin_dir: /usr/lib/postgresql/13/bin/
|
||
data_dir: /home/cluster-foo1
|
||
pgpass: /tmp/cluster-foo1-pgpass
|
||
authentication:
|
||
replication:
|
||
username: repl
|
||
password: passforrepl
|
||
superuser:
|
||
username: admin
|
||
password: passforadmin
|
||
parameters:
|
||
unix_socket_directories: '/tmp'
|
||
|
||
tags:
|
||
nofailover: false
|
||
noloadbalance: false
|
||
clonefrom: false
|
||
nosync: false
|
||
~~~
|
||
|
||
La configuration se découpe en plusieurs parties que nous allons décrire.
|
||
|
||
- `restapi` : configuration de l'API REST de Patroni
|
||
- `listen` : IP et port d'écoute de l'API REST
|
||
- `connect_address` : IP et port de connexion à l'API REST |