Etcd 基本入门

1:什么是 Etcd ?

Etcd 是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,Etcd基于 Go 语言实现。

名字由来,它源于两个方面,unix的“/etc”文件夹和分布式系统(“D”istribute system)的D,组合在一起表示etcd是用于存储分布式配置的信息存储服务。

2:Kubernetes 为什么用 Etcd ?

2014年6月,Google的Kubernetes项目诞生了,我们前面所讨论到Go语言编写、etcd高可用、Watch机制、CAS、TTL等特性正是Kubernetes所需要的,它早期的0.4版本,使用的正是etcd v0.2版本。

Kubernetes是如何使用etcd v2这些特性的呢?举几个简单小例子。

当你使用Kubernetes声明式API部署服务的时候,Kubernetes的控制器通过etcd Watch机制,会实时监听资源变化事件,对比实际状态与期望状态是否一致,并采取协调动作使其一致。Kubernetes更新数据的时候,通过CAS机制保证并发场景下的原子更新,并通过对key设置TTL来存储Event事件,提升Kubernetes集群的可观测性,基于TTL特性,Event事件key到期后可自动删除。

Kubernetes项目使用etcd,除了技术因素也与当时的商业竞争有关。CoreOS是Kubernetes容器生态圈的核心成员之一。

3:Etcd的主要特点和用途包括

Etcd是一个分布式键值存储系统,通常用于在分布式系统中存储配置数据、元数据和状态信息。它是由CoreOS开发的,基于Raft一致性算法实现了高可用性和一致性。Etcd最初是为了支持CoreOS的容器集群管理工具而开发的,但后来被许多其他项目广泛使用,包括Kubernetes等。

Etcd的主要特点和用途包括:

  1. 一致性保证:Etcd使用Raft一致性算法来确保数据的一致性和可靠性。在Etcd集群中,数据的读写操作都将遵循一致性和持久性要求,从而确保系统的可靠性。

  2. 高可用性:Etcd支持数据的复制和故障转移,即使某个节点发生故障,集群仍然能够继续工作并保持数据的可用性。

  3. 分布式锁:Etcd提供了分布式锁的支持,可以用于在分布式系统中协调资源的访问,避免竞争条件和数据冲突。

  4. 服务发现:在微服务架构中,Etcd可以用作服务发现的后端存储。服务实例可以注册到Etcd中,并通过查询Etcd来发现其他服务的位置和状态。

  5. 配置管理:Etcd可以用于存储系统的配置信息,例如网络配置、服务发现、权限控制等,使得系统可以动态地管理和调整配置,而不需要硬编码在应用程序中。

总的来说,Etcd提供了一个可靠、高性能的分布式存储解决方案,用于解决分布式系统中的配置管理、服务发现、一致性保证和分布式锁等问题

4:raft共识算法的选举机制

在 etcd 中,领导者节点的选举是通过 Raft 共识算法来完成的。Raft 算法定义了一套机制,确保在集群中只有一个领导者,其他节点都是跟随者或候选人。

Raft 算法的选举过程包括以下几个步骤:

  1. 选举超时(Election Timeout):每个节点在随机的时间间隔内设置一个选举超时计时器。一旦计时器超时,节点就会认为当前没有领导者,于是开始新一轮的选举。

  2. 成为候选人(Becoming a Candidate):当节点的选举超时计时器触发时,节点会变成候选人,并向其他节点发送请求投票的消息。

  3. 请求投票(Request Votes):候选人节点向其他节点发送请求投票的消息,包括候选人的任期号等信息。其他节点收到请求后,会判断是否投票给该候选人。

  4. 投票过程(Voting Process):节点在收到请求投票消息后,会进行投票。如果节点尚未投票给其他候选人,并且候选人的任期号大于自己的任期号,则会投票给候选人,并重置自己的选举超时计时器。

  5. 获得多数投票(Winning the Election):如果候选人收到了超过半数节点的投票,那么它就会成为新的领导者。在成为领导者后,它会发送心跳消息来维持自己的领导地位,并开始接收客户端请求并将其复制到其他节点。

  6. 维持领导地位(Maintaining Leadership):一旦成为领导者,节点会周期性地发送心跳消息给其他节点,以维持自己的领导地位。如果其他节点在一定时间内未收到领导者的心跳消息,它们会认为当前领导者已失效,从而开始新一轮的选举过程。

