[转帖]etcd的备份与恢复

etcd,备份,恢复 · 浏览次数 : 0

小编点评

## etcd 文件配置详解 **etcd.service文件** 此文件定义了etcd集群的配置,包括: * **节点名称** * **集群名称** * **初始化地址** * **客户端地址** * **证书路径** * **加密设置** **主要配置项:** * **member list**:列出集群中的所有节点信息,包括 IP 地址、端口、状态等。 * **endpoint health**:检查节点是否健康并返回健康状态的节点列表。 * **defrag**:对集群进行碎片整理。 * **snapshot**:创建快照,用于恢复集群。 * **backup**:定期备份集群,用于恢复。 **常用命令:** * **etcdctl get**:获取特定路径的配置值。 * **etcdctl put**:设置特定路径的配置值。 * **etcdctl del**:删除特定路径的配置值。 * **etcdctl snapshot save**:创建快照。 * **etcdctl snapshot restore**:从快照中恢复集群。 * **kubectl exec**:在集群中运行命令。 **使用快照进行恢复:** 1. 创建一个新目录用于存储快照文件。 2. 使用 `etcdctl snapshot save` 命令创建快照文件。 3. 使用 `kubectl delete pod` 命令删除原目录中的 etcd 文件。 4. 使用 `etcdctl snapshot restore` 命令从快照文件中恢复集群。

正文

https://www.cnblogs.com/wyh-l6/p/16547040.html

 

etcd是coreos团队在2013年6月发起的开源项目,现在在githab上托管
etcd目标构建一个高可用的分布式键值数据库
 
etcd具有以下属性:
    完全复制:集群中的每个节点都可以使用完整的存档
    高可用性:etcd可用于避免硬件的单点故障或网络问题
    一致性:每次读取都会返回跨多主机的最新写入
    简单:包括一个定义料号、面向多用户的API
    安全:实现了带有可选的客户端证书身份验证自动化TLS
    快速:每秒10000次写入的基准速度
    可靠:使用Raft你发su实现了存储的合理分布Etcd的工作原理
 
etcd集群:复制式集群,竟像式集群,坏掉集群一半以内的节点没有问题
 
etcd.service文件说明:
/us/local/bin/etcd:二进制文件路径
--name:节点名称,集群内节点名称不能重复
--initial-advertise-peer-urls:集群间会通告,此为通告地址,声明节点端口,2380集群中使用,2379客户端使用
--listen-client-urls:给客户端使用的
--initial-cluster-token:初始化集群token,集群内的节点token需要一致
--initial-cluster:集群中所有的节点name需要写进去,逗号间隔
--snapshot-count:快照的数量上限
--auto-compaction-retention=1:第一次压缩等待1小时,以后每次1小时%10=6分钟压缩一次
--auto-compaction-mode=periodic:模式是周期性压缩
--max-request-bytes:每次请求的最大字节数,默认一个key最大为1.5M
--quota-backend-bytes:存储空间大小限制,超过限制后会有警告
 
检测本机心跳:
etcdctl endpoint health
 
集群节点心跳检测:
export node_etcd="192.168.213.11 192.168.213.12 192.168.213.13"; for i in $node_etcd; do ETCDCTL_API=3 /usr/local/bin/etcdctl --endpoints=https://${i}:2379 --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem endpoint health; done
 
以表格的形式输出成员
/usr/local/bin/etcdctl --write-out=table member list --endpoints=https://192.168.213.11:2379 --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem 
 
集群碎片整理:
ETCDCTL_API=3 /usr/local/bin/etcdctl defrag --cluster --endpoints=https://192.168.213.11:2379 --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem 
 
表格输出集群成员详细信息
export node_etcd="192.168.213.11 192.168.213.12 192.168.213.13"; for i in $node_etcd; do ETCDCTL_API=3 /usr/local/bin/etcdctl --endpoints=https://${i}:2379 --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --write-out=table endpoint status; done
 
etcd增删改查:
查询:
    etcdctl get / --keys-only --prefix
        查看所有的key,只看前缀
写:
    etcdctl put /test_key "192.168.213.11"
        在根下创建一个test_key,值为192.168.213.11
删除:
    etcdctl del /test_key
        删除根下的test_key数据,此操作绕过apiserver,慎用!!
 
watch机制:基于不断监看数据,发生变化就主动触发客户端通知,watch机制支持某一个key,也支持一个范围
   
   
   
    
 
