一、集羣檢查
注意:etcdctl 命令如果沒有顯式指定 --endpoints 參數,它會使用默認配置,而這個默認配置可能無法連接到集羣的所有節點,結果是隻會得到當前節點的信息
1、查看集羣成員列表
etcdctl member list
2、查看集羣狀態
etcdctl --endpoints="http://member01.etcd-cluster-20230129.internal.shoplazza.site:2379,http://member02.etcd-cluster-20230129.internal.shoplazza.site:2379,http://member03.etcd-cluster-20230129.internal.shoplazza.site:2379" endpoint status
IS LEADER(是否為領導者)
- 含義:該節點當前是否是 Raft 協議的領導者
- 取值:
true:是領導者false:是跟隨者
- 重要性:
- 有且只有一個節點會是
true - 所有寫操作必須通過領導者
- 領導者負責日誌複製
IS LEARNER(是否為學習者)
- 含義:該節點是否是學習者(只讀副本)
- 取值:
true:學習者(不參與選舉,只同步數據)false:正式成員(參與選舉)
- 用途:
- 用於擴展讀取能力
- 降低新節點加入對集羣的影響
- 可作為故障轉移的備用節點
RAFT TERM(Raft任期)
- 含義:當前 Raft 選舉的任期編號
- 規則:
- 每次選舉後遞增
- 集羣中所有節點的 RAFT TERM 應該完全一致
- 如果不一致,説明發生了網絡分區或選舉問題
- 示例:
2表示這是第2個任期
RAFT INDEX(Raft日誌索引)
- 含義:當前最新的 Raft 日誌條目索引
- 特點:
- 單調遞增
- 反映寫入操作的次數
- 每次寫入都會增加這個值
- 用途:用於數據同步和一致性檢查
RAFT APPLIED INDEX(Raft已應用索引)
- 含義:已應用到狀態機的 Raft 日誌索引
- 重要性:
- 正常情況下,
RAFT INDEX≈RAFT APPLIED INDEX - 如果兩者差距很大,説明:
- 節點正在追趕數據
- 節點性能有問題
- 可能有網絡延遲
- 健康狀態:這個值應該和 RAFT INDEX 基本一致
ERRORS(錯誤信息)
- 含義:節點的錯誤狀態
- 通常為空:表示節點健康
- 可能的錯誤:
"NOSPACE":磁盤空間不足- 連接錯誤
- 心跳超時
- 重要性:任何非空值都表示節點有問題
3、查看集羣健康狀態
etcdctl --endpoints="http://member01.etcd-cluster-20230129.internal.shoplazza.site:2379,http://member02.etcd-cluster-20230129.internal.shoplazza.site:2379,http://member03.etcd-cluster-20230129.internal.shoplazza.site:2379" endpoint health
二、KV操作
注意:對於集羣來説,寫操作必須通過 Leader,Raft 協議要求所有寫操作必須由 Leader 發起,如果客户端連接了 Follower進行寫操作,Follower會轉發寫請求給Leader。結果是寫操作執行成功,但實際寫操作是Leader執行。
1、設置鍵值
# etcdctl put /key value
etcdctl put /t1 123
2、獲取鍵值
#etcdctl get /key
#etcdctl get /key --print-value-only # 只顯示值
#etcdctl get /key -w json # 獲取鍵值及詳細信息
#etcdctl get /prefix --prefix # 獲取前綴匹配的所有鍵
etcdctl get /t1
3、刪除鍵
#etcdctl del /key
#etcdctl del /prefix --prefix # 刪除前綴匹配的所有鍵
4、獲取所有鍵值或獲取所有鍵
#etcdctl get / --prefix # 獲取所有鍵(從根開始)
#etcdctl get / --prefix --keys-only=false # 獲取所有鍵和值
#etcdctl get / --prefix --keys-only # 只獲取鍵名,不獲取值
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。