etcd 介绍与使用
目录
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 介绍与使用相关推荐
- etcd介绍:可作为KV数据库、服务发现、配置中心和分布式锁使用、etcd集群搭建
etcd介绍 etcd用途 etcd VS zk etcd架构 etcd集群搭建
- golang基础-etcd介绍与使用、etcd存取值、etcd监测数据写入
关注公众号"风色年代"订阅更多精彩文章,本博大部分文章为转载并已标明原文出处,如有再转敬请保留,请自觉尊重原创作者的劳动成果! golang基础-etcd介绍与使用.etcd存取值 ...
- 分布式键值存储系统ETCD介绍
前文介绍了分布式服务框架Zookeeper的一些概念,本文继续介绍ETCD相关概念.ETCD作为分布式键值存储系统,使用场景上和Zookeeper有很多相似之处,但在设计理念以及架构稳定性和性能上有了 ...
- ETCD介绍—etcd概念及原理方面分析
etcd作为一个受到ZooKeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更专注于以下四点. 简单:基于HTTP+JSON的API让你用curl就可以轻松使用. 安全:可选SSL ...
- 【etcd】etcd介绍
文章目录 1.etcd和redis区别 2.etcd使用及介绍 1.etcd和redis区别 etcd和redis的比较和日常使用场景 2.etcd使用及介绍 etcd篇-基本介绍 Etcd 使用入门
- 服务发现系统etcd介绍
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 一.概述 etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现.etcd是由CoreOS开发并维护的, ...
- etcd集群搭建(高可用)
一.etcd介绍: ETCD 是一个高可用的分布式键值数据库,可用于服务发现.ETCD 采用 raft 一致性算法,基于 Go 语言实现.etcd作为一个高可用键值存储系统,天生就是为集群化而设计的. ...
- CentOS7安装ETCD
CentOS7安装ETCD 使用安装脚步 ETCD_VER=v3.4.14# choose either URL GOOGLE_URL=https://storage.googleapis.com/e ...
- 什么是etcd及其原理和应用场景
etcd介绍 etcd是什么 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管.etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册于发现,还可以作为 key-valu ...
最新文章
- marsony布局出现的错误 (三)
- hdu 4676 Sum Of Gcd 莫队+phi反演
- 制冷设备维保常见的10大故障!
- Boost:双图bimap分配的测试程序
- 图像 pipeline_多面体优化,Pipeline与深度学习编译器
- java使用Socket类接收和发送数据
- 【测试】提交BUG的标准规范
- phpstorm 2019.1 mac
- 苹果 Mac 第二桌面窗口变黄怎么办?只需调整三个设置
- 鸿蒙系统首发仪式,鸿蒙系统首发终端荣耀智慧屏正式亮相
- Asterisk的体系架构
- 从kubernetes看如何设计超大规模资源调度系统
- 软件供应链安全——组件漏洞的治理
- 猴子吃桃问题:一只小猴子摘了若干桃子,每天吃现有桃的一半多一个,到第10天时就只有一个桃子了,求原有多少个桃?请编程实现。(C++)(迭代法)
- 阿里云账号实名认证解决方案
- 玩转阿里云:从零到一上手玩转云服务器学习报告
- 生活小常识日常生活小常识
- 10蓝牙模块 hm 电脑蓝牙 连接_树莓派与HM-10蓝牙模块搭建iBeacon | 学步园
- python中超集、子集、并集、交集、差集等
- html的选项卡切换,纯css选项卡切换