首页 > 其他分享 >etcd集群恢复

etcd集群恢复

时间:2023-08-14 12:33:18浏览次数:35  
标签:etcd kubernetes -- 恢复 192.168 etc 集群 https

etcd 概述

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

etcd 内部采用 raft 协议作为一致性算法,etcd基于Go语言实现。

  • 完全复制:集群中的每个节点都可以使用完整的存档
  • 高可用性:Etcd可用于避免硬件的单点故障或网络问题
  • 一致性:每次读取都会返回跨多主机的最新写入
  • 简单:包括一个定义良好、面向用户的API(gRPC)
  • 安全:实现了带有可选的客户端证书身份验证的自动化TLS
  • 快速:每秒10000次写入的基准速度
  • 可靠:使用Raft算法实现了强一致、高可用的服务存储目录

ETCD 集群运维相关的基本知识:

  • 读写端口为: 2379, 数据同步端口: 2380
  • ETCD集群是一个分布式系统,使用Raft协议来维护集群内各个节点状态的一致性。
  • 主机状态 LeaderFollowerCandidate
  • 当集群初始化时候,每个节点都是Follower角色,通过心跳与其他节点同步数据
  • 通过Follower读取数据,通过Leader写入数据
  • Follower在一定时间内没有收到来自主节点的心跳,会将自己角色改变为Candidate,并发起一次选主投票
  • 配置etcd集群,建议尽可能是奇数个节点,而不要偶数个节点,推荐的数量为 3、5 或者 7 个节点构成一个集群。
  • 使用 etcd 的内置备份/恢复工具从源部署备份数据并在新部署中恢复数据。恢复前需要清理数据目录
  • 数据目录下 snap: 存放快照数据,etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
  • 数据目录下 wal: 存放预写式日志,最大的作用是记录了整个数据变化的全部历程。在etcd中,所有数据的修改在提交前,都要先写入到WAL中。
  • 一个 etcd 集群可能不应超过七个节点,写入性能会受影响,建议运行五个节点。一个 5 成员的 etcd 集群可以容忍两个成员故障,三个成员可以容忍1个故障。

常用配置参数:

  • ETCD_NAME 节点名称,默认为defaul
  • ETCD_DATA_DIR 服务运行数据保存的路
  • ETCD_LISTEN_PEER_URLS 监听的同伴通信的地址,比如http://ip:2380,如果有多个,使用逗号分隔。需要所有节点都能够访问,所以不要使用 localhost
  • ETCD_LISTEN_CLIENT_URLS 监听的客户端服务地址
  • ETCD_ADVERTISE_CLIENT_URLS 对外公告的该节点客户端监听地址,这个值会告诉集群中其他节点
  • ETCD_INITIAL_ADVERTISE_PEER_URLS 对外公告的该节点同伴监听地址,这个值会告诉集群中其他节
  • ETCD_INITIAL_CLUSTER 集群中所有节点的信息
  • ETCD_INITIAL_CLUSTER_STATE 新建集群的时候,这个值为 new;假如加入已经存在的集群,这个值为existing
  • ETCD_INITIAL_CLUSTER_TOKEN 集群的ID,多个集群的时候,每个集群的ID必须保持唯一

静态 Pod方式 集群备份恢复

查看集群状况

/root/etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
--endpoints=https://192.168.148.128:2379,https://192.168.148.129:2379,https://192.168.148.130:2379 \
-w table endpoint status

 

备份etcd

ETCDCTL_API=3; ./etcdctl snapshot save fengjian.db --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key

 

etcd恢复故障

1. 删除apiserver etcd 静态pod

# 三台master 都进行操作
[root@master1 ~]# cd  /etc/kubernetes
[root@master1 ~]# mkdir bak
[root@master1 ~]# mv manifests/*  bak

2. 删除etcd 目录

#三台master 同时操作
rm /var/lib/etcd -rf

3. master逐台恢复etcd

#master1
/root/etcdctl snapshot restore /root/fengjian.db  --name master1  --cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key --cacert=/etc/kubernetes/pki/etcd/ca.crt \
--endpoints=https://127.0.0.1:2379 --initial-advertise-peer-urls=https://192.168.148.128:2380 \
--initial-cluster=master1=https://192.168.148.128:2380,master2=https://192.168.148.129:2380,master3=https://192.168.148.130:2380 \
--data-dir=/var/lib/etcd #master2 /root/etcdctl snapshot restore /root/fengjian.db  --name master2  --cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key  --cacert=/etc/kubernetes/pki/etcd/ca.crt   \
--endpoints=https://127.0.0.1:2379  --initial-advertise-peer-urls=https://192.168.148.129:2380   \
--initial-cluster=master1=https://192.168.148.128:2380,master2=https://192.168.148.129:2380,master3=https://192.168.148.130:2380 \
--data-dir=/var/lib/etcd
#master3
/root/etcdctl snapshot restore /root/fengjian.db  --name master3  --cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key --cacert=/etc/kubernetes/pki/etcd/ca.crt \
--endpoints=https://127.0.0.1:2379 --initial-advertise-peer-urls=https://192.168.148.130:2380 \
--initial-cluster=master1=https://192.168.148.128:2380,master2=https://192.168.148.129:2380,master3=https://192.168.148.130:2380 \
--data-dir=/var/lib/etcd

