From 57b43bde242549d112e27380213717848fa25cbf Mon Sep 17 00:00:00 2001 From: emorino Date: Wed, 10 Aug 2022 16:06:03 +0200 Subject: [PATCH] Ajout partie adminitration cli + sauvegardes --- Howtoetcd.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/Howtoetcd.md b/Howtoetcd.md index 39883807..3d14546c 100644 --- a/Howtoetcd.md +++ b/Howtoetcd.md @@ -3,7 +3,7 @@ title: Howto etcd categories: databases ... -* Documentation : https://etcd.io/docs/v3.5/ +* Documentation : [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 | ++----------+----------+------------+------------+ +~~~ \ No newline at end of file