分析标志【profiling flags】
实验标志【experimental flags】
etcd常用v3命令与参数
etcd V3命令全局参数
Kubernetes的核心组件ETCD介绍
====================================================================================
Etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现,它通过Raft一致性算法处理日志复制以保证强一致性,我们可以理解它为一个高可用强一致性的服务发现存储仓库。
在kubernetes集群中,etcd主要用于配置共享和服务发现
Etcd主要解决的是分布式系统中数据一致性的问题,而分布式系统中的数据分为控制数据和应用数据,etcd处理的数据类型为控制数据,对于很少量的应用数据也可以进行处理。
ETCD的主要功能
基本的key-value存储
监听机制
key的过期及续约机制,用于监控和服务发现
原子CAS和CAD,用于分布式锁和leader选举
特点【优点】
简单: curl可访问的用户的API(HTTP+JSON)
安全: 可选的SSL客户端证书认证
快速: 单实例每秒 1000 次写操作
可靠: 使用Raft保证一致性
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的架构与术语
=========================================================================
流程分析
通常一个用户的请求发送过来,会经过HTTP Server转发给Store进行具体的事务处理,如果涉及到节点的修改,则需要交给Raft模块进行状态的变更,日志的记录。
然后再同步给别的etcd节点确认数据提交,最后进行数据提交,再次同步。
Etcd主要分为四个部分【http server、store、raft、WAL】
HTTP Server
: 用于处理用户发送的API请求以及其他etcd节点的同步与心跳信息请求
Store
: 用于处理 etcd 支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是 etcd 对用户提供的大多数 API 功能的具体实现。
Raft
: Raft 强一致性算法的具体实现,是 etcd 的核心。
WAL
:Write Ahead Log(预写式日志/日志先行),是 etcd 的数据存储方式,也是一种实现事务日志的标准方法。etcd通过 WAL 进行持久化存储,所有的数据提交前都会事先记录日志。Snapshot 是为了防止数据过多而进行的状态快照;Entry 表示存储的具体日志内容。
工作原理及RAFT算法详解
Etcd使用Raft协议来维护集群内各个节点状态的一致性。简单说,ETCD集群是一个分布式系统,由多个节点相互通信构成整体对外服务,每个节点都存储了完整的数据,并且通过Raft协议保证每个节点维护的数据是一致的。
Raft算法
Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。一致性算法允许一组机器像一个整体一样工作,即使其中一些机器出现故障也能够继续工作下去。正因为如此,一致性算法在