【ETCD】简介安装常用操作---图文并茂详细讲解

news2024/10/6 16:30:12

目录

一 简介

1.1 etcd是什么

1.2. 特点

1.3. 使用场景

1.4 关键字

1.5 工作原理

二 安装

2.1 etcd安装前介绍

2.2 安装

2.3 启动

2.4 创建一个etcd服务

三 常用操作


一 简介

1.1 etcd是什么

      etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。

官网上的一段描述:

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

etcd是一个分布式,键值对存储系统,用于分布式的关键数据的存储。

1.2. 特点

  • 简单的接口,通过标准的HTTP API进行调用,也可以使用官方提供的 etcdctl 操作存储的数据

  • 键值对存储

  • 有监听机制,可以监听特定键的变化,并作出响应

1.3. 使用场景

  • 服务发现(Service Discovery)
  • 消息发布与订阅
  • 负载均衡
  • 分布式通知与协调
  • 分布式锁

1.4 关键字

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来定位数据

1.5 工作原理

第1部分是HTTP Server: 用于处理用户发送的API请求,以及其它etcd节点的同步与心跳信息请求
第2部分是Store:用于处理etcd支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是etcd对用户提供的大多数API功能的具体实现
第3部分是Raft:Raft强一致性算法的具体实现,是etcd的核心
第4部分是WAL:Write Ahead Log(预写式日志),是etcd的数据存储方式。除了在内存中存有所有数据的状态以及节点的索引以外,etcd就通过WAL进行持久化存储。
在WAL中,所有的数据提交前都会事先记录日志。Snapshot是为了防止数据过多而进行的状态快照;Entry表示存储的具体日志内容

二 安装

2.1 etcd安装前介绍

  • etcd在生产环境中一般推荐集群方式部署
  • etcd使用的2个默认端口号:2379和2380
    2379:用于客户端通信(类似于sqlserver的1433/oracle的1521/mysql的3306)
    2380:用于与集群中的Peer通信
  • 因为etcd是go语言编写的,安装只需要下载对应的二进制文件,并放到合适的路径就行

2.2 安装

1) 创建并切换到下载目录

创建一个存储etcd的文件目录并且进入该目录中

mkdir /usr/local/mytools && cd /usr/local/mytools

 2)下载

下载的etcd的话可能有点慢,小编这就已经下载好了上传即可

wget https://github.com/etcd-io/etcd/releases/download/v3.4.3/etcd-v3.4.3-linux-amd64.tar.gz 

3)解压文件到当前目录

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

4)切换至etcd根目录中,运行查看命令ls,里面会有一些文档和2个二进制文件etcd和etcdctl

etcd是server端,etcdctl是客户端

cd etcd-v3.4.3-linux-amd64 && ls

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

cp etcd etcdctl /usr/local/bin

6)查看etcd版本

etcd --version

7)设置etcdctl版本(v2/v3)

注意:etct3.4.3默认使用v3命令所以步骤7可省略,之前版本此步骤不可少,例如:v3.3.10

vi /etc/profile

# 按键盘i键,最后一行指定etcdctl命令的版本为v3
export ETCDCTL_API=3

环境变量配置示意图:

按ESC,输入:wq保存并退出

# 刷新环境变量
source /etc/profile
#查看当前etcdctl的版本信息
#v3查看版本号
etcdctl version
# 更多命令帮助可以查询
etcdctl --help  

2.3 启动

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

etcd

输入后如果出现下图样子证明etcd服务就没问题 

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

2.4 创建一个etcd服务

1)建立etcd相关目录(即数据文件和配置文件的保存位置)
/etc目录是整个Linux系统的中心,其中包含所有系统管理和维护方面的配置文件,所以etcd的配置也放在这里

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

2)创建etcd.conf配置文件并编辑

vim /etc/etcd/etcd.conf

etcd.conf内容:

# 节点名称

ETCD_NAME="etcd0"

# 指定数据文件存放位置

ETCD_DATA_DIR="/var/lib/etcd/"

3)创建systemd配置文件并编辑

vim /etc/systemd/system/etcd.service

systemd内容:

