首页 > 其他分享 >etcd基础

etcd基础

时间:2023-10-08 14:46:47浏览次数:32  
标签:urls -- 基础 leader 集群 etcd 节点

etcd 是一个分布式、高可用的键值对存储数据库,通过分布式锁、leader选举和写屏障等机制提供安全可靠、高效快速的持久性数据存储和检索。

1. etcd集群

采用raft协议复制到所有节点保证各节点数据一致性
需要半数以上节点正常运行集群才可正常运行
只要有一个节点正常运行就可正常读取数据,不过是非一致性读请求,需要开启一个选项:
SDK 访问需要配置 WithSerializable 选项(默认并不开启)
etcdctl 访问需要配置 --consistency=s 选项
若有节点挂掉,重启后会自动同步集群数据,保证数据一致性
移除 leader 是安全的,但是在选举过程发生的期间有短暂的停机时间
对于apisix,即使整个etcd集群挂掉也可以正常转发请求,因为配置数据已经读取到内存里了,只是不能做新增修改操作

2. 集群配置

$ etcd --name infra0 --initial-advertise-peer-urls http://10.0.1.10:2380
--listen-peer-urls http://10.0.1.10:2380
--listen-client-urls http://10.0.1.10:2379,http://127.0.0.1:2379
--advertise-client-urls http://10.0.1.10:2379
--initial-cluster-token etcd-cluster-1
--initial-cluster infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380
--initial-cluster-state new
以 --initial-cluster 开头的命令行参数将在 etcd 随后的运行中被忽略,可以在初始化启动进程之后随意的删除环境变量或者命令行标记,也就是只在节点启动的时候起作用
etcd 支持对渐进的运行时集群进行重配置,这容许用户在运行时更新集群成员(升级、添加、移除等),所有集群的改动一次一个的完成。
在etcd中,为了安全每个运行时重配置必须通过两阶段来完成,即通知集群新配置和启动新成员。

3. 配置参数

3.1 成员参数
--name 节点唯一名称,建议主机名
--data-dir 数据目录路径
--wal-dir wal目录路径
--heartbeat-interval 心跳间隔时间
--election-timeout 选举超时时间
--listen-peer-urls 与其他节点进行通信的监听地址列表
--listen-client-urls 与客户端进行通信的监听地址列表
3.2 集群参数
--initial 前缀标记用于启动或运行时重配置新成员,当重新启动一个已有的成员时被忽略
--initial-advertise-peer-urls 通知其他节点与本节点进行通信的地址列表,可以使用域名,一般是listen-peer-urls的子集
--advertise-client-urls 通知其他节点客户端接入本节点的地址列表,可以使用域名,一般是listen-client-urls的子集
--initial-cluster 初始化集群配置,应该包含所有初始节点信息
--initial-cluster-token 集群唯一标识,相同标识的节点将视为在一个集群内
--initial-cluster-state 初始集群状态,new为初始静态或DNS引导期间出现的所有成员,existing则将尝试加入已有集群
3.3 安全参数
--trusted-ca-file 客户端服务器的路径TLS可信CA证书文件
--cert-file 客户端服务器TLS证书文件的路径
--key-file 客户端服务器TLS密钥文件的路径

4.节点故障

4.1 follower故障
正常情况下,发送到follower的读请求会直接处理,而写请求则会转发给leader处理,当少于一半的follower故障时,并不会影响整个集群的正常运行,但是客户端将不能发送请求到故障节点,所以需要更新客户端连接地址列表,当连接到故障节点时,客户端一般会自动重新连接到其他节点。
对于写请求来说,如果故障时请求已经转发给leader,那请求就不会丢失,如果故障时请求还没发到该节点,则会失败然后重试到其他节点,也不会丢失,如果请求已经发送到该节点,但还没有转发给leader,则可能会丢失。
4.2 leader故障
当leader故障时, etcd集群自动选举一个新的leader,在选举期间,集群不能处理任何写请求。
在选举期间发送的写请求将排队等待处理直到新的leader被选举出来,已经发送给旧leader但是还没有提交的写请求可能会丢失。
从用户的角度,在新的 leader 选举之后某些写请求可能超时。无论如何,已提交的请求从来不会丢失。
etcd 集群自动从临时故障(例如,机器重启)中恢复,当集群的大多数成员故障时,etcd 集群故障并无法接收更多写请求,也无法自动恢复。

