我们查询故障 etcd 集群近几天的发布记录时发现,故障前一天对该集群进行的一次发布中,由于之前 dbsize 配置不合理,导致 db 被写满,集群无法写入新的数据,为此运维人员更新了集群 dbsize 和 compaction 相关配置,并重启了 etcd。重启后,运维同学继续对 etcd 手动执行了 compact 和 defrag 操作,来压
我们查询故障 etcd 集群近几天的发布记录时发现,故障前一天对该集群进行的一次发布中,由于之前 dbsize 配置不合理,导致 db 被写满,集群无法写入新的数据,为此运维人员更新了集群 dbsize 和 compaction 相关配置,并重启了 etcd。重启后,运维同学继续对 etcd 手动执行了 compact 和 defrag 操作,来压缩 db 空间。通过...
etcdctl defrag --endpoints 如果etcd没有运行,可以直接整理目录中db的碎片 etcdctl defrag --data-dir <path-to-etcd-data-dir> 碎片整理会阻塞对etcd的读写操作,因此偶尔一次大量数据的defrag最好逐台进行,以免影响集群稳定性。 etcdctl执行后的返回Finished defragmenting etcd member[https://127.0.0.1:2379] ...
重启后,运维同学继续对 etcd 手动执行了 compact 和 defrag 操作,来压缩 db 空间。 通过上述场景,我们可以初步判断出以下几个可疑的触发条件: dbsize 满 dbsize 和 compaction 配置更新 compaction 操作和 defrag 操作 重启etcd 出了问题肯定要能够复现才更有利于解决问题,正所谓能够复现的 bug 就不叫 bug。复现...
当数据量达到配额导致无法写入时,可以通过手动压缩(etcdctl compact)和整理碎片(etcdctl defrag)的方式来减少容量。强烈建议对 etcd 集群的节点逐个进行这些操作,否则可能会导致整个 etcd 集群不可用。 性能 etcd 提供强一致的读写访问,并且所有操作都会涉及到多机事务以及磁盘的数据持久化。建议使用高性能的 SSD ...
那么defrag是清理磁盘碎片,磁盘碎片清理还要其他操作,比如有compact命令,etcd是一个多版本的管理系统,在bolt db里面,它的所有的key都是version信息,所以它会有很多历史版本的信息,但是很多时候历史版本信息可能用不上了,这个时候我们希望它做一些压缩,那么它支持compact命令,让你指定reversion的版本,那么会将之前所有版本...
# Compact the database $ etcdctl --command-timeout=600s compact <rev_number> Defrag For Defrag of the etcd database, please refer to the "Manual defragmentation" section in the OpenShift 4 documentation:Defragmenting etcd data. To verify the defragmentation, check the "Diagnostic Steps" secti...
etcdctl compact 版本号 # 清理占用的系统存储空间 etcdctl defrag 自动压缩策略的2种模式 最佳实践 https://cloud.tencent.com/developer/article/1917040 1. 配置--auto-compaction-mode=periodic和--auto-compaction-retention=1参数 2. 推荐通过cronjob定期执行etcdctl defrag(如果执行时间> election timeout,那么集...
注意,compact 和 defrag 时, 都需要把集群中的所有 endpoint 添加上去, 否则不会减少磁盘空间 2、etcd权限管理 2.1 权限常用命令 2.1.1 用户管理 # 创建用户etcdctl user add fox# 删除用户etcdctl user del fox#修改密码etcdctl user passwd fox#查看所有用户etcdctl user list#查看指定用户及绑定角色etcdctl user...
最后,请求量的增长也加剧了 etcd 由于 compact、defrag 操作对请求 RT P99 的暴涨,甚至请求超时,从而导致集群关键组件调度器、CNI 服务等 Operator 类组件间断性丢失,造成集群不可用。 根据前人的经验,针对 etcd 集群进行数据水平拆分是一个有效的优化手段,典型的拆分是把 Pod 等重要数据单独 etcd 集群来存储,从而...