首页 > 其他分享 >评估 Etcd 性能及可靠性

评估 Etcd 性能及可靠性

时间:2023-06-20 20:56:52浏览次数:41  
标签:可靠性 etcd Etcd -- benchmark CERT HOST ETCD 评估

评估 Etcd 性能及可靠性

SLI & SLO

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

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

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

SLISLO测试方式
吞吐量:衡量etcd每秒可以处理的请求数量 每秒处理40,000个读取请求和20,000个写入请求 官方 benchmark
响应时间:衡量etcd对于读取和写入请求的响应时间 99%的读写请求在100毫秒以内完成 官方 benchmark
可用性:衡量etcd服务的持续可用性 服务在任何给定的月份内可用性达到99.9% 故障演练

目前已有 SLI 指标的收集、监控、展示及告警

测试

使用 benchmark 测试延迟和吞吐量

环境准备

在 Linux 主机安装 Go 环境

下载解压

wget https://golang.google.cn/dl/go1.19.10.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.19.10.linux-amd64.tar.gz

配置到PATH环境变量

/etc/profile 文件追加如下内容

export PATH=$PATH:/usr/local/go/bin
export GOPROXY=https://goproxy.cn

最后 source 生效

source /etc/profile

安装 benchmark 工具

clone 代码,安装 benchmark

git clone https://github.com/etcd-io/etcd.git --depth 1
cd etcd/
go install -v ./tools/benchmark
# 找到二进制文件位置
go list -f "{{.Target}}" ./tools/benchmark

基准测试

查看帮助

cd /root/go/bin/
./benchmark -h

配置变量

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
HOST_2=https://xxx.xxx.xxx.xxx:2379
HOST_3=https://xxx.xxx.xxx.xxx:2379

# 提前写个测试 key
YOUR_KEY=foo
ETCDCTL_API=3 /usr/local/bin/etcdctl --endpoints=${HOST_1},${HOST_2},${HOST_3} --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" put $YOUR_KEY bar

写测试

# write to leader
./benchmark --endpoints=${HOST_2} --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" --target-leader --conns=1 --clients=1 \
    put --key-size=8 --sequential-keys --total=10000 --val-size=256
./benchmark --endpoints=${HOST_2} --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" --target-leader  --conns=100 --clients=1000 \
    put --key-size=8 --sequential-keys --total=100000 --val-size=256
   
# write to all members
./benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" --conns=100 --clients=1000 \
  put --key-size=8 --sequential-keys --total=100000 --val-size=256

 

Number of keysKey size in bytesValue size in bytesNumber of connectionsNumber of clientsTarget etcd serverAverage write QPS99% latency per request
10,000 8 256 1 1 leader only 154 14.8ms
100,000 8 256 100 1000 leader only 14,567 134.4ms
100,000 8 256 100 1000 all members 17,018 117ms

 

读测试

# Single connection read requests
./benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" --conns=1 --clients=1 \
  range $YOUR_KEY --consistency=l --total=10000
./benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" --conns=1 --clients=1 \
  range $YOUR_KEY --consistency=s --total=10000

# Many concurrent read requests
./benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" --conns=100 --clients=1000 \
  range $YOUR_KEY --consistency=l --total=100000
./benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" --conns=100 --clients=1000 \
  range $YOUR_KEY --consistency=s --total=100000

 

Number of requestsKey size in bytesValue size in bytesNumber of connectionsNumber of clientsConsistencyAverage read QPS99% latency per request
10,000 8 256 1 1 Linearizable 509 7.3ms
10,000 8 256 1 1 Serializable 1,709 1.7ms
100,000 8 256 100 1000 Linearizable 29,326 104.8ms
100,000 8 256 100 1000 Serializable 43,469 98.9ms

使用 FIO 测试磁盘性能

Etcd 对内存和 CPU 消耗并不高,足够就行。

一次 Etcd 请求的最小时间 = 成员节点之间的网络往返时延 + 收到数据之后进行持久化的时延。因此,Etcd 的性能主要受两方面的约束:

  • 网络

  • 磁盘

多节点的 Etcd 集群成员节点应该尽量部署在同一个数据中心,减少网络时延。同一数据中心内,不同节点的网络情况通常是非常好的,如果需要测试可以使用 pingtcpdump 命令进行分析。

下面主要讨论硬盘 IO 测试方法。

存储性能能够满足 etcd 的性能要求,有两种方法测试:

存储性能能够满足 etcd 的性能要求,有两种方法测试:

  1. 已运行的 etcd 集群,通过指标etcd_disk_wal_fysnc_duration_seconds来评估存储 I/O 性能, 该指标记录了 WAL 文件系统调用 fsync 的延迟分布,当 99% 样本的同步时间小于 10 毫秒就可以认为存储性能能够满足 etcd 的性能要求。

  2. 是用 fio 命令,还原 etcd 使用场景,看99线

    mkdir test-data 
    fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300 --name=mytest

     

故障演进测试可用性

