k8s-10:ETCD 参数优化
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 服务日志中看到类似以下的日志,那么说明 ETCD 配额空间可能已经满了,需要手动去清理并释放空间。
|
- 执行以下命令查看配额空间具体使用信息
|
获取当前的修订版本
|
压缩所有旧的修订
|
top或top 查看内存 即可
2.历史版本清理
|
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
。
这里设置:
|
3.Raft 日志保留
--snapshot-count
指定有多少条事务(transaction)被提交时,触发快照保存到磁盘。在存盘之前,Raft 条目将一直保存在内存中。
从 v3.2 版本开始,--snapshot-count
条数从 10000
改为 100000
,因此这将占用很大一部分内存资源。
如果节点总内存资源不多,或者是单 etcd 实例运行,则可以把 --snapshot-count
适当的缩减,比如设置为 --snapshot-count=50000
|
4.--max-request-bytes
etcd Raft消息最大字节数,ETCD默认该值为1.5M; 但是很多业务场景发现同步数据的时候1.5M完全没法满足要求,所以提前确定初始值很重要;
但是官方推荐的是10M,可以根据业务情况自己调整,这里是15M
|
5.quota-backend-bytes 默认是0,当后端大小超过给定的配额时发出报警,如果键空间的任何成员的后端数据库超过了空间配额, etcd 发起集群范围的警告,让集群进入维护模式,仅接收键的读取和删除。在键空间释放足够的空间之后,警告可以被解除,而集群将恢复正常运作。这里选用的是默认的
|
6.heartbeat-interval 默认是100,客户端连接后的心跳间隔(毫秒) 比较短,建议改成600
|
7.election-timeout 默认是1000 集群选举的超时时间
|
8.max-snapshots 默认是5 要保留的快照文件的最大数量,0是无限制。Windows用户的默认值是无限制的,官方建议设置5以下的值,但是自己写的脚本比较好
|
修改后重启etcd
更多推荐
所有评论(0)