部署和操作etcd

厚礼蝎發表於2025-01-24

這裡採用docker compose來部署
部署三個節點組一個叢集

etcd叢集節點數量的相關說明

etcd 是基於 raft演算法的分散式鍵值資料庫,生來就為叢集化而設計的,由於Raft演算法在做決策時需要超半數節點的投票,所以etcd叢集一般推薦奇數節點,如3、5或者7個節點構成一個叢集。
etcd官方推薦3、5、7個節點,雖然raft演算法也是半數以上投票才能有 leader,但奇數只是推薦,其實偶數也是可以的。如 2、4、8個節點。
下面分情況說明:

  • 1 個節點:就是單例項,沒有叢集概念,不做討論
  • 2 個節點:是叢集,但沒人會這麼配,這裡說點廢話:雙節點的etcd能啟動,啟動時也能有主,可以正常提供服務,但是一臺掛掉之後,就選不出主了,因為他只能拿到1票,剩下的那臺也無法提供服務,也就是雙節點無容錯能力,不要使用。
  • 3 節點:標準的3 節點etcd 叢集只能容忍1臺機器當機,掛掉 1 臺此時等於2個節點的情況,如果再掛 1 臺,就和 2節點的情形一致了,一直選,一直增加任期,但就是選不出來,服務也就不可用了
  • 4 節點:最大容忍1 臺 伺服器當機
  • 5 節點:最大容忍 2 臺 伺服器當機
  • 6 節點:最大容忍 2 臺 伺服器當機
  • 7和8個節點,最大容忍 3臺 伺服器當機
    以此類推,9和10個節點,最大容忍4臺 伺服器當機
    總結以上可以得出結論:偶數節點雖然多了一臺機器,但是容錯能力是一樣的,也就是說,你可以設定偶數節點,但沒增加什麼能力,還浪費了一臺機器。同時etcd 是透過複製資料給所有節點來達到一致性,因此偶數的多一臺機器增加不了效能,反而會拉低寫入速度。

etcd叢集節點數越多越好嗎?

那有同學可能會問,我搞個幾十上百臺伺服器做etcd叢集,那叢集的整體效能是不是無敵了,etcd叢集永不會停止嘛?
有這個想法那就大錯特錯了,etcd 叢集是一個 Raft Group,沒有 shared。
所以它的極限有兩部分

  • 一是單機的容量限制,記憶體和磁碟
  • 二是網路開銷

每次 Raft 操作需要所有節點參與,每一次寫操作需要叢集中大多數節點將日誌落盤成功後,Leader 節點才能修改內部狀態機,並將結果返回給客戶端。
因此節點越多效能越低,並且出錯的機率會直線上升,並且是呈現線性的效能下降,所以擴充套件很多 etcd 節點是沒有意義的;
其次,如果etcd叢集超過7個達到十幾個幾十個,那麼,對運維來說也是一個不小的壓力了,並且叢集的配置什麼的也會更加的複雜,而不是簡單易用了。
因此,etcd叢集的數量一般是 3、5、7, 3 個是最低標準,7個也就是最高了。

docker安裝

自行安裝

$ docker version
Client: Docker Engine - Community
 Version:           27.5.1
 API version:       1.47
 Go version:        go1.22.11
 Git commit:        9f9e405
 Built:             Wed Jan 22 13:41:31 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.5.1
  API version:      1.47 (minimum version 1.24)
  Go version:       go1.22.11
  Git commit:       4c9b3b0
  Built:            Wed Jan 22 13:41:31 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.25
  GitCommit:        bcc810d6b9066471b0b6fa75f557a15a1cbf31bb
 runc:
  Version:          1.2.4
  GitCommit:        v1.2.4-0-g6c52b3f
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

$ docker compose version
Docker Compose version v2.32.4

docker compose 清單檔案

咱們這裡使用三個節點來部署

