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