总的来说,Raft 算法通过定时的选举过程来确保集群中只有一个领导者,从而保证系统的一致性和可靠性。选举过程中节点的状态转换和投票过程都是根据 Raft 算法的规则来执行的,以确保选举的正确性和可靠性。

5:基本入门

5.1:github地址

GitHub:https://github.com/etcd-io/etcd

5.2:下载

etcd支持 linux,mac和docker环境的安装下载,windows稍微麻烦点,需要二进制文件

Releases · etcd-io/etcd (github.com)

5.2:以windows按照为例

下载二进制文件

本地解压

为了方便使用 etcd,你可以将 etcd 的二进制文件所在目录添加到系统的 PATH 环境变量中。这样,你就可以在命令行中直接使用 etcd 和 etcdctl 命令。

启动

点击etcd.exe文件

安装完成后,会得到 2 个脚本:

  • etcd:etcd 服务本身

  • etcdctl:客户端,用于操作 etcd,比如读写数据

执行 etcd 脚本就可以启动服务了,服务默认占用 2379 和 2380 端口,作用分别如下:

  • 2379:提供 HTTP API 服务,和 etcdctl 交互

  • 2380:集群中节点间通讯

启动日志显示2379标识启动成功

验证启动结果

执行

etcdctl.exe --endpoints=localhost:2379 endpoint health

返回标识启动成功
localhost:2379 is healthy: successfully committed proposal: took = 27.4106ms

插入和查询数据

插入

etcdctl.exe --endpoints=localhost:2379 put wkn 1

查询

etcdctl.exe --endpoints=localhost:2379 get wkn

5.3:etcd可视化工具

Etcd 的可视化工具推荐 etcdkeeper 

地址:https://github.com/evildecay/etcdkeeper

启动成功在浏览器输入

http://127.0.0.1:8080/etcdkeeper/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/494426.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20240320-2-线性回归+逻辑回归

线性回归于逻辑回归面试题 1. 简单介绍一下线性回归。 **线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。**这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简…

V R社交平台的用处|虚拟现实体验馆加盟|V R设备在线价格

VR(虚拟现实)社交平台的用处可以体现在以下几个方面: VR社交平台不仅可以丰富用户的社交体验,还可以在教育、艺术、商务等领域发挥重要作用,为用户提供更加多样化、互动性强的社交平台体验。 VR游乐设备|VR娱乐设备|VR…

SEO 的未来:GPT 和 AI 如何改变关键词研究

谷歌Gemini与百度文心一言:AI训练数据的较量 介绍 想象一下,有一个工具不仅可以理解错综复杂的关键字网络,还可以预测搜索引擎查询的变化趋势。 这就是生成式预训练 Transformer (GPT) 和其他人工智能技术发挥作用的地方,以我们从…

37.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-解码器细化类的实现

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:36.数据解码器的…

高阶SQL语句(二)

一 子查询 也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语 句。子查询语句 是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤。 ①子语句可以与主语句所查询的表相同,也可以是不…

29---Nor Flash电路设计

视频链接 Nor Flash硬件电路设计01_哔哩哔哩_bilibili NOR FLASH电路设计 1、NOR FLASH介绍 NOR Flash最早是由Intel公司于1988年开发出的。 NOR Flash虽容量小但速度快,最大特点是支持芯片内执行(XIP),即程序可以直接在NOR flash的片内…

mac-git上传至github(ssh版本,个人tokens总出错)

第一步 git clone https://github.com/用户名/项目名.git 第二步 cd 项目名 第三步 将本地的文件移动到项目下 第四步 git add . 第五步 git commit -m "添加****文件夹" 第六步 git push origin main 报错: 采用ssh验证 本地文件链接公钥 …

Day23:事务管理、显示评论、添加评论

