k8s-10:ETCD 参数优化

具体参考官网:

https://github.com/etcd-io/etcd/tree/main/etcdctl

目前一切均是从官网查看下来的,不要看博客,不要看博客,不要看博客,博客好多是http环境,没有证书,而且命令好多是不能用的

以下配置参数是以192.168.50.92 作为例子,配置文件在

/data2/etcd/cfg/etcd.conf

1.修改内存限制

etcd默认内存是2G ,这是不够的,修改参数(4*1024*024*1024)

ETCD_QUOTA_BACKEND_BYTES="4294967296"

手动释放配额空间

如果在 ETCD 服务日志中看到类似以下的日志,那么说明 ETCD 配额空间可能已经满了,需要手动去清理并释放空间。

Error:  rpc error: code = 8 desc = etcdserver: mvcc: database space exceeded

  • 执行以下命令查看配额空间具体使用信息

ETCDCTL_API=3 /data/etcd/bin/etcdctl --cacert=/data/etcd/ssl/ca.pem --cert=/data/etcd/ssl/server.pem --key=/data/etcd/ssl/server-key.pem --endpoints=https://192.168.50.91:2379,https://192.168.50.92:2379  --write-out=table endpoint status

 

获取当前的修订版本

ETCDCTL_API=3 /data/etcd/bin/etcdctl --cacert=/data/etcd/ssl/ca.pem --cert=/data/etcd/ssl/server.pem --key=/data/etcd/ssl/server-key.pem --endpoints=https://192.168.50.91:2379 endpoint status --write-out="json"  | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*'

rev=$(ETCDCTL_API=3 /data/etcd/bin/etcdctl --cacert=/data/etcd/ssl/ca.pem --cert=/data/etcd/ssl/server.pem --key=/data/etcd/ssl/server-key.pem --endpoints=https://192.168.50.91:2379 endpoint status --write-out="json"  | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')

echo $rev

压缩所有旧的修订

ETCDCTL_API=3 /data/etcd/bin/etcdctl --cacert=/data/etcd/ssl/ca.pem --cert=/data/etcd/ssl/server.pem --key=/data/etcd/ssl/server-key.pem --endpoints=https://192.168.50.91:2379,https://192.168.50.92:2379 compact $rev

top或top 查看内存 即可

2.历史版本清理

--auto-compaction-mode

--auto-compaction-retention

ETCD 会存储多版本数据,随着写入的主键增加,历史版本将会越来越多,并且 ETCD 默认不会自动清理历史数据。数据达到 --quota-backend-bytes 设置的配额值时就无法写入数据,必须要压缩并清理历史数据才能继续写入。

为了避免配额空间耗尽的问题,在创建集群时候建议默认开启 历史版本清理 功能。

  • 3.3.0 之前的版本

    3.3.0 之前的版本,只能按周期 periodic 来压缩。比如设置 --auto-compaction-retention=72h,那么就会每 72 小时进行一次数据压缩。

  • 3.3.0 之后的版本

    比如在 v3.3.0, v3.3.1 和 v3.3.2 中,可以通过 --auto-compaction-mode 设置压缩模式,可以选择 revision 或者 periodic 来压缩数据,默认为 periodic

这里设置:

ETCD_AUTO_COMPACTION_RETENTION="1H" (默认压缩是periodic)

3.Raft 日志保留

--snapshot-count 指定有多少条事务(transaction)被提交时,触发快照保存到磁盘。在存盘之前,Raft 条目将一直保存在内存中。

从 v3.2 版本开始,--snapshot-count 条数从 10000 改为 100000,因此这将占用很大一部分内存资源。

如果节点总内存资源不多,或者是单 etcd 实例运行,则可以把 --snapshot-count 适当的缩减,比如设置为 --snapshot-count=50000

ETCD_SNAPSHOT_COUNT="50000"

4.--max-request-bytes

etcd Raft消息最大字节数,ETCD默认该值为1.5M; 但是很多业务场景发现同步数据的时候1.5M完全没法满足要求,所以提前确定初始值很重要;

 但是官方推荐的是10M,可以根据业务情况自己调整,这里是15M

ETCD_MAX_REQUEST_BYTES=15728640

5.quota-backend-bytes 默认是0,当后端大小超过给定的配额时发出报警,如果键空间的任何成员的后端数据库超过了空间配额, etcd 发起集群范围的警告,让集群进入维护模式,仅接收键的读取和删除。在键空间释放足够的空间之后,警告可以被解除,而集群将恢复正常运作。这里选用的是默认的

env variable: ETCD_QUOTA_BACKEND_BYTES

6.heartbeat-interval  默认是100,客户端连接后的心跳间隔(毫秒) 比较短,建议改成600

ETCD_SNAPSHOT_COUNT=600

7.election-timeout  默认是1000 集群选举的超时时间

env variable: ETCD_ELECTION_TIMEOUT

8.max-snapshots 默认是5  要保留的快照文件的最大数量,0是无限制。Windows用户的默认值是无限制的,官方建议设置5以下的值,但是自己写的脚本比较好

ETCD_MAX_SNAPSHOTS

修改后重启etcd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值