在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响
应快速的服务集群,已经成为了迫切需要解决的问题。

目录

一. etcd是什么

1.服务发现

2.Raft选举算法

3.etcd术语

二. etcd单机版安装

1.上传etcd安装包(网络下载太慢了)

2.解压

3.切换至etcd根目录

4.查看ectd版本

5.输入命令etcd

三.创建一个etcd服务

1.建立etcd相关目录

2.创建etcd配置文件

3.创建systemd配置文件

4.启动/停止/查看etcd服务

四.etcd基本使用

1.帮助命令

2.put 放入数据

3.get查看数据

4. del 删除数据

5.watch,监测


一. etcd是什么

etcd 是一个高度一致的分布式键值(key-value)存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。它可以优雅地处理网络分区期间的领导者选举,即使在
领导者节点中也可以容忍机器故障。
etcd 是用Go语言编写的,它具有出色的跨平台支持,小的二进制文件和强大的社区。etcd机器之间的通信通过Raft共识算法处理。

1.服务发现

服务发现要解决的也是分布式系统中最常见的问题之一,即在同一个分布式集群中的进程或服务,要如何才能找到对方并建立连接。
本质上来说,服务发现就是想要了解集群中是否有进程在监听udptcp端口,并且通过名字就可以查找和连接。
要解决服务发现的问题,需要有下面三大支柱,缺一不可:
  • 一个强一致性、高可用的服务存储目录。基于Raft算法的etcd天生就是这样一个强一致性高可用的服务存储目录。
  • 一种注册服务和监控服务健康状态的机制。用户可以在etcd中注册服务,并且对注册的服务设置key TTL,定时保持服务的心跳以达到监控健康状态的效果。
  • 一种查找和连接服务的机制。通过在etcd指定的主题下注册的服务也能在对应的主题下查找到。为了确保连接,我们可以在每个服务机器上都部署一个Proxy模式的etcd,这样就可以确保能访问etcd集群的服务都能互相连接。

2.Raft选举算法

集群一般是由两个或两个以上的服务器组建而成,每个服务器都是一个节点。数据库集群、管理集群...数据库集群提供了读写功能,管理集群提供了管理、故障恢复等功能。
对于一个集群来说,多个节点的协同和管理是非常重要的。而主节点则实现了协同和管理,主节点的存在,就可以保证其他节点的有序运行,以及数据库集群中的写入数据在每个节点上 的一致性。
这里的一致性是指,数据在每个集群节点中都是一样的,不存在不同的情况。分布式选举的作用就是选出一个主节点,由它来协调和管理其他节点,以保证集群有序运行和节点间数据的 一致性。
Raft 算法是典型的多数派投票选举算法,其选举机制与我们日常生活中的民主投票机制类似,核心思想是少数服从多数
也就是说,Raft 算法中,获得投票最多的节点成为主节点。
采用 Raft 算法选举,集群节点的角色有 3 种:
  • Leader: 即主节点,同一时刻只有一个 Leader,负责协调和管理其他节点;
  • Candidate: 即候选者,每一个节点都可以成为 Candidate,节点在该角色下才可以被选为新的 Leader
  • Follower: Leader 的跟随者,不可以发起选举。

Raft 选举的流程,可以分为以下几步:

1. 初始化时,所有节点均为 Follower 状态。
2. 开始选主时,所有节点的状态由 Follower 转化为 Candidate,并向其他节点发送选举请求。
3. 其他节点根据接收到的选举请求的先后顺序,回复是否同意成为主。这里需要注意的是,在每一轮选举中,一个节点只能投出一张票。
4. 若发起选举请求的节点获得超过一半的投票,则成为主节点,其状态转化为 Leader,其他节点的状态则由 Candidate 降为 FollowerLeader 节点与 Follower 节点之间会定期发送
心跳包,以检测主节点是否活着。
5. 当 Leader 节点的任期到了,即发现其他服务器开始下一轮选主周期时,Leader 节点的状态由 Leader 降级为 Follower,进入新一轮选主
每一轮选举,每个节点只能投一次票。
这种选举就类似人大代表选举,正常情况下每个人大代表都有一定的任期,任期到后会触发重新选举,且投票者只能将自己手里唯一的票投给其中一个候选者。
对应到 Raft 算法中,选主是周期进行的,包括选主和任值两个时间段,选主阶段对应投票阶段,任值阶段对应节点成为主之后的任期。
但也有例外的时候,如果主节点故障,会立马发起选举,重新选出一个主节点。
Google 开源的 Kubernetes,擅长容器管理与调度,为了保证可靠性,通常会部署 3 个节点用于数据备份。
3 个节点中,有一个会被选为主,其他节点作为备份。
Kubernetes 的选主采用的是开源的 etcd 组件。而,etcd 的集群管理器 etcd,是一个高可用、强一致性的服务发现存储仓库,就是采用了 Raft 算法来实现选主和一致性的。
Raft 算法具有选举速度快、算法复杂度低、易于实现的优点;
缺点是,它要求系统内每个节点都可以相互通信,且需要获得过半的投票数才能选主成功,因此通信量大。
该算法选举稳定性比 Bully 算法好,这是因为当有新节点加入或节点故障恢复后,会触发选主,但不一定会真正切主,除非新节点或故障后恢复的节点获得投票数过半,才会导致切主。