services:
  etcd1:
    image: quay.io/coreos/etcd:v3.5.17  # 使用 etcd 官方映象
    container_name: etcd1  # 容器名稱
    ports:
      - "2379:2379"  # 客戶端通訊埠
      - "2380:2380"  # 節點間通訊埠
    restart: always
    environment:
      - ETCD_NAME=etcd1  # 節點名稱
      - ETCD_DATA_DIR=/var/etcd
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380  # 監聽節點間通訊地址
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379  # 監聽客戶端通訊地址
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd1:2380  # 向其他節點廣播的地址
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:2379  # 客戶端訪問地址
      - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380  # 初始叢集配置
      - ETCD_INITIAL_CLUSTER_STATE=new  # 叢集初始狀態(新叢集)
      - ETCD_ROOT_PASSWORD=111111  # 設定密碼
      # - ALLOW_NONE_AUTHENTICATION=yes  # 允許空密碼(僅限開發環境)
      - ETCD_HEARTBEAT_INTERVAL=200
      - ETCD_ELECTION_TIMEOUT=1000
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
      - ETCD_LOGGER=zap
    volumes:
      - ./etcd1-data:/var/etcd  # 持久化資料儲存
    networks:
      - etcd-net  # 使用自定義網路

  etcd2:
    image: quay.io/coreos/etcd:v3.5.17
    container_name: etcd2
    ports:
      - "2479:2379"  # 客戶端通訊埠(避免與 etcd1 衝突)
      - "2480:2380"  # 節點間通訊埠(避免與 etcd1 衝突)
    restart: always
    environment:
      - ETCD_NAME=etcd2
      - ETCD_DATA_DIR=/var/etcd
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:2379
      - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
      - ETCD_INITIAL_CLUSTER_STATE=new
      - ETCD_ROOT_PASSWORD=111111  # 設定密碼
      # - ALLOW_NONE_AUTHENTICATION=yes  # 允許空密碼(僅限開發環境)
      - ETCD_HEARTBEAT_INTERVAL=200
      - ETCD_ELECTION_TIMEOUT=1000
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
      - ETCD_LOGGER=zap
    volumes:
      - ./etcd2-data:/var/etcd
    networks:
      - etcd-net

  etcd3:
    image: quay.io/coreos/etcd:v3.5.17
    container_name: etcd3
    ports:
      - "2579:2379"  # 客戶端通訊埠(避免與 etcd1 和 etcd2 衝突)
      - "2580:2380"  # 節點間通訊埠(避免與 etcd1 和 etcd2 衝突)
    restart: always
    environment:
      - ETCD_NAME=etcd3
      - ETCD_DATA_DIR=/var/etcd
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:2379
      - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
      - ETCD_INITIAL_CLUSTER_STATE=new
      - ETCD_ROOT_PASSWORD=111111  # 設定密碼
      # - ALLOW_NONE_AUTHENTICATION=yes  # 允許空密碼(僅限開發環境)
      - ETCD_HEARTBEAT_INTERVAL=200
      - ETCD_ELECTION_TIMEOUT=1000
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
      - ETCD_LOGGER=zap
    volumes:
      - ./etcd3-data:/var/etcd
    networks:
      - etcd-net
