etcd 是用 golang 編寫,raft 協議實現的分布式高可靠的 kv 存儲系統,常用來作為配置共享和服務注冊發現,Kubernetes 就使用 etcd 來保存整個集群的狀態
etcd 主要關注以下四點:
- 簡單: 定義良好,面向用戶的 api (使用 grpc)
- 安全: 可選的 tls 用戶認證方式
- 快速: 支持每秒 10000 次的寫入
- 可靠: raft 協議實現分布式
搭建 etcd 服務
version: "3.5"
services:
etcd:
hostname: etcd
image: bitnami/etcd:3
deploy:
replicas: 1
restart_policy:
condition: on-failure
# ports:
# - "2379:2379"
# - "2380:2380"
# - "4001:4001"
# - "7001:7001"
user: root
volumes:
- "/var/docker/etcd/data:/opt/bitnami/etcd/data"
environment:
- "ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379"
- "ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379"
- "ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380"
- "ETCD_INITIAL_ADVERTISE_PEER_URLS=http://0.0.0.0:2380"
- "ALLOW_NONE_AUTHENTICATION=yes"
- "ETCD_INITIAL_CLUSTER=node1=http://0.0.0.0:2380"
- "ETCD_NAME=node1"
- "ETCD_DATA_DIR=/opt/bitnami/etcd/data"
networks:
- etcdnet
networks:
etcdnet:
name: etcdnet
客戶端通過 ETCD_ADVERTISE_CLIENT_URLS
這個地址和 etcd 建立連接
etcd 命令行界面 etcdctl
etcdctl 是 etcd 提供的命令行界面,可以方便地管理 etcd 服務
docker exec $(docker ps -a --filter name=etcd -q) etcdctl put root/service/svc1/key1 val1
docker exec $(docker ps -a --filter name=etcd -q) etcdctl get root/service/svc1/key1
etcd ui 界面 e3w
e3w 是一個 etcd 的 ui 界面,可以方便地查看和管理當前的 kv 和各節點的狀態
version: "3.5"
services:
e3w:
hostname: e3w
image: soyking/e3w:latest
deploy:
replicas: 1
restart_policy:
condition: on-failure
# ports:
# - "8080:8080"
volumes:
- "/var/docker/e3w/conf/config.ini:/app/conf/config.default.ini"
networks:
- e3wnet
- etcdnet
networks:
e3wnet:
name: e3wnet
etcdnet:
external: true
name: etcdnet
e3w 管理的 kv 是目錄格式的,且所有的 key 都帶有根目錄前綴,根目錄可以在 config.ini
中配置
比如 root_key=root
,創建目錄 service/svc1
,創建 key1 => val1
,實際在 etcd 的存儲的 key 為 root/service/svc1/key1
鏈接
- etcd 簡介 + 使用: https://blog.csdn.net/bbwangj/article/details/82584988
- github etcd: https://github.com/etcd-io/etcd
- github ui 界面 e3w: https://github.com/soyking/e3w
- etcd 配置: https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md
- etcd 命令行界面: https://github.com/etcd-io/etcd/tree/master/etcdctl
- etcd 環境完整代碼參考: https://github.com/hpifu/docker-etcd
- e3w 環境完整代碼參考: https://github.com/hpifu/docker-e3w
- docker etcd 鏡像: https://hub.docker.com/r/bitnami/etcd
- docker e3w 鏡像: https://hub.docker.com/r/soyking/e3w
轉載請注明出處
本文鏈接:https://tech.hatlonely.com/article/62