macOS docker安裝etcd集群

2021-09-10 22:49:48 字數 3161 閱讀 7717

etcd是乙個高可用的鍵值儲存系統,主要用於共享配置和服務發現。etcd是由coreos開發並維護的,靈感來自於 zookeeper 和 doozer,它使用go語言編寫,並通過raft一致性演算法處理日誌複製以保證強一致性。raft是乙個來自stanford的新的一致性演算法,適用於分布式系統的日誌複製,raft通過選舉的方式來實現一致性,在raft中,任何乙個節點都可能成為leader。google的容器集群管理系統kubernetes、開源paas平台cloud foundry和coreos的fleet都廣泛使用了etcd。

etcd的特性如下:

簡單: curl可訪問的使用者的api(http+json)定義明確,面向使用者的api(grpc)

安全: 可選的ssl客戶端證書認證

快速: 單例項每秒 1000 次寫操作

可靠: 使用raft保證一致性

etcd構建自身高可用集群主要有三種形式:

1)靜態發現: 預先已知 etcd 集群中有哪些節點,在啟動時直接指定好etcd的各個node節點位址

2)etcd動態發現: 通過已有的etcd集群作為資料互動點,然後在擴充套件新的集群時實現通過已有集群進行服務發現的機制

3)dns動態發現: 通過dns查詢方式獲取其他節點位址資訊

macos

docker

# docker pull quay.io/coreos/etcd

在一台機器配置了3個容器,在機器上建立了子網路,三颱容器在乙個網路裡

# docker network create --subnet=192.167.0.0/16 etcdnet 

建立集群:將三個伺服器統一新增進集群

a中執行:

# docker run -d -p 2379:2379 -p 2380:2380 --restart=always --net etcdnet --ip 192.167.0.168 --name etcd0 quay.io/coreos/etcd /usr/local/bin/etcd --name autumn-client0 -advertise-client-urls  -listen-client-urls  -initial-advertise-peer-urls  -listen-peer-urls  -initial-cluster-token etcd-cluster -initial-cluster autumn-client0=,autumn-client1=,autumn-client2= -initial-cluster-state new
b中執行:

# docker run -d -p 2479:2479 -p 2480:2480 --restart=always --net etcdnet --ip 192.167.0.170  --name etcd1 quay.io/coreos/etcd /usr/local/bin/etcd --name autumn-client1 -advertise-client-urls  -listen-client-urls  -initial-advertise-peer-urls  -listen-peer-urls  -initial-cluster-token etcd-cluster -initial-cluster autumn-client0=,autumn-client1=,autumn-client2= -initial-cluster-state new
c中執行:

# docker run -d -p 2579:2579 -p 2580:2580 --restart=always --net etcdnet --ip 192.167.0.172  --name etcd2 quay.io/coreos/etcd /usr/local/bin/etcd --name autumn-client2 -advertise-client-urls  -listen-client-urls  -initial-advertise-peer-urls  -listen-peer-urls  -initial-cluster-token etcd-cluster -initial-cluster autumn-client0=,autumn-client1=,autumn-client2= -initial-cluster-state new
注意:**中可能格式會有錯誤,請參照a中的**手動修改後執行。

集群驗證

進入docker:

使用docker exec命令

這個命令使用exit命令後,不會退出後台,一般使用這個命令,使用方法如下 

docker exec -it db3 /bin/sh 或者 docker exec -it d48b21a7e439 /bin/sh
root 許可權進入docker

docker exec -it --user root /bin/sh
db3或者d48b21a7e439 為docker的name和id,使用時修改為自己docker的資訊。 

查詢已執行的docker容器基本資訊  :      docker ps

docker 中新增資訊: (注意:v3 和v2版本的etcd原理不同,操作也不同,此處為v3)

[root@localhost etcd]# etcdctl put mykey "this is awesome"

no help topic for 'put' # etcdctl 需要設定環境變數 etcdctl_api=3,使用第三版的api,預設的api是2

[root@localhost etcd]# etcdctl_api=3 etcdctl put mykey "this is awesome"

ok

設定環境變數:

root@localhost etcd]# echo 'export etcdctl_api=3' >> /etc/profile ## 環境變數新增 etcdctl_api=3

[root@localhost etcd]# source /etc/profile # 是profile中修改的檔案生效

[root@localhost etcd]# etcdctl get mykey # 可以直接使用./etcdctl get key 命令了

mykey

this is awesome # 剛新增的內容

ET流程規範

準備工作 1 et盡量定在整合測試後一天,如果變動,提前一周確定et時間及會議室 2 pm需要提前一天整理et case,並根據et case多少確定是否需要分組 3 pm需提前一天與專案負責人 測試同學一起驗證et主流程,保證線上資料真實資料且環境ok 4 驗證過程中如果有任何問題聯絡專案負責人找...

LT模式 ET模式

lt 在資料到達之後,無論程式是沒有接收,還是接收了,但沒有接收完,下一輪epoll wait仍然會提醒應用程式該描述符上有資料,知道資料被接收完。同一事件僅僅被觸發一次 include include include include include include include include ...

探索式測試 ET

商業區 銷售特性,對應軟體包裝上面的對應特性,類似我們的需求。旅遊區 噱頭特性,即對應產品的新特性,能夠去更好的吸引新的使用者。娛樂區 輔助特性,對應軟體的輔助特性和功能,可以做完補充測試。旅館區 平台或維護特性,對應軟體內部的一些互動,不一定是由使用者來觸發的。破舊區 問題高發區,對應軟體的歷史穩...