精华内容
参与话题
问答
  • etcd

    2020-12-25 17:11:40
    etcd 快速入门背景一、认识etcd1.1 etcd 概念1.2 etcd vs Zookeeper1.3 etcd 应用场景1.4 etcd 工作原理1.4.1 如何保证一致性1.4.2 数据模型1.5 etcd 读写性能1.6 etcd 术语二、安装三、交互命令四、服务发现实践 ...

    背景

    etcd 理论快速入门
    项目地址
    etcd 实践快速入门

    一、认识etcd

    1.1 etcd 概念

    A distributed, reliable key-value store for the most critical data of a distributed system

    即 etcd 是一个分布式、可靠 key-value 存储的分布式系统。
    存储
    共享配置
    服务发现

    1.2 etcd vs Zookeeper

    提供配置共享和服务发现的系统比较多,其中最为大家熟知的是 Zookeeper,而 etcd 可以算得上是后起之秀了。在项目实现、一致性协议易理解性、运维、安全等多个维度上,etcd 相比 zookeeper 都占据优势。

    本文选取 Zookeeper 作为典型代表与 etcd 进行比较,而不考虑 Consul 项目作为比较对象,原因为 Consul 的可靠性和稳定性还需要时间来验证(项目发起方自身服务并未使用Consul,自己都不用)。

    • 一致性协议: etcd 使用 Raft 协议,Zookeeper 使用 ZAB(类PAXOS协议),前者容易理解,方便工程实现;
    • 运维方面:etcd 方便运维,Zookeeper 难以运维;
    • 数据存储:etcd 多版本并发控制(MVCC)数据模型 , 支持查询先前版本的键值对
    • 项目活跃度:etcd 社区与开发活跃,Zookeeper 感觉已经快死了;
    • API:etcd 提供 HTTP+JSON, gRPC 接口,跨平台跨语言,Zookeeper 需要使用其客户端;
    • 访问安全方面:etcd 支持 HTTPS 访问,Zookeeper 在这方面缺失;

    1.3 etcd 应用场景

    etcd 比较多的应用场景是用于服务发现,服务发现 (Service Discovery) 要解决的是分布式系统中最常见的问题之一,即在同一个分布式集群中的进程或服务如何才能找到对方并建立连接。和 Zookeeper 类似,etcd 有很多使用场景,包括:

    配置管理
    服务注册发现
    选主
    应用调度
    分布式队列
    分布式锁

    1.4 etcd 工作原理

    1.4.1 如何保证一致性

    etcd 使用 raft 协议来维护集群内各个节点状态的一致性。简单说,etcd 集群是一个分布式系统,由多个节点相互通信构成整体对外服务,每个节点都存储了完整的数据,并且通过 Raft 协议保证每个节点维护的数据是一致的。

    每个 etcd 节点都维护了一个状态机,并且,任意时刻至多存在一个有效的主节点。主节点处理所有来自客户端写操作,通过 Raft 协议保证写操作对状态机的改动会可靠的同步到其他节点。

    1.4.2 数据模型

    etcd 的设计目标是用来存放非频繁更新的数据,提供可靠的 Watch插件,它暴露了键值对的历史版本,以支持低成本的快照、监控历史事件。这些设计目标要求它使用一个持久化的、多版本的、支持并发的数据数据模型。

    当 etcd 键值对的新版本保存后,先前的版本依然存在。从效果上来说,键值对是不可变的,etcd 不会对其进行 in-place 的更新操作,而总是生成一个新的数据结构。为了防止历史版本无限增加,etcd 的存储支持压缩(Compact)以及删除老旧版本。

    逻辑视图

    从逻辑角度看,etcd 的存储是一个扁平的二进制键空间,键空间有一个针对键(字节字符串)的词典序索引,因此范围查询的成本较低。

    键空间维护了多个修订版本(Revisions),每一个原子变动操作(一个事务可由多个子操作组成)都会产生一个新的修订版本。在集群的整个生命周期中,修订版都是单调递增的。修订版同样支持索引,因此基于修订版的范围扫描也是高效的。压缩操作需要指定一个修订版本号,小于它的修订版会被移除。

    一个键的一次生命周期(从创建到删除)叫做 “代 (Generation)”,每个键可以有多个代。创建一个键时会增加键的版本(version),如果在当前修订版中键不存在则版本设置为1。删除一个键会创建一个墓碑(Tombstone),将版本设置为0,结束当前代。每次对键的值进行修改都会增加其版本号 — 在同一代中版本号是单调递增的。

    当压缩时,任何在压缩修订版之前结束的代,都会被移除。值在修订版之前的修改记录(仅仅保留最后一个)都会被移除。

    物理视图

    etcd 将数据存放在一个持久化的 B+ 树中,处于效率的考虑,每个修订版仅仅存储相对前一个修订版的数据状态变化(Delta)。单个修订版中可能包含了 B+ 树中的多个键。

    键值对的键,是三元组(major,sub,type):

    major:存储键值的修订版
    sub:用于区分相同修订版中的不同键
    type:用于特殊值的可选后缀,例如 t 表示值包含墓碑
    键值对的值,包含从上一个修订版的 Delta。B+ 树 —— 键的词法字节序排列,基于修订版的范围扫描速度快,可以方便的从一个修改版到另外一个的值变更情况查找。

    etcd 同时在内存中维护了一个 B 树索引,用于加速针对键的范围扫描。索引的键是物理存储的键面向用户的映射,索引的值则是指向 B+ 树修该点的指针。

    1.5 etcd 读写性能

    按照官网给出的数据, 在 2CPU,1.8G 内存,SSD 磁盘这样的配置下,单节点的写性能可以达到 16K QPS, 而先写后读也能达到12K QPS。这个性能还是相当可观。

    1.6 etcd 术语

    二、安装

    三、交互命令

    四、服务发现实践

    展开全文
  • ETCD

    2020-12-25 21:56:52
    1.什么是etcd etcd 是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供访问。通过分布式锁,leader 选举和写屏障(write barriers)来实现可靠的分布式协作。etcd集群是为高可用,持久性数据存储和...

     

    1.什么是etcd

    etcd is a distributed reliable key-value store for the most critical data of a distributed 
    system, with a focus on
    being:
    Simple: well-defined, user-facing API (gRPC)
    Secure: automatic TLS with optional client cert authentication
    Fast: benchmarked 10,000 writes/sec
    Reliable: properly distributed using Raft
    etcd is written in Go and uses the Raft consensus algorithm to manage a highly-available replicated log.
    etcd is used in production by many companies, and the development team stands behind it in critical
    deployment scenarios, where etcd is frequently teamed with applications such
    as Kubernetes, locksmith, vulcand, Doorman, and many others. Reliability is further ensured by rigorous testing.
    See etcdctl for a simple command line client.
    
    
    etcd 是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供访问,通过分布式锁,
    leader选举和写屏障(write barriers)来实现可靠的分布式协作.etcd集群是为高可用,持久性数据存储
    和检索而准备.
    
    "etcd"这个名字源于两个想法,即unix中的"/etc" 文件夹和分布式系统"d"istibuted.
    etc --存储文件配置存储
    d   --distribute
    etcd--存储大规模分布式系统的配置信息
    
    
    
    etcd以一致和容错的方式存储元数据,分布式系统使用etcd作为一致性键值存储,用于配置管理,服务
    发现和协调分布式工作.使用etcd的通用分布式模式包括领导选举,分布式锁和监控机器活动.
    
    

    2.使用案例


    2.1 CoreOS 的容器

    Linux: 在Container Linux上运行的应用程序获得自动的不宕机 Linux 内核更新。 容器 Linux 使用
    locksmith来协调更新。locksmith 在 etcd 上实现分布式信号量,确保在任何给定时间只有集群的一个子
    集重新启动。

    2.2 Kubernetes

    将配置数据存储到etcd中,用于服务发现和集群管理; etcd 的一致性对于正确安排和运行服务至关重要。
    Kubernetes API 服务器将群集状态持久化在 etcd 中。它使用etcd的 watch API监视集群,并发布关键
    的配置更改

    3.优点

    etcd作为一个受到ZooKeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更专注于以下四点
    1.简单:基于HTTP+JSON的API让你用curl就可以轻松使用;
    2.安全:可选SSL客户认证机制;
    3.快速:每个实例每秒支持一千次写操作;
    4.可信:使用Raft算法充分实现了分布式.

    4.应用场景

    场景一:服务发现(Service Discovery)
    场景二:消息发布与订阅
    场景三:负载均衡
    场景四:分布式通知与协调
    场景五:分布式锁、分布式队列
    场景六:集群监控与Leader竞选

    5.相关概念

    Raft:etcd所采用的保证分布式系统强一致性的算法。
    Node:一个Raft状态机实例。
    Member: 一个etcd实例。它管理着一个Node,并且可以为客户端请求提供服务。
    Cluster:由多个Member构成可以协同工作的etcd集群。
    Peer:对同一个etcd集群中另外一个Member的称呼。
    Client: 向etcd集群发送HTTP请求的客户端。
    WAL:预写式日志,etcd用于持久化存储的日志格式。
    snapshot:etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
    Proxy:etcd的一种模式,为etcd集群提供反向代理服务。
    Leader:Raft算法中通过竞选而产生的处理所有数据提交的节点。
    Follower:竞选失败的节点作为Raft中的从属节点,为算法提供强一致性保证。
    Candidate:当Follower超过一定时间接收不到Leader的心跳时转变为Candidate开始竞选。
    Term:某个节点成为Leader到下一次竞选时间,称为一个Term。
    Index:数据项编号。Raft中通过Term和Index来定位数据

    6.ETCD部署

    ETCD集群部署手册

    展开全文
  • Etcd

    2018-10-08 18:18:00
    默认使用2379端口为客户端提供通讯,并使用端口2380来进行服务器间通讯。 ...用户可以在etcd中注册服务,并且对注册的服务设置key TTL,定时保持服务的心跳以达到监控健康...为了让 etcdctl 使用 v3 API 来和etcd通...

     

     

     

    默认使用2379端口为客户端提供通讯,并使用端口2380来进行服务器间通讯。

    服务发现:一种注册服务和监控服务健康状态的机制。用户可以在etcd中注册服务,并且对注册的服务设置key TTL,定时保持服务的心跳以达到监控健康状态的效果

    默认,为了向后兼容 etcdctl 使用 v2 API 来和 etcd 服务器通讯。为了让 etcdctl 使用 v3 API 来和etcd通讯,API 版本必须通过环境变量 ETCDCTL_API 设置为版本3。
    export ETCDCTL_API=3

    目前,etcd 保证支持不超过 1MB 数据的 RPC 请求。将来,大小限制可能会松动或可配

     

    ===============参考资料:http://www.sel.zju.edu.cn/?p=523  etcd:从应用场景到实现原理的全方位解读

    2.3 etcd概念词汇表

    • Raft:etcd所采用的保证分布式系统强一致性的算法。
    • Node:一个Raft状态机实例。
    • Member: 一个etcd实例。它管理着一个Node,并且可以为客户端请求提供服务。
    • Cluster:由多个Member构成可以协同工作的etcd集群。
    • Peer:对同一个etcd集群中另外一个Member的称呼。
    • Client: 向etcd集群发送HTTP请求的客户端。
    • WAL:预写式日志,etcd用于持久化存储的日志格式。
    • snapshot:etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
    • Proxy:etcd的一种模式,为etcd集群提供反向代理服务。
    • Leader:Raft算法中通过竞选而产生的处理所有数据提交的节点。
    • Follower:竞选失败的节点作为Raft中的从属节点,为算法提供强一致性保证。
    • Candidate:当Follower超过一定时间接收不到Leader的心跳时转变为Candidate开始Leader竞选。
    • Term:某个节点成为Leader到下一次竞选开始的时间周期,称为一个Term。
    • Index:数据项编号。Raft中通过Term和Index来定位数据。

    etcd一般部署集群推荐奇数个节点,推荐的数量为3、5或者7个节点构成一个集群

    initial-advertise-peer-urls参数表示节点监听其他节点同步信号的地址

    如果你所在的网络环境配置了多个etcd集群,为了避免意外发生,最好使用-initial-cluster-token参数为每个集群单独配置一个token认证。这样就可以确保每个集群和集群的成员都拥有独特的ID。

    etcd有三种集群化启动的配置方案,分别为静态配置启动、etcd自身服务发现、通过DNS进行服务发现

     etcd 的demo

    https://coreos.com/etcd/docs/latest/demo.html

    ================

    etcd常用操作:https://www.cnblogs.com/guxiaobei/p/8003792.html

    =====================================参考资料 http://www.dockerinfo.net/etcd%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D

     

     

     

    转载于:https://www.cnblogs.com/testzcy/p/9756038.html

    展开全文
  • <div><p>/etcd/etcd-live*: deprecate etcd2 and etcd Ref: https://github.com/coreos/bugs/issues/1877</p><p>该提问来源于开源项目:coreos/docs</p></div>
  • etcd基础理论

    2019-10-19 08:48:33
    etcd

    etcd

     

     

     

    展开全文
  • etcd Note: The master branch may be in an unstable or even broken state during development. Please use releases instead of the master branch in order to get stable binaries. etcd is a ...
  • 一、Etcd 类比于Zookeeper,开源的、分布式的键值对数据存储系统,主要用来做配置共享、服务的注册和发现。高可用,强一致性。内部采用 Raft 协议作为一致性算法选举leader,保证集群数据不丢失 每个 etcd cluster ...
  • <p>One needs to set the <code>openshift_image_tag</code> before running the migration to containerized docker etcd.</p><p>该提问来源于开源项目:openshift/openshift-ansible</p></div>

空空如也

1 2 3 4 5 ... 20
收藏数 20,192
精华内容 8,076
关键字:

etcd