5. 备份恢复

5.1 集群备份
恢复集群首先需要来自etcd成员的键空间的快照,快照可以用 etcdctl snapshot save 命令从活动成员获取,或者是从数据目录复制 member/snap/db 文件。
5.2 集群恢复
为了恢复集群,需要的只是一个简单的快照 “db” 文件,使用 etcdctl snapshot restore 命令创建新的数据目录,所有成员应该使用相同的快照恢复。
然后,用新的数据目录启动 etcd,相当于创建一个新的集群,需要等所有初始化节点都启动成功后,才能正常运行。

标签:urls,--,基础,leader,集群,etcd,节点
From: https://www.cnblogs.com/zlw-xyz/p/17749009.html

相关文章

  • etcd备份和恢复
    1.初始化集群$etcd--nameinfra0--initial-advertise-peer-urlshttp://192.168.26.13:2380--listen-peer-urlshttp://192.168.26.13:2380--listen-client-urlshttp://192.168.26.13:2379,http://127.0.0.1:2379--advertise-client-urlshttp://192.168.26.13:2379--in......
  • 2023-2024-1 20231327 司宏林 《计算机基础与程序设计》第2周学习总结
    学期(如2023-2024-1)学号(如:20231300)《计算机基础与程序设计》第X周学习总结作业信息这个作业属于哪个课程<班级的链接>(2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/12998......
  • GO数组解密:从基础到高阶全解
    在本文中,我们深入探讨了Go语言中数组的各个方面。从基础概念、常规操作,到高级技巧和特殊操作,我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南。无论您是初学者还是经验丰富的开发者,这篇文章都将助您更深入地理解和掌握Go数组的实际应用。关注公众号【TechLeadClou......
  • 2023-2024-1 20231421 《计算机基础与程序设计》第二周学习总结
    作业信息作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02作业目标:自学《计算机科学概论》和《c语言程序设计》第一章教材学习内容总结一、《计算机科学概论》1.计算机系统是由信息,硬件,程序设计,操作系统,应用和通信由内而外组成的2.了解了计算机的历史二、《c......
  • 学期2023-2024-1 20231417 《计算机基础与程序设计》第二周学习总结
    计算机科学概论第一章1.计算系统分为:软件,硬件,数据2.计算系统的层次是抽象c语言程序设计1.生如了解了什么是编程,为什么要学习编程以及怎么学习学习进度条 代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长目标5000行30篇400小时 第一周 1/1......
  • GO数组解密:从基础到高阶全解
    在本文中,我们深入探讨了Go语言中数组的各个方面。从基础概念、常规操作,到高级技巧和特殊操作,我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南。无论您是初学者还是经验丰富的开发者,这篇文章都将助您更深入地理解和掌握Go数组的实际应用。关注公众号【TechLeadClo......
  • 2023-2024-1 20231302《计算机基础与程序设计》第二周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02这个作业的目标<数字化,信息安全,自学教材《计算机科学概论》第1章并完成云班课测试、自学教材《C语......
  • Python入门示例系列08 基础语法Syntax
    语法Syntax标点符号punctuation 标识符Identifiers(alsoreferredtoasnames)给变量variable、类class、对象object、方法method、函数function等取名(标识符)时有以下规则:   第一个字符必须是字母表中字母或下划线_。   标识符的其他的部分由字母、数字和下划线组成......
  • 学期2023-2024-1 20231417 《计算机基础与程序设计》第二周学习总结
    学期2023-2024-120231417《计算机基础与程序设计》第二周学习总结教材学习内容总结《计算机科学概论》第一章:1.计算系统的分层以及计算系统的核心板块:硬件、软件、数据。2.抽象是一种思考问题的方式删除或隐藏了复杂的细节,保留实现目标所必须的信息3.计算机的四代硬件简史,......
  • Kubeflow基础知识
    kubeflow基础知识kubeflow简介kubeflow是谷歌开源的MLOps开源平台,其中包含的不同组件代表了机器学习生命周期的不同阶段。下图是kubeflow组织ML工作流程:kubeflow组件介绍1.kubeflowPipelinespipelines是对机器学习工作流的一种描述,当运行一个pipeline时系统会启动一......