蓝盟IT外包,Kubernetes记忆大脑的etcd

发布者:上海IT外包来源:http://www.lanmon.net点击数:1453

蓝盟IT小贴士,来喽!
etcd概述
etcd是一个统一、高可用性的键值数据库,可用于服务发现和配置中心。 ETCD采用raft一致性算法,基于Go语言实现。 作为可以存储Kubernetes所有集群数据的后台数据库,在整个云原生资源中起着极其重要的作用。
ectd  : v  3.4 ETCD文档地址:  https://etcd.io/docs/v3.4/
kubernetes中的etcd的体系结构
etcd包含k8s的所有元数据,非常重要,并再次阐明了etcd的最佳实践。
etcd的特点
扁平化的二进制键值空间
保留事件记录直到被压缩
访问旧版本的密钥
用户定义的密钥版本历史记录压缩
支持范围查询
带limit参数的分页支持
支持多范围查询的一致性保证
用租约替换TTL密钥
更高效、成本更低的keepalive
为不同的TTL密钥配置配置相同逻辑的租用
用多对象Txn替换CAS/CAD
更强大更灵活
支持多范围的高效watch
RPC  API支持完整的API集
比JSON/HTTP更有效
其他TXN/租赁支持
HTTP  API支持API子集。
用户容易尝试etcd
用户可以很容易地创建简单的etcd应用程序
执行etcd的建议
要运行的etcd集群的个数成员为奇数。
etcd是基于leader的分布式系统。 确认主节点定期向所有从节点发送心跳信号,以稳定集群。
充分确保资源。
集群的性能和稳定性对网络和磁盘IO非常敏感。 资源不足时,会发生心跳超时,集群变得不稳定。 如果不稳定,则表示未选择主节点。 在这种情况下,群集不能更改其当前状态。 也就是说,不能计划新的pod。
维持稳定的etcd集群对Kubernetes集群的稳定性至关重要。 因此,请在专用设备或隔离环境中运行etcd群集以满足所需的资源需求。
生产中的etcd最低推荐版本为3.2.10
硬件建议: https://ETCD.io/Docs/v  3.4/op-guide  /硬件/
etcd架构的实践为了性能和高可用性,etcd在生产环境中作为多节点群集运行,并定期进行备份。 建议在生产中使用五个成员的集群。 有关此内容的详细信息,请参见https://ETCD.io/docs/v3.4 /常见问题解答/#故障排除。
可以通过静态成员信息或动态发现来配置etcd群集。 有关集群的详细信息,请参阅https://etcd.io/docs/v3.4/op-guide/clustering  /。
etcd调谐指南
这次的调谐是针对etcd自身的参数对:进行调谐。
1 .时间相关参数
在大型etcd集群中,由于网络的复杂性,etcd本身的分布式共识协议受到影响,主要取决于两个时间参数。
第一个参数是heart  beat间隔。 领导用这个频率通知关注者它还是领导。 要获得最佳实践,必须围绕成员之间的往返时间设置参数。 缺省情况下,etcd使用100ms心跳间隔。
第二个参数是Election  Timeout。 这个超时时间意味着追随者节点在尝试成为领导者之前不听心跳信号要等多久。 默认情况下,etcd使用1000ms毫秒的选举超时。
调整这些值是一种折衷。 建议心跳间隔值接近成员间平均往返时间(RTT  )的最大值,通常约为往返时间的0.5-1.5倍。 如果心跳间隔太短,etcd会发送不必要的消息,从而增加CPU和网络资源的利用率。 另一方面,如果心跳间隔过高,选举超时时间就会增加。 选举超时时间越长,检测领导人失败的时间就越长。 测量往返时间(RTT  )的最简单方法是使用PING实用程序。
应该基于心跳间隔和成员之间的平均往返时间设定选举超时。 选举超时时间必须是往返时间的至少10倍,才能解决网络的差异。 例如,如果成员之间的往返时间为10毫秒,则选举超时必须至少为100毫秒。
选举超时上限为50000毫秒(50s  ),仅在部署分散在全世界的etcd集群时使用。
一个集群中所有成员的心跳间隔和选举超时值必须相同。 如果etcd成员设置不同的值,则可能会破坏集群的稳定性。
2 .快照
etcd将所有重要更改附加到日志文件中。 此日志始终较长,并且是对密钥所做的每个更改的完整线性历史记录。 完整的历史记录适合于经常使用的群集,但经常使用的群集有大量的日志。为了避免产生大量日志,etcd会定期拍摄快照。 这些快照为etcd提供了一种通过保存系统的当前状态和删除旧日志来压缩日志的方法。
由于使用V2后端拍摄快照可能会很昂贵,因此只能在对etcd进行了预定数量的更改之后拍摄快照。 默认情况下,每10,000次更改都会生成一个快照。
3 .磁盘
etcd集群对磁盘延迟非常敏感。 由于etcd必须将建议永久保存在日志中,因此其他进程的磁盘活动可能会增加fsync延迟。 etcd可能会错过心跳,失去请求超时和临时领导。 如果磁盘具有高优先级,etcd服务可能会与这些进程一起稳定运行。
4 .网络etcd读取器处理大量并发客户端请求时,由于网络拥塞,可能会延迟追随者对对等请求的处理。
5 .内存
etcd的默认存储大小限制为2GB,可以使用--quota-backend-bytes标志进行配置。 建议在正常环境下使用8GB的最大大小。 如果配置的值超过此值,etcd将在启动时发出警告。
6 .索赔体
etcd被设计用于处理元数据的键值对。 在较大要求变动的同时,其他要求的延迟可能会增加。 默认情况下,任何请求的最大大小为1.5 MiB。 可以在--max-request-bytesetcd服务器的标志中设置此限制。
7.key的历史压缩ETCD存储多个版本的数据。 随着写入的主键增加,历史版本增加,ETCD默认不会自动清除历史数据。 如果数据达到--quota-backend-bytes中设定的配额值,则无法写入数据,必须压缩并清除历史数据才能继续写入。
文/上海蓝盟  IT外包专家
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部