etcd入门详解

etcd入门详解1 etcd 简介 简介 Etcd 是 CoreOS 基于 Raft 协议开发的分布式 key value 存储 可用于服务发现 共享配置以及一致性保障 如数据库选主 分布式锁等 在分布式系统中 如何管理节点间的状态一直是一个难题 etcd 像是专门为集群环境的服务发现和注册而涉及 它提供了数据 TTL 失效 数据改变监视 多值 目录监听 分布式锁原子操作等功能 可以方便的跟踪并管理集群节点的状态 特点 简单 curl 可访问的用户的 API HTT

1. etcd简介

  • 简介

        Etcd是CoreOS基于Raft协议开发的分布式key-value存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)。

        在分布式系统中,如何管理节点间的状态一直是一个难题,etcd像是专门为集群环境的服务发现和注册而涉及,它提供了数据TTL失效、数据改变监视、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态。

  • 特点

        简单:curl可访问的用户的API(HTTP + JSON)

        安全:可选的SSL客户端证书认证

        快速: 单实例每秒1000次写操作

        可靠:使用Raft算法保证一致性

  • 主要功能

        1. 基本的key-value存储

        2. 监听机制

        3. key的过期及续约机制, 用于监控和服务发现

        4. 原子Compare And Swap和Compare And Delete, 用于分布式锁和leader选举

2. Raft协议

1. 参考链接

Raftetcd入门详解http://thesecretlivesofdata.com/raft/

2.  理解raft协议

  • raft协议本身是为了实现分布式系统一致性(选举的方式选举出leader,多次确认的方式来写入数值 )

        以etcd为例,etcd作为一个节点本身有三个状态(follower遵循者/Candidate候选人/leader意见领袖)。假设系统有三个节点,在初始化的时候是以follower来进行初始化,如果follower没有leader则会把自己转变为Candidate(150ms-300ms随机时间), 则自己去拉票,只要超过半数的票则从Candidate变成leader。则所有的集群都要听从leader的安排,leader会每时每刻保持心跳,让其他follower知道leader在线。

        有leader以后所有的修改都会从leader发起。假设设置一个数值,会先预提交,leader要通知其他follower进行设置数值,当集群超过半数的人修改完成commit,leader则对于自身设置数值进行commit。

        新的任期leader权利会大于老的任期leader, Term值得大小来决定。

3. etcd整个写数据流程

  • 写数据流程步骤图解

etcd入门详解

  •  文字详细叙述上图过程

  1. 当客户端对etcd发起请求的时候,如果etcd不是leader的状态而是follower,follower则会将请求转发leader; 如果是leader后, 会对其进行预检查,检查(配额、限速、鉴权【判断请求是否合法】、包大小【需要小于1.5M,过大则会拒绝】)。
  2. 如果请求本身是合法的,会将请求转发给KVServer处理。
  3. KVserver一致性模块进行数据处理,一致性模块是基于raft协议实现的,这时候的数据本身是处于unstable状态。
  4. 当leader该数据处理unstable状态后,会通过rpc通知其他follower也来同步该数据,并且leader本身会在数据同步到日志模块【wal日志, wal日志通过fsync落盘到磁盘中】。而其他follow在同步该数据的时候,本身完成的是步骤3和数据同步到日志模块,follower一致性模块数据变成commited状态,当完成了这些后通过上次rpc返回响应体给leader。
  5. leader在收到了超过半数集群本身确认后,更新MatchIndex, 一致性模块中数据本身由unstable变化成commited状态。这时候通过MVCC模块【treeIndex和BoltDB开源组件组成】进行状态机的写入,将数据同步到treeIndex【会更新modified版本[当前版本号], generations信息[创建的版本,当前版本数,过往的所有版本号]】。再通过BoltDB落盘到磁盘中。这时候一致性模块数据由commited变化为applied状态。【在这里如果没有要求数据强一致性,弱一致性的话,那么数据在commited状态就认为数据已经同步完成了】。
  6. 再通过heatbeat将数据同步到follower中MVCC模块中。最终完成数据的一致性。如下图所示。 【如果follower比leader落后好几个版本,leader会通过headbeat带到follower进行同步】。

etcd入门详解

4. etcd高可用解决方案

etcd-operator

1. 开源代码链接

GitHub – coreos/etcd-operator: etcd operator creates/configures/manages etcd clusters atop Kubernetesetcd入门详解https://github.com/coreos/etcd-operator

  • Etcd statefulset Helm chart

1. 开源代码链接

Helm Charts to deploy Etcd in Kubernetesetcd入门详解https://bitnami.com/stack/etcd/helmcharts/bitnami/etcd at master · bitnami/charts · GitHubBitnami Helm Charts. Contribute to bitnami/charts development by creating an account on GitHub.etcd入门详解https://github.com/bitnami/charts/tree/master/bitnami/etcd

