目录

1.etcd 简介

2. Raft选举算法

3. etcd 安装

4. etcd基本使用


1.etcd 简介

etcd是一个高可用的分布式的键值对存储系统,常用做配置共享和服务发现,由CoreOS公司发起的一个开源项目,受到ZooKeeper与doozer启发而催生的项目,名称”etcd”源自两个想法,即Unix的”/etc”文件夹和”d”分布式系统。”/etc”文件夹是用于存储单个系统的配置数据的地方,而etcd用于存储大规模分布式的配置信息,etcd有如下特点:

  • 简单:基于HTTP+JSON的API,用curl就可以轻松使用。
  • 可信:使用Raft算法充分实现了分布式。
  • 安全:可选SSL客户认证机制。
  • 快速:每个节点可支持上万QPS读写。

etcd有V2和V3两个版本,V3版本供了更多功能并提高了性能,应用程序使用新的grpc API访问mvcc存储,mvcc存储区和旧存储区v2是分开且隔离的,写入存储v2不会影响mvcc存储,写入mvcc存储也不会影响存储v2。

API v2和API v3之间存在一些显着差异:

  • 事务:在v3中,etcd提供了多键条件事务。应用程序应使用事务代替Compare-And-Swap操作。
  • 平面键空间:API v3中没有目录,只有键。例如,”/a/b/c/“是键。范围查询支持获取与给定前缀匹配的所有键。
  • 紧凑的响应:delete操作不再返回以前的值。为了获得删除的值,可以使用事务原子地获取密钥,然后删除其值。
  • 租约:替代v2 TTL;TTL绑定到租约,密钥附加到租约。TTL过期后,租约将被撤销,所有附加密钥也将被删除。

2. Raft选举算法

集群一般是由两个或两个以上的服务器组建而成,每个服务器都是一个节点。数据库集群、管理集群...数据库集群提供了读写功能,管理集群提供了管理、故障恢复等功能。
对于一个集群来说,多个节点的协同和管理是非常重要的。而主节点则实现了协同和管理,主节点的存在,就可以保证其他节点的有序运行,以及数据库集群中的写入数据在每个节点上 的一致性。
这里的一致性是指,数据在每个集群节点中都是一样的,不存在不同的情况。分布式选举的作用就是选出一个主节点,由它来协调和管理其他节点,以保证集群有序运行和节点间数据的一致性。
采用 Raft 算法选举,集群节点的角色有 3 种:

  • Leader: 即主节点,同一时刻只有一个 Leader,负责协调和管理其他节点;
  • Candidate: 即候选者,每一个节点都可以成为 Candidate,
  • 节点在该角色下才可以被选为新的 Leader; Follower: Leader 的跟随者,不可以发起选举。

选举特点如下:

  • 当集群初始化时候,每个节点都是Follower角色。
  • 集群中存在至多1个有效的主节点,通过心跳与其他节点同步数据;
  • 当Follower在一定时间内没有收到来自主节点的心跳,会将自己角色改变为Candidate,并发起一次选举投票。
  • 当收到包括自己在内超过半数节点赞成后,选举成功。
  • 当收到票数不足半数选举失败,或者选举超时。
  • 若本轮未选出主节点,将进行下一轮选举(出现这种情况,是由于多个节点同时选举,所有节点均为获得过半选票)。
  • Candidate节点收到来自主节点的信息后,会立即终止选举过程,进入Follower角色。

为了避免陷入选举失败循环,每个节点未收到心跳发起选举的时间是一定范围内的随机值,这样能够避免2个节点同时发起选举。

3. etcd 安装

下载地址:Releases · etcd-io/etcd · GitHub

切换至etcd根目录,将etcd和etcdctl二进制文件复制到/usr/local/bin目录这样系统中可以直接调用etcd/etcdctl这两个程序

cp etcd etcdctl /usr/local/bin

输入命令etcd,即可启动一个单节点的etcd服务,ctrl+c即可停止服务

xxxx-xx-xx xx:xx:xx.xxxxxx I | embed: name = default
xxxx-xx-xx xx:xx:xx.xxxxxx I | embed: data dir = default.etcd
xxxx-xx-xx xx:xx:xx.xxxxxx I | embed: member dir = default.etcd/member
xxxx-xx-xx xx:xx:xx.xxxxxx I | embed: heartbeat = 100ms
xxxx-xx-xx xx:xx:xx.xxxxxx I | embed: election = 1000ms
xxxx-xx-xx xx:xx:xx.xxxxxx I | embed: snapshot count = 100000
xxxx-xx-xx xx:xx:xx.xxxxxx I | embed: advertise client URLs = http://localhost:2379
xxxx-xx-xx xx:xx:xx.xxxxxx I | etcdserver: starting member 8e9e05c52164694d in cluster cdf818194e3a8c32

建立etcd相关目录(即数据文件和配置文件的保存位置)

mkdir -p /var/lib/etcd/ && mkdir -p /etc/etcd/

创建etcd配置文件

vim /etc/etcd/etcd.conf
# 节点名称
ETCD_NAME="etcd0"
# 指定数据文件存放位置
ETCD_DATA_DIR="/var/lib/etcd/"

创建systemd配置文件