#####################################快照备份&恢复#########################################
etcdctl snapshot save /opt/etcd_test.db #快照备份
######快照恢复#######
#--data-dir指定的恢复目录可以为空,但是一定不能有数据
##################实战演练##################
创建三个pod
kubectl run net-test1 --image=centos:7.9.2009 sleep 10000000
kubectl run net-test2 --image=centos:7.9.2009 sleep 10000000
kubectl run net-test3 --image=centos:7.9.2009 sleep 10000000
etcdctl snapshot save /opt/etcd_test_new.db #创建快照
kubectl delete pod net-test3
systemctl stop etcd
tar -zcvf /home/wyh/etcd.tar.gz /var/lib/etcd #备份原目录
rm -rf /var/lib/etcd #删除原目录
etcdctl snapshot restore /opt/etcd_save_new.db  --data-dir=/var/lib/etcd #快照还原
 
##########################################快照备份恢复结束########################################
 
######################################使用kubeasz备份并恢复#################################
cd /etc/kubeasz
./ezctl backup k8s-cluster1
#执行成功后备份文件会放在/etc/kubeasz/clusters/k8s-cluster1/backup(这个备份不单单备份etcd)
#产生两个文件snapshot.db(如果此文件存在再次备份,会更新掉次文件,恢复数据也是根据此文件恢复)和snapshot_202207290935.db(按照你备份生成时间)
./ezctl restore k8s-cluster1 #根据/etc/kubeasz/clusters/k8s-cluster1/backup/snapshot.db恢复数据
 
##比较保守的一种方法
######################################kubeasz备份恢复完成####################################
 
 
 
 
 

与[转帖]etcd的备份与恢复相似的内容:

[转帖]etcd的备份与恢复

https://www.cnblogs.com/wyh-l6/p/16547040.html etcd是coreos团队在2013年6月发起的开源项目,现在在githab上托管 etcd目标构建一个高可用的分布式键值数据库 etcd具有以下属性: 完全复制:集群中的每个节点都可以使用完整的存档 高可

[转帖]etcd的安装教程

Linux 系统中,下载最新版本的ETCD Releases · etcd-io/etcd · GitHub 一.下载方式 ETCD_VER=v3.5.3 # choose either URLGOOGLE_URL=https://storage.googleapis.com/etcdGITHUB_

[转帖]突破 etcd 限制!字节自研 K8s 存储 KubeBrain

https://my.oschina.net/u/5632822/blog/5596911 KubeBrain 是字节跳动针对 Kubernetes 元信息存储的使用需求,基于分布式 KV 存储引擎设计并实现的、可以取代 etcd 的元信息存储系统,目前支撑着线上超过 20,000 节点的超大规模

[转帖]长篇图解 etcd 核心应用场景及编码实战

https://xie.infoq.cn/article/3329de088beb60f5803855895 一、白话 etcd 与 zookeeper 二、etcd 的 4 个核心机制 三、Leader 选举与客户端交互 四、etcd 的应用场景 4.1. kubernetes 大脑 4.2. 服

[转帖]etcd网络模块解析

https://www.cnblogs.com/luohaixian/p/17509742.html 1. RaftHttp模块介绍 在etcd里raft模块和网络模块是分开的,raft模块主要负责实现共识算法,保证集群节点的一致性,消息的发送和接收则交给raftHttp网络模块来处理,由上层应用模

[转帖]etcd raft模块解析

https://www.cnblogs.com/luohaixian/p/16641100.html 1. Raft简介 raft是一个管理复制式日志的共识算法,它是通过复制日志的方式来保持状态机里的数据是最终一致的。 整体的一个运行描述图: 从图中可以看到由几部分组成,共识模块、日志模块和状态机。

[转帖]TiKV读写流程浅析

https://www.cnblogs.com/luohaixian/p/15227838.html 1.TiKV框架图和模块说明 图1 TiKV整体架构图 1.1.各模块说明 PD Cluster:它是由多个PD节点组成的etcd集群,PD是具有“上帝视角”的管理组件,负责存储元数据和进行负载均衡

[转帖]共识、线性一致性与顺序一致性

https://segmentfault.com/a/1190000022248118 etcd 是线性一致性读,而 zk 却是顺序一致性读,再加上各种共识、强弱一致的名词,看的时候总会混淆,这篇文档就列举下分布式系统中的那些"一致性名词",引用了很多其他的文章,不过会多出一些例子来帮助理解。 什么

[转帖]Etcd+Confd实现Nginx配置文件自动管理

https://www.cnblogs.com/zhengchunyuan/p/9681954.html 一、需求 我们使用Nginx做七层负载均衡,后端是Tomcat。项目采用灰度发布方式,每次项目升级,都要手动先从Nginx下摘掉一组,然后再升级这组,当项目快速迭代时,手动做这些操作显然会增加部

[转帖]Quick Start Guide

Before we begin be sure to download and install confd. Select a backend confd supports the following backends: etcd consul vault environment variables