etcd集群常用操作

 

 

一、集群检查

注意:etcdctl 命令如果没有显式指定 --endpoints 参数,它会使用默认配置,而这个默认配置可能无法连接到集群的所有节点,结果是只会得到当前节点的信息

1、查看集群成员列表

etcdctl member list

 

image

 

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

 

image

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

 

image

 

二、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 # 只获取键名,不获取值

 

posted @ 2025-12-02 14:42  苦逼yw  阅读(1)  评论(0)    收藏  举报