跳至主要內容
Etcd 概述及运维实践

Etcd 概述及运维实践

Etcd 概述

什么是 Etcd ?

Etcd 是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,Etcd基于 Go 语言实现。

名字由来,它源于两个方面,unix的“/etc”文件夹和分布式系统(“D”istribute system)的D,组合在一起表示etcd是用于存储分布式配置的信息存储服务。


Clay原创大约 12 分钟云原生etcd
Etcd 故障排查

Etcd 故障排查

Etcd 磁盘空间爆满解决方案

etcd默认的空间配额限制为2G,超出空间配额限制就会影响服务,所以需要定期清理

设置环境变量

ETCD_CA_CERT="/etc/kubernetes/pki/etcd/ca.crt"
ETCD_CERT="/etc/kubernetes/pki/etcd/server.crt"
ETCD_KEY="/etc/kubernetes/pki/etcd/server.key"
HOST_1=https://xxx.xxx.xxx.xxx:2379

Clay大约 2 分钟云原生etcd
Etcd 概述

Etcd 概述

什么是 Etcd ?

Etcd 是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,Etcd基于 Go 语言实现。

名字由来,它源于两个方面,unix的“/etc”文件夹和分布式系统(“D”istribute system)的D,组合在一起表示etcd是用于存储分布式配置的信息存储服务。

Kubernetes 为什么用 Etcd ?

2014年6月,Google的Kubernetes项目诞生了,我们前面所讨论到Go语言编写、etcd高可用、Watch机制、CAS、TTL等特性正是Kubernetes所需要的,它早期的0.4版本,使用的正是etcd v0.2版本。


Clay大约 5 分钟云原生etcd
Etcd 基准测试

Etcd 基准测试

SLI & SLO

SLI(Service Level Indicator):服务等级指标,其实就是我们选择哪些指标来衡量我们的稳定性。

SLO(Service Level Objective):服务等级目标,指的就是我们设定的稳定性目标,比如“几个 9”这样的目标。

SLO 是 SLI 要达成的目标,我们需要选择合适的 SLI,设定对应的 SLO。

SLI SLO 测试方式
吞吐量:衡量etcd每秒可以处理的请求数量 每秒处理40,000个读取请求和20,000个写入请求 官方 benchmark
响应时间:衡量etcd对于读取和写入请求的响应时间 99%的读写请求在100毫秒以内完成 官方 benchmark

Clay大约 4 分钟云原生etcd
Etcd 监控

Etcd 监控

重点监控指标

指标分类

  • 健康状态
  • USE 方法(系统)
    • 使用率
    • 饱和度
    • 错误
  • RED 方法(应用)
    • 请求速率
    • 错误率
    • 延迟
指标分类 指标 释义
健康状态 实例健康状态 etcd是一个分布式系统,由多个成员节点组成。监控etcd成员节点的状态可以帮助你了解集群中节点的健康状况,发现掉线或者异常节点。
健康状态 主从状态
健康状态 etcd leader切换统计 频繁的领导者变更会严重影响 etcd 的性能。这也意味着领导者不稳定,可能是由于网络连接问题或对 etcd 集群施加的过载负荷导致的。
健康状态 心跳 etcd集群中的节点通过发送心跳来保持彼此之间的连接。监控丢失的心跳可以帮助你发现etcd节点之间的通信问题或者网络延迟。
RED 方法 QPS
RED 方法 请求错误率 监控etcd的错误率可以帮助你发现etcd操作中的潜在问题。高错误率可能表明集群遇到了故障或其他异常情况。
RED 方法 请求延迟 监控etcd的请求延迟可以帮助你了解API请求的处理时间。较高的延迟可能表明etcd正面临负载压力或性能问题。
RED 方法 磁盘同步(WAL/DB fsync)耗时 高磁盘操作延迟(wal_fsync_duration_seconds或backend_commit_duration_seconds)通常表示磁盘问题。它可能会导致高请求延迟或使群集不稳定。
RED 方法 同步延迟 如果集群正常运行,已提交的提案应该随着时间的推移而增加。重要的是要在集群的所有成员中监控这个指标;如果单个成员与其领导节点之间存在持续较大的滞后,这表明该成员运行缓慢或存在异常。
RED 方法 提案失败次数 失败的提案通常与两个问题相关:与领导选举相关的暂时性故障或由于集群丧失法定人数而导致的较长时间的停机。
RED 方法 快照处理时间 etcd定期创建快照以备份数据。监控快照处理时间可以帮助你了解etcd备份的性能,确保备份任务能够及时完成。
RED 方法 watcher 数量 监控etcd集群当前连接到etcd的客户端数量。如果连接数过高,可能需要调整etcd的配置或者增加集群的容量。
USE 方法 CPU 使用率
USE 方法 内存使用量
USE 方法 打开文件数
USE 方法 存储空间使用率 监控etcd存储空间的使用率可以帮助你确保etcd有足够的空间存储配置数据。如果使用率接近或达到上限,可能需要考虑扩展存储容量或者清理无用的数据。

Clay大约 4 分钟云原生etcd
Etcd 高可用故障演练

Etcd 高可用故障演练

目的

本次演练旨在测试 Kubernetes 的 etcd 高可用性,检验是否能够在其中一个 etcd 节点发生故障的情况下,其他 etcd 节点能够接管其工作,确保集群仍能正常运行。

集群架构

演练场景

在一个三节点的 Kubernetes 集群中,我们将模拟其中一个 etcd 节点的故障,观察剩余的 etcd 节点是否能够正常运行。


Clay大约 2 分钟云原生etcd