通过故障演练,发现3节点集群,在停止一个 etcd 节点的 etcd 进程后,其他 etcd 节点能够顺利接管其工作,确保 Kubernetes 集群的正常运行。

为了增强可用性,将集群节点由3节点扩充到5节点,最多允许2节点异常,仍可保障集群正常工作。

优化方案

换 SSD 盘

给定较高的磁盘优先级

# best effort, highest priority
$ sudo ionice -c2 -n0 -p `pgrep etcd`

 

参考链接:

etcd 官方文档-tunning

etcd 官方文档-硬件要求

etcd 官方文档-benchmark

使用fio测试etcd是否满足要求

标签:可靠性,etcd,Etcd,--,benchmark,CERT,HOST,ETCD,评估
From: https://www.cnblogs.com/clay-wangzhi/p/17494702.html

相关文章

  • Xilinx XCZU7EV评估板规格书(四核ARM Cortex-A53 + 双核ARM Cortex-R5 + FPGA,主频1.5GH
    1评估板简介创龙科技TLZU-EVM是一款基于XilinxUltraScale+MPSoC系列XCZU7EV高性能处理器设计的高端异构多核SoC评估板,处理器集成PS端(四核ARMCortex-A53+双核ARMCortex-R5)+PL端UltraScale+架构可编程逻辑资源,支持[email protected]/H.265视频硬件编解码,并支持SATA大容量存储......
  • RabbitMQ高级之消息可靠性投递
    什么是可靠性投递?生产者:作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ为我们提供了两种方式用来控制消息的投递可靠性模式。分别是:confirm确认模式return退回模式消息投递路线如下所示是生产者到消费者的模型:RabbitMQ的整个消息投递的路径Produc......
  • Etcd 高可用故障演练
    Etcd高可用故障演练目的本次演练旨在测试Kubernetes的etcd高可用性,检验是否能够在其中一个etcd节点发生故障的情况下,其他etcd节点能够接管其工作,确保集群仍能正常运行。集群架构演练场景在一个三节点的Kubernetes集群中,我们将模拟其中一个etcd节点的故障,观察剩......
  • PDD200A101用性以及实时性、可互操作性、可靠性、抗干扰性
    PDD200A101用性以及实时性、可互操作性、可靠性、抗干扰性PDD200A101用性以及实时性、可互操作性、可靠性、抗干扰性  工业以太网是应用于工业控制领域的以太网技术,在技术上与商用以太网(即IEEE802.3标准)兼容,但是实际产品和应用却又完全不同。这主要表现普通商用以太网的产......
  • 【资料分享】全志科技T507-H评估板规格书(4核ARM Cortex-A53,主频1.416GHz)
    1评估板简介创龙科技TLT507-EVM是一款基于全志科技T507-H处理器设计的4核ARMCortex-A53国产工业评估板,主频高达1.416GHz,由核心板和评估底板组成。核心板CPU、ROM、RAM、电源、晶振等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产工业级方案。......
  • ETCD连接报错:database space exceeded
    ETCD连接报错:databasespaceexceeded一:背景此etcd不是k8s集群中的etcd,是kuboard中使用etcd报错,kuboard稳定运行了一年多,上周还正常访问,今天上班访问kuboard报错,然后顺着排查发现kuboard中使用了etcd(之前一直没注意),查看kuboard日志,发现如下报错信息:二:报错分析:大致意思就是kubo......
  • Etcd 概述
    Etcd概述什么是Etcd?Etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,Etcd基于Go语言实现。名字由来,它源于两个方面,unix的“/etc”文件夹和分布式系统(“D”istributesystem)的......
  • 基于DAD-3DHeads 的特征点标记、姿态评估、头部3D对齐Demo
    写在前面工作中遇到,简单整理,博文为DAD-3DHeads特征点标记、姿态评估、头部3D对齐Demo理解不足小伙伴帮忙指正不被喜欢的姑娘喜欢,是一件很伤心的事情,可天没有塌下来,该怎么活,还得怎么活。——烽火戏诸侯《剑来》环境安装克隆项目https://github.com/PinataFarms/DAD-3DHeads.git......
  • 安全可信 | 首批!天翼云边缘安全加速平台AccessOne通过信通院“软件自研创新能力”专项
    近日,中国信息通信研究院(以下简称“中国信通院”)公布“软件自研创新能力”专项评估(简称“可信研创”)结果,天翼云边缘安全加速平台AccessOne顺利通过评估,成为首批通过该项评估的云服务商。“软件自研创新能力”专项评估旨在通过源码级别的开源同源匹配技术,分析软件产品的代码组成成分,......
  • 商用密码应用安全性评估
    了解密评,参考:https://www.zxcsec.com/Assessment.html什么是商用密码应用安全性评估?商用密码应用安全性评估(简称“密评”)是指对采用商用密码技术、产品和服务集成建设的网络和信息系统密码应用的合规性、正确性、有效性进行评估。国家法律法规依照《中华人民共和国密码法》......