本文為博主原創,未經允許不得轉載:
etcd 是 CoreOS 團隊發起的一個開源項目(Go 語言,其實很多這類項目都是 Go 語言實現的,只能說很強大),實現了分布式鍵值存儲和服務發現,etcd 和 ZooKeeper/Consul 非常相似,都提供了類似的功能,以及 REST API 的訪問操作,具有以下特點:
- 簡單:安裝和使用簡單,提供了 REST API 進行操作交互
- 安全:支持 HTTPS SSL 證書
- 快速:支持並發 10 k/s 的讀寫操作
- 可靠:采用 raft 算法,實現分布式系統數據的可用性和一致性
使用 docker 單機安裝:
1. 使用鏡像 https://hub.docker.com/r/bitnami/etcd
docker pull bitnami/etcd:latest
也可自己選擇構建鏡像
docker build -t bitnami/etcd:latest 'https://github.com/bitnami/bitnami-docker-etcd.git#master:3/debian-10'
2. 創建docker 網絡
docker network create app-tier --driver bridge
3.啟動etcd服務器實例
–network app-tier 指定啟動實例的網絡配置
docker run -d --name etcd-server \ --network app-tier \ --publish 2379:2379 \ --publish 2380:2380 \ --env ALLOW_NONE_AUTHENTICATION=yes \ --env ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379 \ bitnami/etcd:latest
4. 啟動etcd客戶端實例,並連接上步驟服務
docker run -it --rm \ --network app-tier \ --env ALLOW_NONE_AUTHENTICATION=yes \ bitnami/etcd:latest etcdctl --endpoints http://etcd-server:2379 set /message Hello
執行以上步驟時可能會遇到以下問題:Error: unknown command "set" for "etcdctl"
解決辦法:
- 默認v2版接口關閉,只需要把
set
改成put
即可。 -
etcd開啟v2版接口:在etcd的啟動參數后面加上--enable-v2啟動,或者在etcd的配置文件上加入ETCD_ENABLE_V2=true,然后重啟etcd。使用etcdctl命令的時候前面加上ETCDCTL_API=2 ,調用v2接口。比如:ETCDCTL_API=2 etcdctl
5.etcd 使用curl 實現鍵值管理操作的命令:V2 版本
5.1 設置鍵值命令:
curl http://127.0.0.1:2379/v2/keys/hello -XPUT -d value="hello world"
{"action":"set","node":{"key":"/hello","value":"hello world","modifiedIndex":17,"createdIndex":17}}
5.2 查看鍵值命令:
curl http://127.0.0.1:2379/v2/keys/hello
{"action":"get","node":{"key":"/hello","value":"hello world","modifiedIndex":17,"createdIndex":17}}
5.3 刪除鍵值命令:
curl http://127.0.0.1:2379/v2/keys/hello -XDELETE
{"action":"delete","node":{"key":"/hello","modifiedIndex":19,"createdIndex":17},"prevNode":{"key":"/hello","value":"hello world","modifiedIndex":17,"createdIndex":17}}
5.4 查看版本:
curl -L http://127.0.0.1:2379/version
陌溪的 博客