docker 安裝 ETCD 及 etcd 使用


本文為博主原創,未經允許不得轉載:

  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"

   解決辦法:

  1.  默認v2版接口關閉,只需要把set改成put即可。
  2. 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

 

 

 

 

  陌溪的 博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM