{{tag>Brouillon}}
= Notes etcd
Voir aussi :
* [[Notes CouchDB|CouchDB]]
== Intro
* https://etcd.io/
* https://etcd.io/docs/v3.5/dev-guide/interacting_v3/
* https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/quest-ce-quetcd/
* https://www.blackcreeper.com/kubernetes/etcd-decouverte-et-premiers-pas/
== Install
* http://play.etcd.io/install
* https://www.digitalocean.com/community/tutorials/how-to-set-up-and-secure-an-etcd-cluster-with-ansible-on-ubuntu-18-04-fr
* https://docs.okd.io/3.11/admin_guide/assembly_replace-etcd-member.html
apt install etcd-client
apt-get install etcd
== Config
=== Droits
https://etcd.io/docs/v3.5/demo/
== Exemples basiques
Lancement
etcd
Connexion
etcdctl --endpoints http://127.0.0.1:2379 get /
Put
etcdctl put greeting "Hello, etcd"
Get
ETCDCTL_API=3 etcdctl get greeting
etcdctl get foo --print-value-only
etcdctl get --prefix --rev=4 foo
etcdctl watch foo --hex
etcdctl --no-sync --peers https//plop1.lan:10835,https//plop2.lan:10836 -u username:password ls /
alias e='etcdctl --ca-file ~/compose_etcd.pk --no-sync --peers https://aws-us-east-1-portal10.dblayer.com:10835,https://aws-us-east-1-portal11.dblayer.com:27265 -u root:*********'
etcdctl mk x 3
etcdctl mk y 123
etcdctl ls
etcdctl get /y
etcdctl set new 6
etcdctl set d/a 4
etcdctl set d/b 5
etcdctl ls d
etcdctl rm --recursive d
# TTL of 5 seconds
etcdctl mk e 4 --ttl "5"
export ETCDCTL_API=3
export ETCDCTL_ENDPOINTS=$(minikube service example-etcd-cluster-client-service --url)
backup (cluster & local)
Voir https://etcd.io/docs/v3.5/op-guide/recovery/
ETCDCTL_API=3 etcdctl --endpoints $ENDPOINT snapshot save snapshot.db #--cacert /etc/ssl/etcd/ca.crt --cert /etc/ssl/etcd/client.crt --key /etc/ssl/etcd/client.key
Verify the snapshot:
ETCDCTL_API=3 etcdctl --write-out=table snapshot status snapshotdb
Restore (local)
ETCDCTL_API=3 etcdctl snapshot restore snapshot.db
grpc-proxy
etcd grpc-proxy start --endpoints=infra0.example.com,infra1.example.com,infra2.example.com --listen-addr=127.0.0.1:2379
== Tuning
IO
# best effort, highest priority
sudo ionice -c2 -n0 -p `pgrep etcd`
CPU
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
== Diag
sudo chown -R etcd:etcd /var/lib/etcd
sudo systemctl start etcd
List the cluster member:
etcdctl --endpoints=http://${NODE1}:2379 member list
== Client API Python
https://www.dasblinkenlichten.com/python-pieces-working-with-etcd/
== Autre
=== pas de type list ?
Voir https://github.com/ake-persson/etcdtool
etcd doesn't support list's, this is handled by using the index as the key:
JSON Input:
{
"users": [
{ "username": "jblack", "first_name": "John", "last_name": "Blackbeard" },
{ "username": "ltrier", "first_name": "Lars", "last_name": "Von Trier" }
]
}
Result in etcd:
users/0/username: jblack
users/0/first_name: John
users/0/last_name: Blackbeard
users/1/username: ltrier
users/1/first_name: Ludwig
users/1/last_name: Von Treimer