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/

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

#include<初见c语言之指针总结>

第一小节: #include<初见C语言之指针(1)>-CSDN博客 #add<初见C语言之指针(1)>-CSDN博客 第二小节: #include<初见c语言之指针…

redis集群配置(精华版):哨兵模式

哨兵模式 概念单机单个哨兵多哨兵模式 动手实操1、环境准备2、配置sentinel.conf配置文件3、启动哨兵&测试4、SpringBoot测试哨兵模式故障转移功能 概念 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这…

苹果Find My产品需求增长迅速,伦茨科技ST17H6x芯片供货充足

苹果的Find My功能使得用户可以轻松查找iPhone、Mac、AirPods以及Apple Watch等设备。如今Find My还进入了耳机、充电宝、箱包、电动车、保温杯等多个行业。苹果发布AirTag发布以来,大家都更加注重物品的防丢,苹果的 Find My 就可以查找 iPhone、Mac、Ai…

04-JavaScript函数

函数(重点) 1.为什么使用函数? 用函数来解决代码重用的问题。 2.函数的意义 函数其实就是封装,把可以重复使用的代码放到函数中,如果需要多次使用同一段代码,就可以把封装成一个函数。这样的话,在你需…

大数据-hive,初步了解

1. Hive是什么 Hive是基于Hadoop的数据仓库解决方案。由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性。 简单来说,Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapRedu…

docker环境配置过程中的常见问题

1、pull镜像问题 docker pull jenkins/jenkins:lts Using default tag: latest Trying to pull repository docker.io/library/centos ... Get https://registry-1.docker.io/v2/library/centos/manifests/latest: Get https://auth.docker.io/token?scoperepository%3Alibr…

keil调试仿真退出卡死现象解决办法

更新到keil5版本V5.20之后,目前一直到V5.29版本,都存在一个问题: 退出调试模式时,有可能会卡死! 此时需要在任务管理器中结束掉进程才能强制关闭keil工程。 网上查找了很多资料,一种是退出仿真时不能有断…

Python:执行py命令,提示: Can‘t find a default Python.

1.Python运行环境罢工 今天,要运行一个前年用python编写的爬虫程序,先检测python运行环境是否正常: D:\Python38-32\works>c:\windows\py.exe Cant find a default Python. 再试: D:\Python38-32\works>py --list Installe…

Vue3 + Vite + TS + Element-Plus + Pinia项目(5)对axios进行封装

1、在src文件夹下新建config文件夹后,新建baseURL.ts文件,用来配置http主链接 2、在src文件夹下新建http文件夹后,新建request.ts文件,内容如下 import axios from "axios" import { ElMessage } from element-plus im…

【Node.JS】koa

文章目录 概述koa和express对比koa下载安装使用1.创建koa项目文件目录2. 创建koa服务3. 添加路由 koa-router4. 数据库服务 mongodb5. 添加请求参数json处理 koa-bodyparser6. 用户接口举例7.引入koa一些常用插件8.用户登录验证 koa-jwt9.webpack生产打包 来源 概述 Koa 是一个…

OpenAI发布Voice Engine模型!用AI合成你的声音!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

6_相机坐标系_相机4个坐标系详述

相机系列文章是用来记录使用opencv3来完成单目相机和6轴机械臂手眼标定。本人吃饭的主职是linux下6轴机械臂相关应用开发。但对于机械臂运动学、相机应用等都非常感兴趣,所以对一些线性代数基础薄弱又想深入了解机械臂内部运算的同志比较有体会。由于是探索性学习&a…

快速上手Spring Cloud 九:服务间通信与消息队列

快速上手Spring Cloud 一:Spring Cloud 简介 快速上手Spring Cloud 二:核心组件解析 快速上手Spring Cloud 三:API网关深入探索与实战应用 快速上手Spring Cloud 四:微服务治理与安全 快速上手Spring Cloud 五:Spring …

新数字时代的启示:揭开Web3的秘密之路

在当今数字时代,随着区块链技术的不断发展,Web3作为下一代互联网的概念正逐渐引起人们的关注和探索。本文将深入探讨新数字时代的启示,揭开Web3的神秘之路,并探讨其在未来的发展前景。 1. Web3的定义与特点 Web3是对互联网未来发…

Discourse 最多允许有几个分类级别

和 DISCUZ 不同,DISCUZ 可以允许分类下面还有分类,再继续分类这种嵌套式分类。 Discourse 最多只允许有 2 个分类。 如果你在已有的分类下再继续分类的话,系统会提示错误: 意思就是子分类不能再分子分类。 Discourse 尽量采取了…

【linux课设】自主实现shell命令行解释器

shell和bash的关系 shell是命令解释器,它接收用户的命令并将其传递给内核去执行。bash,即GNU Bourne-Again Shell,是shell的一种实现方式,也是大多数linux系统下默认的shell。 bash的原理 大多数的指令进程(除了内建命令&#…

窥探未来:Web3如何颠覆传统互联网

随着科技的迅速发展,Web3正逐渐成为人们关注的焦点。与传统的Web2相比,Web3代表了一种全新的互联网模式,其潜力和影响力引发了人们对未来的期待和探索。本文将深入探讨Web3如何颠覆传统互联网的各个方面,并展望其可能带来的未来变…

Docker搭建LNMP环境实战(08):安装php-fpm

1、编写php测试文件 在文件夹&#xff1a;/mnt/hgfs/dockers/test_site/www目录下创建文件&#xff1a;test.php&#xff0c;内容为&#xff1a; <?phpecho "hello world!!!!!! From test.php"; ?>2、编写php-fpm部署配置文件 在文件夹&#xff1a;/mnt/h…

基于单片机寻迹巡线避障智能小车系统设计

**单片机设计介绍&#xff0c;基于单片机寻迹巡线避障智能小车系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机寻迹巡线避障智能小车系统设计是一个结合了硬件与软件技术的综合性项目。该系统的目标是设计一款…

AMEYA360代理 | 江苏长晶科技FST2.0高性能 IGBT产品介绍

江苏长晶科技股份有限公司是一家专业从事半导体产品研发、生产和销售的企业。自2019年起&#xff0c;连续4年被中国半导体行业协会评为 “功率器件十强企业”。2021年开始自主研发有着“工业CPU”之称的IGBT&#xff0c;截至2023年Q3在家电/工业/新能源等行业实现8款产品市场应…