3.etcd术语

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

二. etcd单机版安装

cd /home    进入home创建etcd  ,home是专门给来放软件的 

1.上传etcd安装包(网络下载太慢了)

我用的连接工具可以直接移进去,你们可以用rz上传,如果rz报错的话,可以去网上搜索下载一下rz的命令

安装包:

2.解压

tar -zxvf etcd-v3.4.3-linux-amd64.tar.gz

3.切换至etcd根目录

cd etcd-v3.4.3-linux-amd64    //进入根目录

cp etcd etcdctl /usr/local/ bin   //复制到bin目录去
etcdetcdctl二进制文件复制到/usr/local/bin目录这样系统中可以直接调用etcd/etcdctl这两个程序  etcd是它的服务,etcdctl是它的指令

4.查看ectd版本

etcd --version

5.输入命令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 = 100 ms
xxxx - xx - xx xx : xx : xx . xxxxxx I | embed : election = 1000 ms
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 8e9 e05c52164694d in cluster cdf818194e3a8c32
1.name表示节点名称,默认为default
2.data-dir 保存日志和快照的目录,默认为当前工作目录default.etcd/目录下。
3.http://localhost:2380和集群中其他节点通信。
4.http://localhost:2379提供客户端交互。
5.heartbeat100ms,该参数的作用是leader多久发送一次心跳到followers,默认值是100ms
6.election1000ms,该参数的作用是重新投票的超时时间,如果follow在该时间间隔没有收到心跳包,会触发重新投票,默认为1000ms
7.snapshot count10000,该参数的作用是指定有多少事务被提交时,触发截取快照保存到磁盘。
8.集群和每个节点都会生成一个uuid
9.启动的时候会运行raft,选举出leader

三.创建一个etcd服务

创建一个ectd服务中就可以让它开机自启,查看服务状态之类的

1.建立etcd相关目录

(即数据文件和配置文件的保存位置) 

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

2.创建etcd配置文件

vim /etc/etcd/etcd.conf
按 i 键进入编辑模式
把以下内容复制进去
# 节点名称
ETCD_NAME="etcd0"
# 指定数据文件存放位置
ETCD_DATA_DIR="/var/lib/etcd/"
esc 输入 :wq 保存并退出

3.创建systemd配置文件

vim /etc/systemd/system/etcd.service
按 i 键进入编辑模式
把以下内容复制进去 

