邵杰

Etcd是一个开源的分布式键值存储,由CoreOS团队开发,现在由Cloud Native Computing Foundation管理。这个词的读音是“et-cee-dee”,意思是在多台机器上分发Unix系统的“/etc”目录,其中包含大量全局配置文件。它是许多分布式系统的主干,并提供了一种跨服务器集群存储数据的可靠方法。它适用于各种操作系统,包括Linux、BSD和OS X..

Etcd具有以下属性:

完全复制:集群中的每个节点都可以使用完整的存档高可用性:Etcd可用于避免硬件的单点故障或网络问题一致性:每次读取都会返回跨多主机的最新写入简单:包括一个定义良好、面向用户的API(gRPC)安全:实现了带有可选的客户端证书身份验证的自动化TLS快速:每秒10000次写入的基准速度可靠:使用Raft算法实现了存储的合理分布

Etcd的工作原理

在了解Etcd的工作机制之前,我们先定义三个关键概念:领导、选举、任期。在基于raft的系统中,集群使用选举来选择给定任期的领导者。

领导者处理所有需要集群一致协商的客户请求。不需要协商一致的请求可以由任何集群成员处理。领导负责接受新的变更,将信息复制到跟随者节点,跟随者验证接受后提交变更。在任何给定时间,每个集群只能有一个领导者。

如果领导挂机或不再响应,其他节点将在预定时间到期后打开新的任期以创建新的选举。每个节点都维护一个随机选举计时器,该计时器指示节点在调用新的选举并选择自己作为候选人之前需要等待的时间。

如果节点在超时前没有收到领导的消息,节点将通过开始新的任期、标记自己为候选人并要求其他节点投票来开始新的选举。每个节点投票给第一个要求它投票的候选人。如果一个候选人从集群中的大多数节点获得选票,它就成为一个新的领导者。但是,如果有多个候选人,并且获得了相同的票数,现有的选举任期将在没有领导人的情况下结束,新的任期将以新的随机选举计时器开始。

如上所述,任何更改都必须连接到引线节点。Etcd不立即接受和提交更改,而是使用Raft算法来确保大多数节点同意更改。领导者向集群中的每个节点发送建议的新值。然后,节点发送一条消息,确认收到新值。如果大多数节点确认收到,领导者提交一个新值,并向每个节点发送一条消息,将该值提交到日志中。这意味着每一个更改都需要由集群节点进行仲裁,然后才能提交。

库本内特斯的Etcd

自2014年成为库本内特的一部分以来,Etcd社区呈现出指数级增长。CoreOS、Google、Redhat、IBM、思科、华为等都是Etcd的投稿会员。其中,AWS、Google云平台、Azure等大型云提供商已经在生产环境中成功使用了Etcd。

Etcd在Kubernetes的工作是为分布式系统安全地存储关键数据。它最著名的是Kubernetes的主数据存储,用于存储配置数据、状态和元数据。Kubernetes通常运行在几台机器的集群上,所以它是一个分布式系统,需要像Etcd一样的分布式数据存储。

Etcd使跨集群存储数据和监控变得更加容易,它允许Kubernetes集群中的任何节点读写数据。Kubernetes使用Etcd的监视功能来监控系统的实际或期望状态的变化。如果两个州不一样,Kubernetes会做一些改动来调和两个州。ku pect l命令的每次读取都是从存储在etcd中的数据中检索的,任何更改都会在Etcd中创建或更新条目,每次崩溃都会触发对Etcd中值的修改。

部署和硬件建议

Etcd可以在笔记本电脑或轻量级云上运行,用于测试或开发目的。但是在生产环境下运行Etcd集群时,要考虑Etcd官方文档提供的指导。它为良好稳定的生产部署提供了一个良好的起点。应该指出的是:

Etcd会将数据写入磁盘,因此强烈推荐使用SSD始终使用奇数个集群数量,因为需要通过仲裁来更新集群的状态出于性能考虑,集群通常不超过7个节点

让我们回顾一下在Kubernetes部署Etcd集群所需的步骤。之后,我们将演示一些基本的CLI命令和API调用。我们将使用库伯内特的概念进行部署,例如状态集和持久卷。

提前准备

在继续演示之前,我们需要准备:

一个谷歌云平台的账号:免费的tier应该足够了。你也可以选择大多数其他云提供商,只需进行少量修改即可。一个运行Rancher的服务器

启动牧场主实例

在您控制的服务器上启动Rancher实例。这里有一个非常简单直观的入门指南:https://rancher.com/quick-start/

与牧场主一起部署GKE集群

根据本指南,使用牧场主在GCP帐户中设置和配置库本内特集群:

https://rancher . com/docs/rancher/v2 . x/en/cluster-provisioning/hosted-kubernetes-clusters/gke/

在运行Rancher实例的同一服务器上安装Google Cloud SDK和kubelet命令。按照上面提供的链接,通过Rancher UI安装SDK和kubelet。

使用gcloud init和gcloud auth登录,以确保gcloud命令可以访问您的GCP帐户。

部署集群后,输入以下命令来检查基本kubectl函数:

应用以下YAML文件并更新区域值以匹配您的首选项,以便我们可以使用固态硬盘存储:

应用YAML文件后,我们可以在牧场主提供的不同选项卡中定义资源:

我们检查Etcd版本。为此,我们可以使用API或CLI。根据您选择的方法,输出结果会略有不同。

使用此命令直接联系应用编程接口:

检查应用编程接口版本为v2的etcdctl客户端,并输入:

要检查应用编程接口版本为v3的etcdctl客户端,请输入:

接下来,列出集群成员,如上所述:

{ " members ":," client URLs ":},{"id":"7fd61f3f79d97779 "," name":"etcd-1 "," peer URLs ":全部不可访问

成员7fd61f3f79d97779健康:从http://etcd-1.etcd:2379获得健康结果

成员b429c86e3cd4e077健康:从http://etcd-2获得健康结果,etcd:2379cluster已降级

命令以退出代码5终止

上述信息表明,由于丢失了引导节点,群集处于降级状态。

一旦Kubernetes通过启动新实例来响应已删除的pod,Etcd群集应该会恢复:

结论理论

Etcd是一个非常强大、高度可用和可靠的分布式键值存储,是专门为特定用例设计的。常见示例包括存储数据连接详细信息、缓存设置、功能标签等。它被设计成相同的顺序,所以整个集群中的每个事件都以相同的顺序存储。

在牧场主的帮助下,我们学习了如何在库本内斯的帮助下建立和运行etcd集群。之后可以用一些基本的Etcd命令来操作。为了更好地理解项目,如何组织密钥,如何为密钥设置TTl,或者如何备份所有数据,参考官方Etcd报告是一个很好的选择:

https://github.com/etcd-io/etcd/tree/master/Documentation

牧场实验室中国团队正在热招!集装箱领域第一品牌,传奇创始人,硅谷明星创业团队...2019,就是想认识你!

关于牧场实验室

1.《etcd Etcd超全解:原理阐释及部署设置的最佳实践》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《etcd Etcd超全解:原理阐释及部署设置的最佳实践》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1690585.html