vim /etc/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target[Service]
User=root
Type=notify
WorkingDirectory=/var/lib/etcd/
## 根据实际情况修改EnvironmentFile和ExecStart这两个参数值
## 1.EnvironmentFile即配置文件的位置,注意“-”不能少
EnvironmentFile=-/etc/etcd/etcd.conf
## 2.ExecStart即etcd启动程序位置
ExecStart=/usr/local/bin/etcd
Restart=on-failure
LimitNOFILE=65536[Install]
WantedBy=multi-user.target

4. etcd基本使用

增加和修改,如果存在则替换

etcdctl put <键名> <键值>

查询 

etcdctl get <键名> 

删除

etcdctl del <键名>

查看集群状态

etcdctl endpoint status --write-out=table

 watch命令

watch是监听键或前缀发生改变的事件流。

# 对某个key监听操作,当/key1发生改变时,会返回最新值
etcdctl watch /key1
# 监听key前缀
etcdctl watch /key --prefix
# 监听到改变后执行相关操作
etcdctl watch /key1 -- etcdctl member list

etcd 介绍与使用相关推荐

  1. etcd介绍:可作为KV数据库、服务发现、配置中心和分布式锁使用、etcd集群搭建

    etcd介绍 etcd用途 etcd VS zk etcd架构 etcd集群搭建

  2. golang基础-etcd介绍与使用、etcd存取值、etcd监测数据写入

    关注公众号"风色年代"订阅更多精彩文章,本博大部分文章为转载并已标明原文出处,如有再转敬请保留,请自觉尊重原创作者的劳动成果! golang基础-etcd介绍与使用.etcd存取值 ...

  3. 分布式键值存储系统ETCD介绍

    前文介绍了分布式服务框架Zookeeper的一些概念,本文继续介绍ETCD相关概念.ETCD作为分布式键值存储系统,使用场景上和Zookeeper有很多相似之处,但在设计理念以及架构稳定性和性能上有了 ...

  4. ETCD介绍—etcd概念及原理方面分析

    etcd作为一个受到ZooKeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更专注于以下四点. 简单:基于HTTP+JSON的API让你用curl就可以轻松使用. 安全:可选SSL ...

  5. 【etcd】etcd介绍

    文章目录 1.etcd和redis区别 2.etcd使用及介绍 1.etcd和redis区别 etcd和redis的比较和日常使用场景 2.etcd使用及介绍 etcd篇-基本介绍 Etcd 使用入门

  6. 服务发现系统etcd介绍

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 一.概述 etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现.etcd是由CoreOS开发并维护的, ...

  7. etcd集群搭建(高可用)

    一.etcd介绍: ETCD 是一个高可用的分布式键值数据库,可用于服务发现.ETCD 采用 raft 一致性算法,基于 Go 语言实现.etcd作为一个高可用键值存储系统,天生就是为集群化而设计的. ...

  8. CentOS7安装ETCD

    CentOS7安装ETCD 使用安装脚步 ETCD_VER=v3.4.14# choose either URL GOOGLE_URL=https://storage.googleapis.com/e ...

  9. 什么是etcd及其原理和应用场景

    etcd介绍 etcd是什么 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管.etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册于发现,还可以作为 key-valu ...

最新文章

  1. marsony布局出现的错误 (三)
  2. hdu 4676 Sum Of Gcd 莫队+phi反演
  3. 制冷设备维保常见的10大故障!
  4. Boost:双图bimap分配的测试程序
  5. 图像 pipeline_多面体优化,Pipeline与深度学习编译器
  6. java使用Socket类接收和发送数据
  7. 【测试】提交BUG的标准规范
  8. phpstorm 2019.1 mac
  9. 苹果 Mac 第二桌面窗口变黄怎么办?只需调整三个设置
  10. 鸿蒙系统首发仪式,鸿蒙系统首发终端荣耀智慧屏正式亮相
  11. Asterisk的体系架构
  12. 从kubernetes看如何设计超大规模资源调度系统
  13. 软件供应链安全——组件漏洞的治理
  14. 猴子吃桃问题:一只小猴子摘了若干桃子,每天吃现有桃的一半多一个,到第10天时就只有一个桃子了,求原有多少个桃?请编程实现。(C++)(迭代法)
  15. 阿里云账号实名认证解决方案
  16. 玩转阿里云:从零到一上手玩转云服务器学习报告
  17. 生活小常识日常生活小常识
  18. 10蓝牙模块 hm 电脑蓝牙 连接_树莓派与HM-10蓝牙模块搭建iBeacon | 学步园
  19. python中超集、子集、并集、交集、差集等
  20. html的选项卡切换,纯css选项卡切换

热门文章

  1. 闲置带宽怎么赚钱靠谱
  2. SpaceX完成第三次“拼车发射”任务 送105颗微型卫星入轨
  3. LeGO LOAM学习
  4. VBA批量操作excel文件
  5. java 实现的excel数据导入及导入模板下载
  6. Jekyll项目建立遇到的问题
  7. BZOJ2423/HAOI2010 最长公共子序列
  8. 荧光标记肽(Arg)9, FAM-labeled
  9. 怎么激发自己对物质的欲望?
  10. Andorid Skia