[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服务

systemctl daemon - reload && systemctl enable etcd && systemctl start etcd && systemctl status etcd

四.etcd基本使用

etcdctl是一个命令行客户端,可以对etcd服务进行测试或者手动修改数据库内容。另外,etcdctl还支持HTTP API(之后介绍)
etcdctl支持的命令大体上分为数据库操作和非数据库操作两类

1.帮助命令

etcdctl -h

2.put 放入数据

etcdctl put / testdir / testkey "Hello world"
这是用键值对的方式插入数据
/testdir/testkey:是键
"Hello world" :是值
--sort 对结果进行排序
--consistent 将请求发给主节点,保证获取内容的一致性。

3.get查看数据

etcdctl get / testdir / testkey

4. del 删除数据

清空数据
etcdctl del / -- prefix
删除所有 / test 前缀的节点
etcdctl del / test -- prefix

5.watch,监测

watch,监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出

etcdctl watch /testdir/testkey

现在就在监测当中了,我们另外打开一个窗口,操作这个键

回到监测的窗口,欧克,监测到了


好啦 文章内容到这里就结束了  你学到了吗 !!

【云原生etcd】etcd的快速入门相关推荐

  1. 腾讯云数据库 TencentDB for MariaDB快速入门和常见问题

    本文分享腾讯云数据库 TencentDB for MariaDB快速入门和一些常见问题的解答. 更多相关官方文档:云数据库 MariaDB 腾讯云数据库 MariaDB 简介 腾讯云数据库 Maria ...

  2. Java 云原生微服务框架 Quarkus 入门实践

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  3. 阿里云RPA机器人流程自动化快速入门

    简介:让智能机器人代替或者辅助人类来做日常的工作,这是很多科幻片里面所熟悉的场景,现如今,这一幕即将成为现实. 一.阿里云RPA产品介绍 让智能机器人代替或者辅助人类来做日常的工作,这是很多科幻片里面 ...

  4. Spring Cloud Spring Boot mybatis分布式微服务云架构(一)快速入门

    2019独角兽企业重金招聘Python工程师标准>>> 快速入门 本章主要目标完成Spring Boot基础项目的构建,并且实现一个简单的Http请求处理,通过这个例子对Spring ...

  5. 云原生小课堂 | 一文入门性能凶悍的开源分析数据库ClickHouse

    clickhouse简介 ClickHouse是一个开源的,面向列的MPP架构数据分析数据库(大规模并行处理),由俄罗斯Yandex为OLAP和大数据用例创建. ClickHouse全称是Click ...

  6. 网易开源云原生日志收集工具 Loggie 入门指南

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! Loggie 是网易和中国工商银行联合发起的一个基于 Golang 的轻量级.高性能.云原生日志采集 Agent和 ...

  7. 云原生实践之 RSocket 从入门到落地:Servlet vs RSocket

    为什么80%的码农都做不了架构师?>>>    技术实践的作用在于:除了用于构建业务,也是为了验证某项技术或框架是否值得大规模推广. 本期开始,我们推出<RSocket 从入门 ...

  8. mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南

    4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...

  9. 阿里云Kubernetes服务 - Service Broker快速入门指南

    4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...

  10. 云目录(DaaS )快速入门

    目录即服务(Directory-as-a-Service,DaaS)是针对企业用户存储的云解决方案,将 LDAP 或微软 Active Directory(AD)作为云服务进行管理.DaaS 和很多云 ...

最新文章

  1. opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
  2. 中南大学计算机专业男女比例,你知道吗?中南大学的男女比例居然是这样的
  3. 【IM】关于在线学习(被动攻击学习和适应正则化学习)的理解
  4. VMC Command Line
  5. C语言实现interpolation search插值查找算法(附完整源码)
  6. 我是这么给娃娃取名的(使用 node.js )
  7. 深度学习——在TensorFlow中查看和设定张量的形态
  8. 通过命令行安装或卸载Tomcat服务
  9. Oracle 12C R2-新特性-SQLPLUS提供查看历史命令的功能
  10. asp.net C#实现下载文件的六种方法实例
  11. 打开计算机 显示不支持此接口,不支持此接口,教你如何解决电脑Windows系统显示不支持此接口...
  12. socket编程之addrinfo结构体和getaddrinfo()
  13. Navicat Premium 15安装需要注意的几个细节
  14. python电化学cv曲线怎么画_cv曲线(电化学cv曲线分析)
  15. 听说你还在使用破解版Pycharm?
  16. Baby Sign Language
  17. easyboot-code-generate 自动生成代码
  18. python爬虫之爬取拉勾网
  19. 【第一组】第二次例会会议记录
  20. glibc 知:手册06:字符集处理

热门文章

  1. 1508-张晨曦总结《2016年-11月-9日》【连续19天总结】
  2. %3c大自然的语言%3e竺可桢题目,[转载]16  大自然的语言 竺可桢
  3. 企业编码生成系统生成6位数字防伪码
  4. win10间歇性闪屏_今天解读win10桌面自动刷新闪屏的完全解决手法
  5. 桌面html快捷方式总消失,桌面软件的快捷方式不见了怎么恢复 快捷方式不见了恢复方法汇总...
  6. win10兼容模式怎么设置_Win10怎么进入安全模式的方法
  7. 局域网内和局域网间的通信(交换机和路由器)
  8. 响铃:看脸的时代,美颜修图app如何光彩活下去?
  9. 活体检测新文by京东金融:利用多帧人脸来预测更精确的深度
  10. 让微波射频工程师颤抖的芯片-MATRICs