[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

## 对于那些严格要求 必须存在真实可用的网络连接的单元, 

## 应该在其单元文件中包含 Wants=network-online.target 

## 与 After=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服务

## 1.重新加载systemd服务
systemctl daemon-reload

## 2.设置开机自启动
systemctl enable etcd 


## 3.查看etcd运行状态
systemctl status etcd


## 4.启动etcd
systemctl start etcd

借鉴,可不操作

## 5.停止服务
systemctl stop etcd

## 6.重启etcd
systemctl restart etcd

三 常用操作

1) 如何获取帮助

etcdctl -h

2)put

etcdctl put /testdir/testkey "Hello world"

前面说了,etcd是一种分布式键值对关系,如上命令进行解释

etcdctl: 这是 etcd 的命令行工具,用于与 etcd 集群进行交互。通过 etcdctl,用户可以执行各种操作,如设置键值对、获取键值对、监听键的变化等。

put: 这是 etcdctl 的一个子命令,用于在 etcd 中创建或更新一个键值对。

/testdir/testkey: 这是键(key)的部分。在 etcd 中,键是唯一的,并且可以使用斜杠(/)来创建层次结构或目录。在这个例子中,testdir 可以被看作是一个目录,而 testkey 是该目录下的一个键。

"Hello world": 这是值(value)的部分。在这个例子中,与键 /testdir/testkey 关联的值是字符串 "Hello world"。

3)get  (获取键与值)

etcdctl get /testdir/testkey

--sort 对结果进行排序
--consistent 将请求发给主节点,保证获取内容的一致性。

4)del   (删除清空)

# 清空数据
etcdctl del / --prefix

#删除所有/test前缀的节点
etcdctl del /test --prefix

5)watch  (监听)

#1. 增加一个key,值为hello(客户端窗口1)
etcdctl put key1 "hello"

#2. 打开一个新的客户端窗口2,监听key1的变化
etcdctl watch key1

#3. 回到窗口1,向key1 中删除原有的值put新值为hello work
etcdctl put key1 "hello work"

# 4. 此时可以在窗口2中看到监听输出


# 查看版本信息
curl http://127.0.0.1:2379/version

 如下的动态图,当我开了两个窗口,另一个窗口监听到了另一个窗口的键与值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1499765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫实战——巴黎圣母院新闻【内附超详细教程,你上你也行】

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不…

【开源】SpringBoot框架开发河南软件客服系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、系统展示四、核心代码4.1 查询客户4.2 新增客户跟进情况4.3 查询客户历史4.4 新增服务派单4.5 新增客户服务费 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的河…

10、Linux项目部署-WAR包、JAR包

一、WAR包 第一步,把War包解压,再重新打包成Zip。 第二步,在Linux里创建一个项目文件夹,将Zip的内容解压在这个文件夹内。 例如,创建的项目文件夹是/usr/local/software/project1 第三步,修改Tomcat配置…

Linux基础IO【 详 解 】

文章目录 C语言文件IOC语言文件接口汇总默认打开的三个流 系统文件IOopenclosewriteread 文件描述符fd文件描述符的分配规则重定向重定向的本质dup2 FILEFILE当中的文件描述符FILE当中的缓冲区 理解文件系统初识inode磁盘分区与格式化介绍 软硬链接软链接硬链接软硬链接的区别 …

混合专家系统(MoE)概述

MoE概述 神经网络的学习能力受限于它的参数规模,因此寻找更有效的方法来增加模型的参数已成为深度学习研究的趋势。混合专家系统 (MoE) 可以大幅增加模型参数规模且不会等比例地增加模型计算量,对于单个样本,神经网络只有某些部分被激活。在混…

基于JAVA+ springboot实现的抗疫物质信息管理系统

基于JAVA springboot实现的抗疫物质信息管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 …

手机ip地址获取失败是什么原因

在移动互联网时代,手机的IP地址不仅是设备在网络中的唯一标识,还关系到我们的网络体验与数据安全。然而,有时我们在使用手机时可能会遇到IP地址获取失败的情况。这种情况不仅会影响我们的在线活动,还可能引发一系列问题。本文将探…

【动态规划】二维费用的背包问题

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:题目解析 🌎推荐文章:【LeetCode】winter vacation training 目录 👉🏻一和零 👉🏻一…

智慧城市的新引擎:物联网技术引领城市创新与发展