networks:
  etcd-net:  # 自定義網路
  • ETCD_NAME=etcd1
    • 作用:設定當前etcd節點的名稱。
    • 說明:在叢集中,每個節點需要有一個唯一的名稱。這裡節點名稱為etcd1
  • ETCD_DATA_DIR=/var/etcd
    • 作用:指定etcd儲存資料的目錄。
    • 說明:etcd會將所有資料(如鍵值對、叢集狀態等)儲存在這個目錄中。這裡設定為/var/etcd
  • ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
    • 作用:設定當前節點監聽其他etcd節點(peer)通訊的地址和埠。
    • 說明:
      • 0.0.0.0表示監聽所有網路介面。
      • 2380是etcd節點之間通訊的預設埠。
      • 其他節點會透過這個URL與當前節點通訊。
  • ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
    • 作用:設定當前節點監聽客戶端請求的地址和埠。
    • 說明:
      • 0.0.0.0表示監聽所有網路介面。
      • 2379是etcd客戶端通訊的預設埠。
      • 客戶端(如應用程式)會透過這個URL與etcd互動。
  • ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380
    • 作用:設定當前節點向其他節點通告的peer通訊地址。
    • 說明:
      • 其他節點會透過這個URL與當前節點通訊。
      • 這裡設定為http://etcd3:2380,表示其他節點需要透過etcd3的主機名和埠2380訪問當前節點。
  • ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:2379
    • 作用:設定當前節點向客戶端通告的訪問地址。
    • 說明:
      • 客戶端會透過這個URL訪問當前節點。
      • 這裡設定為http://etcd1:2379,表示客戶端需要透過etcd1的主機名和埠2379訪問當前節點。
  • ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
    • 作用:定義初始叢集的成員列表。
    • 說明:
      • 這裡指定了叢集中有3個節點:etcd1etcd2etcd3
      • 每個節點的名稱和對應的peer通訊地址都需要明確列出。
      • 當前節點(etcd1)會根據這個列表與其他節點建立連線。
  • ETCD_INITIAL_CLUSTER_STATE=new
    • 作用:指定叢集的初始狀態。
    • 說明:
      • new表示這是一個全新的叢集,etcd會初始化一個新的叢集。
      • 如果是加入已有叢集,可以設定為existing
  • ETCD_ROOT_PASSWORD=111111
    • 作用:設定etcd的root使用者密碼。
    • 說明:
      • 這裡將root使用者的密碼設定為111111
      • 啟用密碼認證後,客戶端需要提供正確的使用者名稱和密碼才能訪問etcd。
  • ALLOW_NONE_AUTHENTICATION=yes
    • 作用:允許無密碼訪問(僅限開發環境)。
    • 說明:
      • 如果取消註釋並設定為yes,則允許客戶端無需認證即可訪問etcd。
      • 注意:在生產環境中不建議啟用此選項,因為會降低安全性。
  • ETCD_HEARTBEAT_INTERVAL=200
    • 作用:設定Leader節點向Follower節點傳送心跳的間隔時間(單位:毫秒)。
    • 說明:
      • 這裡設定為200毫秒。
      • 心跳間隔越短,Leader和Follower之間的通訊越頻繁,但也會增加網路負載。
  • ETCD_ELECTION_TIMEOUT=1000
    • 作用:設定Follower節點在多久未收到Leader心跳後開始選舉(單位:毫秒)。
    • 說明:
      • 這裡設定為1000毫秒。
      • 如果Follower在1秒內未收到Leader的心跳,會觸發新的Leader選舉。
  • ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
    • 作用:設定叢集的唯一識別符號。
    • 說明:
      • 這裡設定為etcd-cluster
      • 這個令牌用於防止不同叢集之間的節點意外加入。
  • ETCD_LOGGER=zap
    • 作用:設定etcd的日誌記錄器。
    • 說明:
      • 這裡使用zap作為日誌記錄器。
      • zap是一個高效能的日誌庫,適合生產環境使用。

建立資料夾

mkdir etcd1-data
mkdir etcd2-data
mkdir etcd3-data
chmod 777 etcd1-data
chmod 777 etcd2-data
chmod 777 etcd3-data

啟服務

docker compose up -d

使用

基本用法

設定鍵值對

命令: etcdctl put <key> <value>
功能: 將指定的值儲存到指定的鍵中。如果鍵已存在,則覆蓋原有值。
示例:

$ ./etcdctl --endpoints=127.0.0.1:2379 --user=root --password="111111" get foo
# foo
# bar

獲取鍵值對

命令: etcdctl get <key>
功能: 獲取指定鍵的值。
示例:

$ ./etcdctl --endpoints=127.0.0.1:2379 --user=root --password="111111" put foo bar
# OK

刪除鍵值對

命令: etcdctl del <key>
功能: 刪除指定的鍵。
示例:

$ ./etcdctl --endpoints=127.0.0.1:2379 --user=root --password="111111" del foo
# 1
$ ./etcdctl --endpoints=127.0.0.1:2379 --user=root --password="111111" get foo
# (無輸出,鍵已刪除)

監聽鍵變化

命令: etcdctl watch <key>
功能: 監聽指定鍵的變化,當鍵的值發生變化時,輸出新值。
示例:

./etcdctl --endpoints=127.0.0.1:2379 --user=root --password="111111" watch foo
# PUT
# foo
# bar

事務操作

命令: etcdctl txn
功能: 執行原子事務操作。事務由條件、成功時的操作和失敗時的操作組成。
示例:

./etcdctl --endpoints=127.0.0.1:2379 --user=root --password="111111" txn <<<'mod("key1") > "0"

put key1 "overwrote-key1"