5. kubernetes如何使用etcd

        在kubernetes-master\pkg\registry\core\pod\storage\storage.go对于每个k8s object都有一个这个文件负责对象的存储操作

6. 连接kubernetes的etcd方式

1. 查询etcd pod名称

kubectl get po –namespace=kube-system

etcd入门详解

2. 进入pod执行sh命令框

 kubectl –namespace=kube-system exec -it etcd-ubuntu sh

etcd入门详解

3. 拼接命令 

# 获取etcd证书参数 ps -ef | grep etcd 

etcd入门详解

# 拼接好证书后简单进行查询key为/开头 etcdctl --endpoints https://192.168.137.156:2379 --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key --cacert /etc/kubernetes/pki/etcd/ca.crt get --prefix / --keys-only  

etcd入门详解

# 查询成员对象 etcdctl --endpoints https://192.168.137.156:2379 --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key --cacert /etc/kubernetes/pki/etcd/ca.crt member list 

etcd入门详解

# 查询key为/registry/services/specs/default/kubernetes对应的值 etcdctl --endpoints https://192.168.137.156:2379 --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key --cacert /etc/kubernetes/pki/etcd/ca.crt get /registry/services/specs/default/kubernetes

etcd入门详解

文章还没有写完,后续会慢慢补齐,谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205490.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午5:54
下一篇 2026年3月19日 下午5:54


相关推荐

  • 全球首款手机龙虾秒光 OpenClaw创始人称愿与百度共同开发龙虾

    全球首款手机龙虾秒光 OpenClaw创始人称愿与百度共同开发龙虾

    2026年3月13日
    1
  • 小米骁龙855_小米商城抢购秒杀软件

    小米骁龙855_小米商城抢购秒杀软件每日的科技盘点,用一篇文章给你带来今天的大小科技事。今天的热点消息层出不穷,随我一起来了解一下吧。【小米11将在12月29日发布】《科创板日报》以及外媒GizmoChina在昨日表示,小米下一代旗舰手机小米11将于12月29日发布。此前各大博主也都表示小米11将在本月发售,这对于一款旗舰手机来说还是比较奇特的。从外观图片来看,小米11采用了蓝色渐变色后盖,后置摄像头布局为方形设计,带…

    2025年8月4日
    6
  • 2-ip地址分类「建议收藏」

    2-ip地址分类「建议收藏」1.ip地址的种类  我们在学习计算机网络时知道,计算机网络一般根据网络大小分对网络进行分门别类:一般有局域网,广域网,城域网,互联网等。对于拥有大量结点的少部分网络,他们创建了A类网络这个等级。另一个极端情况是C类网络,它包括只拥有较少结点的众多网络。那么介于在A类和C类之间的网络就是B类网络了。2.ip地址分类  在早期为了适应大型,中型,小型等不同的网络,ip地址在设计出…

    2022年6月3日
    40
  • 股票布林线boll指标介绍及应用(图解)_布林线和什么指标配合效果好

    股票布林线boll指标介绍及应用(图解)_布林线和什么指标配合效果好一、定义:布林线指标,即BOLL指标,其英文全称是“BollingerBands”,布林线(BOLL)由约翰·布林先生创造,其利用统计原理,求出股价的标准差及其信赖区间,从而确定股价的波动

    2022年8月2日
    8
  • 鲸鱼优化算法与其他算法对比_鲸鱼优化算法百度百科

    鲸鱼优化算法与其他算法对比_鲸鱼优化算法百度百科文章目录一、理论基础1、鲸鱼优化算法2、鲸鱼优化算法的改进(1)自适应调整权重(2)自适应调整搜索策略(3)AWOA流程图二、仿真对比与分析三、参考文献四、Matlab仿真程序一、理论基础1、鲸鱼优化算法请参考这里。2、鲸鱼优化算法的改进(1)自适应调整权重由于WOA在优化求解的过程中,线性的惯性权重调整策略若选择不合适,将影响算法的收敛速度。因此,本文提出了一种根据当前鲸鱼种群分布情况来自适应改变权值的大小,公式如下:w=d1⋅(Piworst−Pibest)+d2⋅(xiupper−xilo

    2022年10月5日
    4
  • luajit性能优化[通俗易懂]

    luajit性能优化[通俗易懂]本文转载地址:(http://www.cnblogs.com/zwywilliam/p/5992737.html)luajit是目前最快的脚本语言之一,不过深入使用就很快会发现,要把这个语言用到像宣称那样高性能,并不是那么容易。实际使用的时候往往会发现,刚开始写的一些小testcase性能非常好,经常毫秒级就算完,可是代码复杂度一上去了,动辄几十上百毫秒的情况就会出现,性能表现非常飘忽。

    2022年10月6日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号