目录 一、引言 二、物联网技术与智慧城市的融合 三、物联网技术在智慧城市中的应用 1、智慧交通管理 2、智慧能源管理 3、智慧环保管理 4、智慧公共服务 四、物联网技术引领城市创新与发展的价值 五、挑战与前景 六、结论 一、引言 随着科技的日新月异,物…

国家妇女节放假是法定的假日

在这个充满活力和希望的春天,我们迎来了一个特殊的节日——国家妇女节。这是一个属于所有女性的节日,是一个庆祝女性成就、关爱女性权益的时刻。在这个特殊的日子里,我们不禁要问:国家妇女节放假是法定假日吗?让我们一…

北斗卫星引领智能油气管线革新

北斗卫星引领智能油气管线革新 现代化的油气管线系统已成为国家经济发展的重要基础设施,而北斗卫星则为这些管线注入了新的活力。北斗卫星作为中国自主研发的卫星导航定位系统,其准确度和稳定性在全球范围内享有盛誉。在智能化时代的背景下,…

Pytorch线性回归实现(原理)

设置梯度 直接在tensor中设置 requires_gradTrue,每次操作这个数的时候,就会保存每一步的数据。也就是保存了梯度相关的数据。 import torch x torch.ones(2, 2, requires_gradTrue) #初始化参数x并设置requires_gradTrue用来追踪其计算历史 print(x…

炼石入选国家互联网应急中心CNCERT首批数据安全支撑单位

2024年2月22日,国家计算机网络应急技术处理协调中心(以下简称CNCERT)公示发布了第十届CNCERT网络安全应急服务支撑单位遴选结果,炼石成功入选首批“数据与软件安全评测领域”应急服务支撑单位!本次遴选根据申报单位综合…

MySQL学习笔记(一)数据库事务隔离级别与多版本并发控制(MVCC)

一、数据库事务隔离级别 数据库事务的隔离级别有4种,由低到高分别为Read uncommitted (读未提交)、Read committed(读提交) 、Repeatable read(可重复读) 、Serializable (串行化&a…

世界的尽头是sql注入漏洞

sql注入漏洞大家都了解吧?但是人类也会有类似sql注入型的漏洞存在! sql注入本质是数据内容被当做命令执行。 举个简单的例子: 某国面临全国性战争,发起全国性的捐款捐物,基本流程是: 居民填写自愿捐助单由军…

连接kafka报错:java.io.IOException: Can‘t resolve address:

修改电脑host文件:C:\Windows\System32\drivers\etc\hosts 加上一行 192.168.1.XXX MHA_SLAVE2(192.168.1.XXX 这个是安装kafka 的服务器地址,MHA_SLAVE2是kafka的容器id)

基于深度学习的驾驶员分心驾驶行为(疲劳+危险行为)预警系统使用YOLOv5+Deepsort实现驾驶员的危险驾驶行为的预警监测

人物专注性检测 项目快速预览 主要不同地方为: 1、疲劳检测中去掉了点头行为的检测,仅保留闭眼检测和打哈欠检测。 2、Yolov5的权重进行了重新训练,增加了训练轮次。 3、前端UI进行了修改,精简了部分功能。 项目介绍 该项目…

数字时代下的内部审计蜕变:探索数字化转型的七大关键领域

写在前面 内部审计是一种独立的、客观的确认和咨询活动,包括鉴证、识别和分析问题以及提供管理建议和解决方案。狭义的数字化转型是指将企业经营管理和业务操作的各种行为、状态和结果用数字的形式来记录和存储,据此再对数据进行挖掘、分析和应用。广义…

企业上了BI,做了很多报表,老板为什么还是不满意?

上次讲了企业有了ERP为什么还要上BI,但是部分企业在部署商业智能BI后,没有感受到商业智能BI的高价值,让很多企业老板感觉不太满意。 经过分析后我们发现,很多企业是冲着商业智能BI的火热部署的,并不清楚商业智能BI的具…

AWTK 开源串口屏开发(12) - 记事本应用

记事本是一个很常用的应用,用来编辑和查看文本文件非常方便。在传统的的串口屏中,开发一个记事本应用,即使可能,也是非常麻烦的事情。在 AWTK 串口屏中,内置文件模型和文件选择对话框,实现一个简单的记事本…