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

目录

一 简介

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.rhkb.cn/news/271429.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【“双碳”目标】Acrel-2000Z分布式光伏发电监测系统解决方案

1 概述 “十四五”期间,随着“双碳”目标提出及逐步落实,本就呈现出较好发展势头的分布式光伏发展有望大幅提速。就“十四五”光伏发展规划,国家发改委能源研究所可再生能源发展中心副主任陶冶表示,“双碳”目标意味着国家产业结…

百度智能云发布专用向量数据库 VDB 1.0,全新设计内核开启性能狂飙

1 专用向量数据库应对未来业务挑战 向量数据库 向量检索 数据库 向量数据库大致可以分为 2 部分:向量数据的检索,以及向量数据的存储和管理。 向量数据库的性能,比如高 QPS、低延时等,使得业务能够更快的响应用户的查询请求…

神经网络(neural network)

在这一章中我们将进入深度学习算法,学习一些神经网络相关的知识,这些是有更加强大的作用,更加广泛的用途。 神经元和大脑(neurons and the brain): 我们对于我们的编程的进步主要来自我们对于大脑的研究,根据我们对于大脑的研究…

经典排序算法之希尔排序|c++代码实现||什么是希尔排序|如何代码实现

引言 排序算法c实现系列第4弹——希尔排序 算法介绍 希尔排序(Shell Sort),也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。该排序算法的基本思想是将原始序列分成若干个子序列&#xf…

Finetuning Large Language Models: Sharon Zhou

Finetuning Large Language Models 课程地址:https://www.deeplearning.ai/short-courses/finetuning-large-language-models/ 本文是学习笔记。 Goal: Learn the fundamentals of finetuning a large language model (LLM). Understand how finetu…

Scrapy与分布式开发(2.3):lxml+xpath基本指令和提取方法详解

lxmlxpath基本指令和提取方法详解 一、XPath简介 XPath,全称为XML Path Language,是一种在XML文档中查找信息的语言。它允许用户通过简单的路径表达式在XML文档中进行导航。XPath不仅适用于XML,还常用于处理HTML文档。 二、基本指令和提取…

pytorch续写tensorboard

模型训练到一半有 bug 停了,可以 resume 继续炼,本篇给出 pytorch 在 resume 训练时续写 tensorboard 的简例,参考 [1-3],只要保证 writer 接收的 global step 是连着的就行。 Code import numpy as np from torch.utils.tensor…

【node版本问题】运行项目报错 PostCSS received undefined instead of CSS string

最近该项目没有做任何修改,今天运行突然跑不起来报错了 PostCSS received undefined instead of CSS string 【原因】突然想起来期间有换过 node 版本为 16.17.1 【解决】将 node 版本换回之前的 14.18.0 就可以了

电脑不小心格式化了,怎么恢复?

在这个数字化时代,电脑已经成为我们日常生活和工作中不可或缺的工具。然而,有时我们可能会不小心格式化电脑硬盘,导致重要数据的丢失。那么,电脑不小心格式化了,怎么恢复? 别着急,在本篇攻略中&…

25考研资料PDF汇总

资料V馊public号ZL研知己 V馊public号ZL研知己 25考研资料PDF汇总

开关电源安规测试标准与测试要求

安规测试是对开关电源进行电气性能、安全性能等检测,确保开关电源符合规定并且安全可靠,为开关电源的质量把关。那么开关电源安规测试有哪些测试要求和标准呢? 开关电源安规测试要求 一、测试前 1. 首先,要检查测试环境&#xff0…

Python数据处理实战(5)-上万行log数据提取并分类进阶版

系列文章: 0、基本常用功能及其操作 1,20G文件,分类,放入不同文件,每个单独处理 2,数据的归类并处理 3,txt文件指定的数据处理并可视化作图 4,上万行log数据提取并作图进阶版 …

基于OpenCV的图形分析辨认02

目录 一、前言 二、实验目的 三、实验内容 四、实验过程 一、前言 编程语言:Python,编程软件:vscode或pycharm,必备的第三方库:OpenCV,numpy,matplotlib,os等等。 关于OpenCV&…

WPF学习三(MVVM+自定义按钮等的登录界面)

跟着bilibil龙马哥视频做的一个登录界面,个人感觉讲得很到位,适合新手),他是从开始的前后绑定慢慢解耦合到MVVM,让我较快的理解了WPF的基础。 【WPF入门】WPF零基础到精通,从概念到实操,步步提升…

换手机后日记不见了怎么恢复?换手机日记内容同步方法

曾经,我使用的是一款苹果手机,这部手机陪伴了我整整3年。随着时间的推移,手机内存不够用成为了我面临的一个大问题,因此我决定更换一部新手机——这次我选择了OPPO品牌。在更换手机的过程中,我利用手机搬家软件一键同步…

英语四级开始报名了?大学生如何三个月突破四级【文章底部添加进大学生就业交流群】

目录 一、明确考试内容与要求 二、制定合理的复习计划 三、注重听力和阅读能力的提升 四、加强词汇和语法的积累 五、多做真题和模拟题 英语四级考试,对于大多数大学生来说,是检验英语水平的一个重要标准。随着报名时间的来临,许多同学都…

vue3 ref获取子组件显示 __v_skip : true 获取不到组件的方法 怎么回事怎么解决

看代码 问题出现了 当我想要获取这个组件上的方法时 为什么获取不到这个组件上的方法呢 原來: __v_skip: true 是 Vue 3 中的一个特殊属性,用于跳过某些组件的渲染。当一个组件被标记为 __v_skip: true 时,Vue 将不会对该组件进行渲染&am…

开源模型应用落地-工具使用篇-Spring AI-高阶用法(九)

一、前言 通过“开源模型应用落地-工具使用篇-Spring AI-Function Call(八)-CSDN博客”文章的学习,已经掌握了如何通过Spring AI集成OpenAI以及如何进行function call的调用,现在将进一步学习Spring AI更高阶的用法,如…

vscode 使用ssh进行远程开发 (remote-ssh),首次连接及后续使用,详细介绍

在vscode添加remote ssh插件 首次连接 选择左侧栏的扩展,并搜索remote ssh 它大概长这样,点击安装 安装成功后,在左侧栏会出现远程连接的图标,点击后选择ssh旁加号便可以进行连接。 安装成功后vscode左下角会有一个图标 点击图…

08.回调地狱函数及其解决(Promise链式调用)

一.同步代码和异步代码 1. 同步代码: 逐行执行,需原地等待结果后,才继续向下执行 2. 异步代码: 调用后耗时,不阻塞代码继续执行(不必原地等待),在将来完成后触发回调函数传递结果…