注释:以下参数从etcd yaml文件中获取
--initial-advertise-peer-urls  --initial-cluster 

 

再次查看etcd状态
/root/etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://192.168.148.128:2379,https://192.168.148.129:2379,https://192.168.148.130:2379 \
-w table endpoint statu

 

 还原etcd  apiserver等静态pod

# 三台master 都进行操作
[root@master1 ~]# cd  /etc/kubernetes
[root@master1 ~]# mkdir bak
[root@master1 ~]#cp  bak/*  manifests/

 

查看集群状态

kubectl get node
kubectl get pod  -n kube-system

 

标签:etcd,kubernetes,--,恢复,192.168,etc,集群,https
From: https://www.cnblogs.com/fengjian2016/p/17628315.html

相关文章

  • form 表单恢复初始数据
    1表单数据的保存和恢复方法1.1前端数据保存方法在前端,我们可以使用两种方法来保存表单数据:LocalStorage和Cookie。使用LocalStorage保存数据:LocalStorage是浏览器提供的一种本地存储机制,它允许将数据以键值对的形式存储在用户的浏览器中。要保存表单数据到LocalStorag......
  • Redis主从、哨兵和集群环境搭建
    一、Redis单机安装(1)安装依赖的C语言yuminstall-ygcc-c++automakeautoconflibtoolmaketcl(2)上传安装包并解压cd/usr/local/tmptarzxfredis-5.0.5.tar.gz(3)编译并安装cd/usr/local/tmp/redis-5.0.5/#编译make#安装makeinstallPREFIX=/usr/local/redis(4)开启守护......
  • 【我和openGauss的故事】openGauss 3.1.1企业版主备集群升级至5.0.0操作指南
    尚雷openGauss2023-07-2917:58发表于四川收录于合集#第六届openGauss技术文章征集初审合格文章62个前言:继前几日测试部署openGauss5.0并写了[[Centos/RHEL7安装部署openGauss5.0企业版一主二备一级联操作指南]](http://mp.weixin.qq.com/s?__biz=MzIyMDE3ODk1Nw==&mid=2......
  • 【我和openGauss的故事】openGauss5.0企业版集群一主一备安装V1.0
    王zz[openGauss](javascript:void(0);)2023-07-2917:58发表于四川收录于合集#第六届openGauss技术文章征集初审合格文章62个一、基本环境文档说明:本方案只有主备数据同步,没有自动故障诊断、切换。安装方式:利用xml配置文件管理工具:om方式二、系统环境设置类型系统版本IP用户名/......
  • 【我和openGauss的故事】openGauss主备集群节点的添加与删除
    风一样自由openGauss2023-07-2917:58发表于四川一.环境准备已搭建openGauss一主两备集群(企业版5.0),环境如下:主机IP主机名节点类型10.100.10.92yf1主节点10.100.10.93yf2备节点10.100.10.94yf3备节点二.gs_dropnode删除集群备节点拟删除10.100.10.94节点。1.前提条件删除备......
  • k8s etcd operator
    在k8s生态中,Operator是灵活管理有状态应用的解决方案。operator通过crd来描述部署的有状态应用和自定义控制器来完成部署和运维工作。EtcdOperator部署Etcd集群,采用的是静态集群的方式。好处是不必依赖一个额外的服务发现机制来组建集群,适合本地容器化部署。难点在于部署时规划好......
  • 当kafka集群其中一台宕机后,集群不能正常工作(已解决)
    https://blog.csdn.net/DreamsArchitects/article/details/108573887?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-108573887-blog-126773760.235%5Ev38%5Epc_relevant_sort_base1&depth_1-utm_sour......
  • 安装etcd服务
    #下载etcd-v3.4.27wgethttps://github.com/etcd-io/etcd/releases/download/v3.4.27/etcd-v3.4.27-linux-arm64.tar.gz################################################方式1:#etcd服务的配置文件都定义在etcd.service中#在etcd.conf文件中少体现###############......
  • 转载 | win11右键改为win10的bat命令(以及恢复方法bat)
    原文来自这里:https://blog.51cto.com/knifeedge/5340751 版权归:IT利刃出鞘  本质上就是写入注册表。 一、右键菜单改回Win10(展开)1.新建文件:win11右键展开.bat2.填写脚本内容regadd"HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\Inproc......
  • Oracle-快速恢复区
    快速恢复区是一个磁盘目标,用作与恢复相关的文件的默认位置。可以使用两个实例参数对快速恢复区进行控制:db_recovery_file_destdb_recovery_file_dest_size第一个参数指定位置。这可以是文件系统目录或ASM磁盘组。多个数据库可以共享一个公共目标;在目标中,每个数据库都有各自自动创......