put key1 "created-key1"
put key2 "some extra key"

'
# FAILURE
# OK
# OK

租約管理

命令: etcdctl lease grant <ttl>
功能: 建立一個租約,租約會在指定的 TTL(生存時間)後自動過期。
示例:

./etcdctl --endpoints=127.0.0.1:2379 --user=root --password="111111" lease grant 60
# lease 32695410dcc0ca06 granted with TTL(60s)
./etcdctl --endpoints=127.0.0.1:2379 --user=root --password="111111" put foo bar --lease=32695410dcc0ca06
# OK

管理

檢查叢集健康狀態

endpoint health

./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" --write-out=table endpoint health

引數

  • --endpoints:用於指定 etcd 叢集中的一個或多個節點的地址。etcdctl 會透過這些地址與叢集進行互動。
  • --user:使用者名稱(如果設定了認證)
  • --password:密碼。如果設定了密碼
  • --write-out:輸出格式
    格式 可讀性 機器可解析性 適用場景
    simple 日常命令列操作,快速檢視結果
    json 自動化指令碼或與其他工具整合
    protobuf 高效能場景,程式間通訊
    fields 提取特定欄位,適合命令列工具解析
    table 檢視結構化資料,適合人類閱讀

結果

+----------------+--------+------------+-------+
|    ENDPOINT    | HEALTH |    TOOK    | ERROR |
+----------------+--------+------------+-------+
| 127.0.0.1:2379 |   true | 4.635238ms |       |
| 127.0.0.1:2479 |   true | 8.458422ms |       |
| 127.0.0.1:2579 |   true | 7.839896ms |       |
+----------------+--------+------------+-------+

不同格式的輸出

# simple格式
$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" --write-out=simple endpoint health
127.0.0.1:2479 is healthy: successfully committed proposal: took = 4.042917ms
127.0.0.1:2379 is healthy: successfully committed proposal: took = 7.616517ms
127.0.0.1:2579 is healthy: successfully committed proposal: took = 5.400498ms


# json格式
$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" --write-out=json endpoint health
[{"endpoint":"127.0.0.1:2579","health":true,"took":"3.930839ms"},{"endpoint":"127.0.0.1:2479","health":true,"took":"1.145915ms"},{"endpoint":"127.0.0.1:2379","health":true,"took":"1.741041ms"}]


# fields格式
$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" --write-out=fields endpoint health
"Endpoint" : "127.0.0.1:2479"
"Health" : true
"Took" : 2.127138ms
"Error" : 

"Endpoint" : "127.0.0.1:2579"
"Health" : true
"Took" : 4.811186ms
"Error" : 

"Endpoint" : "127.0.0.1:2379"
"Health" : true
"Took" : 1.630513ms
"Error" : 

檢查端點狀態

endpoint status

$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" --write-out=table endpoint status
+----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
|    ENDPOINT    |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| 127.0.0.1:2379 | ade526d28b1f92f7 |  3.5.17 |   16 MB |     false |      false |        69 |     119394 |             119394 |        |
| 127.0.0.1:2479 | d282ac2ce600c1ce |  3.5.17 |   16 MB |      true |      false |        69 |     119395 |             119395 |        |
| 127.0.0.1:2579 | bd388e7810915853 |  3.5.17 |   16 MB |     false |      false |        69 |     119396 |             119396 |        |
+----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

列出叢集成員

member list

$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" --write-out=table  member list
+------------------+---------+-------+-------------------+-------------------+------------+
|        ID        | STATUS  | NAME  |    PEER ADDRS     |   CLIENT ADDRS    | IS LEARNER |
+------------------+---------+-------+-------------------+-------------------+------------+
| ade526d28b1f92f7 | started | etcd1 | http://etcd1:2380 | http://etcd1:2379 |      false |
| bd388e7810915853 | started | etcd3 | http://etcd3:2380 | http://etcd3:2379 |      false |
| d282ac2ce600c1ce | started | etcd2 | http://etcd2:2380 | http://etcd2:2379 |      false |
+------------------+---------+-------+-------------------+-------------------+------------+

還有其他 叢集成員相關的命令

