18
0
Fork 0

Ajout partie adminitration cli + sauvegardes

This commit is contained in:
emorino 2022-08-10 16:06:03 +02:00
parent d4edd2711f
commit 57b43bde24
1 changed files with 56 additions and 4 deletions

View File

@ -3,7 +3,7 @@ title: Howto etcd
categories: databases
...
* Documentation : https://etcd.io/docs/v3.5/
* Documentation : <https://etcd.io/docs/v3.5/>
[Etcd](https://etcd.io/) est un système de stockage clé-valeur distribué fortement cohérent qui fournit un moyen fiable de stocker des données auxquelles un système distribué ou un cluster de machines doit accéder. Il gère les élections de primaire lors de problème réseau, et peux tolérer les pannes de machines, même sur le nœud primaire.
@ -25,13 +25,13 @@ Si on doit utilisé etcd via une API en python, comme pour Patroni par exemple,
# Configuration
etcd écoute, par défaut, sur deux port bien distinct, le port 2379 et le port 2380.
etcd écoute, par défaut, sur deux port bien distinct, le port `2379` et le port `2380`.
Le port 2379 sert pour la communication pour les requêtes des clients, et le port 2380 sert pour la communication des noeuds.
Le port `2379` sert pour la communication pour les requêtes des clients, et le port `2380` sert pour la communication des nœuds.
Voici la définition des variables d'environnement que nous utilisons le plus souvent :
`ETCD_NAME` : défini le noms du nœud
`ETCD_NAME` : défini le nom du nœud
`ETCD_DATA_DIR` : répertoire du datadir des WAL etcd
@ -98,3 +98,55 @@ La variable `ETCD_INITIAL_CLUSTER_TOKEN` doit avoir un nom commun sur les nœuds
On met en place cette configuration sur tous les nœuds, en modifiant les variables `ETCD_LISTEN_PEER_URLS` / `ETCD_LISTEN_CLIENT_URLS` et `ETCD_INITIAL_ADVERTISE_PEER_URLS` sur chaque nœud avec les valeurs spécifiques a ces machines.
# Administration
## Interagir en CLI avec l'API de etcd
On peux utilisé la commande `etcdctl` pour intéragir avec l'API de etcd, il faut bien exporté la variable `ETCDCTL_API` en fonction de la version de etcd qu'on utilise, soit v2 ou v3.
En Debian 11 on utilise la v3, donc on exporte la variable comme ceci :
~~~
# export ETCDCTL_API=3
~~~
Voici quelques exemples d'utilisation :
* Listé les membres du cluster et connaitre l'état de chaque nœud :
~~~
# etcdctl --endpoints=http://127.0.0.1:2379 member list
3f4bf14e37c364ce: name=etcd-foo2 peerURLs=http://10.0.0.2:2380 clientURLs=http://10.0.0.2:2379 isLeader=false
48b925a0f1dfc2de: name=etcd-foo1 peerURLs=http://10.0.0.1:2380 clientURLs=http://10.0.0.1:2379 isLeader=false
c9633f5e058d7c36: name=etcd-foo3 peerURLs=http://10.0.0.3:2380 clientURLs=http://:10.0.0.3:2379 isLeader=true
~~~
* Connaitre la version de etcd, exemple en Debian 11 :
~~~
# etcdctl version
etcdctl version: 3.3.25
API version: 3.3
~~~
## Sauvegarde
Pour faire une sauvegarde de etcd dans un fichier on peux utilisé la commande suivante :
~~~
# etcdctl --endpoints=http://127.0.0.1:2379 snapshot save /home/backup/etcd-foo1.db
2022-08-10 15:56:52.128086 I | clientv3: opened snapshot stream; downloading
2022-08-10 15:56:52.147177 I | clientv3: completed snapshot read; closing
Snapshot saved at /home/backup/etcd-foo1.db
~~~
On peux vérifié le contenu de la sauvegarde, pour savoir le nombre de clé quelle contient, sa taille etc...
~~~
# etcdctl --write-out=table --endpoints=http://127.0.0.1:2379 snapshot status /home/backup/etcd-foo1.db
+----------+----------+------------+------------+
| HASH | REVISION | TOTAL KEYS | TOTAL SIZE |
+----------+----------+------------+------------+
| a173f634 | 0 | 6 | 20 kB |
+----------+----------+------------+------------+
~~~