etcd 2.1发布,可不宕机滚动升级

简介: 本文讲的是etcd 2.1发布,可不宕机滚动升级,【编者的话】etcd是一个用于配置共享和服务发现的高性能的键值存储系统。在2.0版本发布半年之后,etcd终于发布了新的2.1版本,2.1修复了2.0中的众多BUG,并引入了很多新功能,如在线不中断更新与新的鉴权API等众多改进与新功能。
本文讲的是etcd 2.1发布,可不宕机滚动升级, 【编者的话】etcd是一个用于配置共享和服务发现的高性能的键值存储系统。在2.0版本发布半年之后,etcd终于发布了新的2.1版本,2.1修复了2.0中的众多BUG,并引入了很多新功能,如在线不中断更新与新的鉴权API等众多改进与新功能。

经过数月的艰苦工作,etcd 2.1终于发布了。自从1月份2.0版本发布以来,整个研发团队收集了很多非常有价值的反馈,而且这些反馈都来自于真实生产环境。在这些反馈的基础上,我们发布了新的2.1版本,新功能包括:鉴定/授权API、新的监控API、提升了传输的稳定性、改进了etcd服务器集群之间传输数据的性能、增强了集群的运行稳定性。

快速回顾下,我们发现etcd是一个开源的、分布式的、基于持续键值对存储的服务器集群共享配置、服务发现以及服务节点调度解决方案。使用etcd,即使面对单个服务器失效,应用依然可以继续运行。同时etcd也是CoreOS的核心组件,它为CoreOS带来了安全的自动更新、主机调度的协调工作以及容器的覆盖网络(overlay)等功能。

如果你觉得看简介比较繁琐,你可以在 GitHub上 下载我们最新的二进制文件。同时,etcd 2.1.1已经包含在了CoreOS 725.1.0中了(现在在alpha通道中),所以你可以自己下载去玩。

从2.0版不宕机滚动升级

从2.0版升级到2.1版是一个零宕机滚动升级过程。你可以根据向导提示,将集群一步步从2.0升级到2.1。详细信息可以参考 升级文档 。如果你当前运行的版本低于0.4.x,那么你必须先升级到2.0,然后从2.0版升级到2.1。

同时,随着版本的发布,etcd 2.1是目前最稳定的etcd版本,所以所有的bug修改都会以2.1.x版本为基础,不再针对之前的2.0.x版本发布修改。

发布鉴权API

这个版本的一个重要特性是 /v2/auth 端,为etcd的键值对API加入了鉴权功能。这个API允许为用户和角色加key前缀,并且允许用户使用HTTP基本认证功能,这样可以使团队合作更加可控。这个功能包含在etcd的HTTP Server、etcdctl命令行客户端以及 etcd/client 的Go开发包中。你可以在etcd 权限管理文档 中找到更多的细节。但是还是要注意,这是个实验性的功能,而且会随着用户的反馈而不断改进。我想我们的方向是正确的,但是对于API的细节可能会发生调整。

提升传输稳定性

很多使用etcd的用户所在的网络环境不是很好,包括高延迟、网络数据不一致等问题比较多。我们虽然不能保证etcd可以应付所有复杂的网络环境,但是我们在这一版中对etcd在使用网络方面做了很多优化,使得etcd在复杂网络环境情况下能够更好的工作。

首先,我们减少了建立连接的开销,同时使得一致性协议(raft)的通信更加高效与稳定,现在etcd的节点之间通过长连接来进行通信。其次,减少raft命令的提交延迟,现在每个raft附加消息(append massage)都附属在一个提交索引(commit index)之下。在轻负荷(<100写操作/秒)情况下提交延迟由100ms减少到1ms。最后, etcd的raft实现 能提供更好的内部数据流转控制,显著的减少了raft消息丢包的情况同时还改进了CPU与内存的使用效率。

对etcd进行功能性测试

我们在发布2.1之前的4个月里,在自建的 故障注入 (fault-injecting)型功能测试框架里运行etcd,来对etcd做严格测试。我们的目标是让etcd在重度使用的情况下仍能够保持功能上的容错性;在这几个月的测试中,我们发现etcd能够在很多极其严苛与各种功能失效的情况下保持服务的鲁棒性。而且我们会在2.1发布之后持续对etcd进行测试。

改进了日志功能

现在支持分级日志了。用户根据业务需要设置日志级别。同时对于DEBUG级别的日志我们会重复啰嗦的记录几遍,所以etcd的默认日志的可读性会提高很多。你可以通过设置flag来控制日志的级别,参考 这里

新的监控API

etcd 2.1发布了新的 监控API ,并可以用于排错(debug)与实时(real-time)的监控。它提供了对客户端使用情况与资源利用方面的统计功能。向之前的鉴权API一样,这个也是实验性的功能,可能会根据反馈进行调整、改进。

开始使用吧

我们会一如既往的把etcd打造成一个Google风格的底层的基础工具,用户可以开箱即用、信任它并且依赖它提供的服务。 开始使用etcd吧 ,持续为我们提供您的反馈, 甚至可以直接贡献代码

--------------------------------------------------
原文链接:Introducing etcd 2.1 (翻译:肖劲 审校:魏小红)

原文发布时间为:2015-07-29
本文作者:amwtke
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:etcd 2.1发布,可不宕机滚动升级
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6月前
|
Kubernetes 容器 Perl
kubeadm初始化k8s集群延长证书过期时间
kubeadm初始化k8s集群延长证书过期时间
|
27天前
|
Kubernetes Shell Docker
ChaosBlade设置问题之无法设置加压时间如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
|
1月前
|
Kubernetes 容器
k8s集群部署成功后某个节点突然出现notready状态的问题原因分析和解决办法
k8s集群部署成功后某个节点突然出现notready状态的问题原因分析和解决办法
15 0
|
6月前
|
Kubernetes 网络协议 容器
k8s搭建集群报错汇总—202302【更新】
k8s搭建集群报错汇总—202302【更新】
|
4月前
|
Ubuntu 测试技术 Linux
|
4月前
|
应用服务中间件 数据安全/隐私保护
请教一个问题,阿里云的edas每次发版,都会有几个版本的deployment的版本存在,怎么设置自动只保留5个版本的啊?
请教一个问题,阿里云的edas每次发版,都会有几个版本的deployment的版本存在,怎么设置自动只保留5个版本的啊?
31 2
|
4月前
|
Kubernetes Perl 容器
OpenKruise中的CloneSet主要用于Pod的自动扩缩容和滚动更新
OpenKruise中的CloneSet主要用于Pod的自动扩缩容和滚动更新
30 1
|
4月前
|
Kubernetes Cloud Native 调度
k8s 服务升级为啥 pod 会部署到我们不期望的节点上??看来你还不懂污点和容忍度
k8s 服务升级为啥 pod 会部署到我们不期望的节点上??看来你还不懂污点和容忍度
|
11月前
|
存储 监控 Kubernetes
如何以零停机时间或最少停机时间更新 Docker 容器,来确保应用程序持续可用
如何以零停机时间或最少停机时间更新 Docker 容器,来确保应用程序持续可用
248 0
|
Kubernetes 算法 应用服务中间件
Kubernetes:应用自动扩容、收缩与稳定更新
Kubernetes:应用自动扩容、收缩与稳定更新
429 0