命令 功能描述
member add 向叢集中新增新成員
member remove 從叢集中移除成員
member update 更新叢集成員的 peer URLs
# 向叢集中新增一個新成員。
$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" member add newMember --peer-urls=http://127.0.0.1:12380
# Member ced000fda4d05edf added to cluster 8c4281cc65c7b112

# 從叢集中移除一個成員
$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" member remove 2be1eb8f84b7f63e
# Member 2be1eb8f84b7f63e removed from cluster ef37ad9dc622a7c4

# 更新叢集中某個成員的 peer URLs
$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" member update 2be1eb8f84b7f63e --peer-urls=http://127.0.0.1:12381
# Member 2be1eb8f84b7f63e updated in cluster ef37ad9dc622a7c4

檢查鍵值儲存的雜湊值

endpoint hashkv

$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" --write-out=table endpoint hashkv
+----------------+------------+
|    ENDPOINT    |    HASH    |
+----------------+------------+
| 127.0.0.1:2379 | 3110076216 |
| 127.0.0.1:2479 | 3110076216 |
| 127.0.0.1:2579 | 3110076216 |
+----------------+------------+

列出所有警報

alarm list

$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" --write-out=json alarm list
{"header":{"cluster_id":10316109323310759371,"member_id":12530464223947363063,"revision":119033,"raft_term":69}}
命令 功能描述
alarm disarm 解除所有警報
move-leader 將叢集的領導權轉移到指定的成員。
#  解除所有警報。
$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" alarm disarm
# alarm:NOSPACE

# 將叢集的領導權轉移到指定的成員
$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" move-leader c89feb932daef420
# Leadership transferred from 45ddc0e800e20b93 to c89feb932daef420

檢查叢集效能

check perf --load="s"

$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" check perf --load="s"
 59 / 60 Boooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooom  !  98.33%
PASS: Throughput is 149 writes/s
PASS: Slowest request took 0.116064s
PASS: Stddev is 0.016313s
PASS

解讀

  • Throughput: 吞吐量(每秒寫入次數)。
  • Slowest request: 最慢請求的耗時。
  • Stddev: 請求耗時的標準差。

還有其他引數

  • --load
    作用: 指定效能測試的工作負載模型。
    可選值:
    負載型別 描述 適用場景
    s 小負載(Small) 小負載,模擬少量併發請求 測試叢集的基本效能
    m 中負載(Medium) 中負載,模擬中等併發請求 測試叢集的中等壓力錶現
    l 大負載(Large) 大負載,模擬高併發請求 測試叢集的高壓力錶現
    xl 超大負載(XLarge) 超大負載,模擬極高併發請求 測試叢集的極限效能
  • --prefix
    作用: 指定效能測試中寫入的鍵的字首。
    --prefix="/test"
  • --auto-compact
    作用: 在效能測試完成後,自動壓縮儲存(刪除舊版本資料)。
    預設值: false。--auto-compact=true
  • --auto-defrag
    作用: 在效能測試完成後,自動進行資料碎片整理(釋放磁碟空間)。
    預設值: false。 --auto-defrag=true
命令 功能描述
check datascale 檢查叢集在不同工作負載下的記憶體使用情況

快照和備份

儲存快照

儲存當前叢集的快照到檔案

snapshot save

./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" snapshot save snapshot.db

恢復快照

從快照檔案恢復叢集資料
snapshot restore

$ ./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" snapshot restore snapshot.db --initial-cluster-token etcd-cluster --initial-advertise-peer-urls http://127.0.0.1:2379 --name etcd1 --initial-cluster 'etcd1=http://127.0.0.1:2379,etcd2=http://127.0.0.1:2479,etcd3=http://127.0.0.1:2579'
  • --initial-cluster-token:指定新叢集的唯一識別符號(Token),用於區分不同的叢集
  • --initial-advertise-peer-urls:指定當前節點的 peer URLs,用於叢集內部通訊
  • --name:指定當前節點的名稱
  • --initial-cluster:指定新叢集的初始成員列表,格式為 <name1>=<peer-url1>,<name2>=<peer-url2>,...

檢視快照資訊

snapshot status

./etcdctl --endpoints=127.0.0.1:2379,127.0.0.1:2479,127.0.0.1:2579 --user=root --password="111111" snapshot status file.db
# cf1550fb, 3, 3, 25 kB

相關文章