事务管理 事务的定义 什么是事务 事务是由N步数据库操作序列组成的逻辑执行单元,这系列操作要么全执行,要么全放弃执行。 事务的特性(ACID) 原子性(Atomicity):事务是应用中不可再分的最小执行体(事务中部分执行失败就会回滚 。一致性(C…

AWS基础网络产品及协同架构-Networking

简介 一个完整的AWS网络架构图,包含了如下能力: Users (用户): 表示使用AWS服务的用户或系统。 SaaS (软件即服务): 表示在AWS上运行的软件服务,如企业微信可能作为SaaS提供。 example.com?: 这可能是一个示例域名,用于展示如何…

[2021]Zookeeper getAcl命令未授权访问漏洞概述与解决

今天在漏洞扫描的时候蹦出来一个zookeeper的漏洞问题,即使是非zookeeper的节点,或者是非集群内部节点,也可以通过nc扫描2181端口,获取极多的zk信息。关于漏洞的详细描述参考apache zookeeper官方概述:CVE-2018-8012: A…

KPCA-GWO-LSSVM,基于KPCA核主成分分析优化灰狼优化算法GWO结合最小二乘支持向量机LSSVM回归预测

基于KPCA核主成分分析优化灰狼优化算法(KPCA-GWO)结合最小二乘支持向量机(LSSVM)回归是一种用于回归分析的混合优化算法。下面我将简要介绍这个方法的步骤: 核主成分分析(KPCA): KPC…

小米HyperOS 澎湃os机型免答题 免社区等级 秒接bl锁操作步骤解析

小米机型解锁bl 绕过社区等级5才可以解锁的限制的教程_没有五级社区怎么解锁bl-CSDN博客 上次解析了小米有些出厂不是HyperOS系统的机型绕社区等级接bl锁的操作。目前有更新出厂为HyperOS系统的机型免社区登录等级限制 免答题解锁bl的操作。而且有网友在米14 平板6sp k70这些新…

解决kubesphere流水线docker登陆错误http: server gave HTTP response to HTTPS client

kubesphere DevOps流水线中,在登录私有的harbor仓库时,报以下错误 docker login 111.230.19.120:80 -u admin -p test123. WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://…

Android JNI SO库和对应的CPU架构详解

Android JNI SO库和对应的CPU架构详解 文章目录 Android JNI SO库和对应的CPU架构详解一、前言二、Android CPU架构1、Android系统支持的CPU架构2、如查查看手机的CPU架构(1)Android13 大屏AML厂商的cpu信息:(2)电脑An…

前缀和算法(1)

目录 一维前缀和[模板] 一、题目描述 二、思路解析 三、代码 二维前缀和[模板] 一、题目描述 二、思路解析 三、代码 724.寻找数组的中心下标 一、题目描述 二、思路解析 三、代码 238.除自身以外数组的乘积 一、题目描述 二、思路解析 三、代码 一维前缀和[模…

数据结构——二叉搜索树详解

一、二叉搜索树定义 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 1.非空左子树上所有节点的值都小于根节点的值。 2.非空右子树上所有节点的值都大于根节点的值。 3.左右子树也都为二叉搜索树。 如下图所示&#xff1a…

上位机图像处理和嵌入式模块部署(qmacvisual区域提取)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在图像处理中,有两部分比较重要,一个是区域分割,一个是区域提取。区域分割,比较好理解,…

IDEA的使用(概念,安装,配置,)以及什么是字符集,模版

目录 Intellij IDEA IDE的概念 IntelliJ IDEA的安装 IntelliJ IDEA的使用 基本配置 JDK配置 创建Module 基本用法 字体配置 主题配置 字符集 设置IDEA默认字符集 注释模板 字符集 字符集简介 常见字符集 Intellij IDEA 我们不可能一直使用记事本之类变成&#…

BUG定位---一起学习吧之测试

判断一个BUG是前端还是后端的,通常需要根据BUG的具体表现、发生的环境以及相关的技术栈来进行分析。以下是一些常用的判断方法: 错误发生的位置: 如果BUG涉及的是页面的布局、样式、交互效果等,那么很可能是前端的BUG。如果BUG与…

计算机网络:物理层 - 信道复用

计算机网络:物理层 - 信道复用 频分复用时分复用统计时分复用波分复用码分复用 计算机网络中,用户之间通过信道进行通信,但是信道是有限的,想要提高网络的效率,就需要提高信道的利用效率。因此计算机网络中普遍采用信道…