etcd备份恢复

etcd备份恢复,第1张

etcd备份恢复 1. etcd概念及词汇
  • ETCD是用于共享配置和服务发现的分布式、一致性的KV存储系统, 使用Raft协议, 部署和运维都比zk简单

  • 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开始竞选

  • Term:某个节点成为Leader到下一次竞选时间,称为一个Term

  • Index:数据项编号。Raft中通过Term和Index来定位数据

ETCD下载

2. etcd环境变量
  • 也是一个实际案例

参考1

参考2

# etcd 集群中的节点名,这里可以随意,可区分且不重复就行
ETCD_NAME=etcd1

# etcd数据目录
ETCD_DATA_DIR=/var/lib/etcd

# 用于节点之间通信的 URL,可监听多个,集群内部将通过这些 URL 进行数据交互(如选举、数据同步等)
ETCD_LISTEN_PEER_URLS=https://192.168.142.161:2380

# 监听的用于客户端通信的 URL,同样可以监听多个
ETCD_LISTEN_CLIENT_URLS=https://192.168.142.161:2379,https://127.0.0.1:2379

# 广播给外部客户端使用的url,建议使用的客户端通信 URL,该值用于 etcd 代理或 etcd 成员与 etcd 节点通信
ETCD_ADVERTISE_CLIENT_URLS=https://192.168.142.161:2379

# 广播给集群内其他成员访问的URL,建议用于节点之间通信的 URL,节点间将以该值进行通信
ETCD_INITIAL_ADVERTISE_PEER_URLS=https://192.168.142.161:2380

# 初始集群成员列表,也就是集群中所有的 initial--advertise-peer-urls 的合集

ETCD_INITIAL_CLUSTER=etcd1=https://192.168.142.161:2380,etcd2=https://192.168.142.162:2380,etcd3=https://192.168.142.163:2380

# 新建集群的标志,new为新建集群
ETCD_INITIAL_CLUSTER_STATE=new

# 节点的 token 值(集群个的名称),设置该值后集群将生成唯一 ID,并为每个节点也生成唯一 ID,当使用相同配置文件再启动一个集群时,只要该 token 值不一样,etcd 集群就不会相互影响
ETCD_INITIAL_CLUSTER_TOKEN=k8s-etcd-cluster

# 
ETCD_METRICS=basic

# 选举超时时间,Etcd 的选举超时时间默认是 1000 毫秒,选举时间至少是 RTT 10 倍的时间,5000毫秒是一次全球 RTT 的安全上限
ETCD_ELECTION_TIMEOUT=5000

# etcd心跳间隔时间,该参数应该设置成节点之间 RTT (Round Trip Time,网络往返时延)的时间,单位是毫秒,默认是100毫秒,在美国典型的 RTT 是大概 50ms, 在中国之间可以慢到 400ms,通常设置为 0.5~1.5 倍 RTT 值
ETCD_HEARTBEAT_INTERVAL=250

# Etcd 总是向日志文件中追加 key,日志文件会随着 key 的改动而线性增长,当参数累积到一定的数量时,Etcd 才会创建快照文件。默认情况下,数量达到 10000 时才会建立快照。如果 Etcd 的内存使用和磁盘使用过高,那么应该调低快照触发的阈值(设置为5000)
ETCD_SNAPSHOT_COUNT=10000

# mvcc密钥值存储的自动压缩保留时间(小时),0表示禁用自动压缩
ETCD_AUTO_COMPACTION_RETENTION=8

# 默认是off(关闭代理),代理模式设置,("off", "readonly" or "on")
ETCD_PROXY=off

# Flannel need etcd v2 API
ETCD_ENABLE_V2=true

# TLS settings
ETCD_TRUSTED_CA_FILE=/etc/ssl/etcd/ssl/ca.pem
ETCD_CERT_FILE=/etc/ssl/etcd/ssl/member-control1.pem
ETCD_KEY_FILE=/etc/ssl/etcd/ssl/member-control1-key.pem
ETCD_CLIENT_CERT_AUTH=true

ETCD_PEER_TRUSTED_CA_FILE=/etc/ssl/etcd/ssl/ca.pem
ETCD_PEER_CERT_FILE=/etc/ssl/etcd/ssl/member-control1.pem
ETCD_PEER_KEY_FILE=/etc/ssl/etcd/ssl/member-control1-key.pem
ETCD_PEER_CLIENT_CERT_AUTH=True

# CLI settings
ETCDCTL_ENDPOINTS=https://127.0.0.1:2379
ETCDCTL_CACERT=/etc/ssl/etcd/ssl/ca.pem
ETCDCTL_KEY=/etc/ssl/etcd/ssl/admin-control1-key.pem
ETCDCTL_CERT=/etc/ssl/etcd/ssl/admin-control1.pem
3. etcd备份恢复

官网

  • 备份
# 查看状态,如果etcd启动的,可以用 ps -ef | grep etcd 查看各个证书位置
ETCDCTL_API=3 etcdctl --endpoints 10.21.194.17:2379,10.21.194.18:2379,10.21.194.19:2379 --cacert=/etc/ssl/etcd/ssl/ca.pem --cert=/etc/ssl/etcd/ssl/node-control1.pem --key=/etc/ssl/etcd/ssl/node-control1-key.pem endpoint status --write-out=table

# 查看etcd成员
ETCDCTL_API=3 etcdctl --endpoints 10.21.194.17:2379,10.21.194.18:2379,10.21.194.19:2379 --cacert=/etc/ssl/etcd/ssl/ca.pem --cert=/etc/ssl/etcd/ssl/node-control1.pem --key=/etc/ssl/etcd/ssl/node-control1-key.pem member list --write-out=table

# 备份etcd数据目录
cp -r /var/lib/etcd /var/lib/etcd.bak

# 通过快照去备份,频率大概2小时一备份
ETCDCTL_API=3 etcdctl --endpoints 10.21.194.17:2379,10.21.194.18:2379,10.21.194.19:2379 --cacert=/etc/ssl/etcd/ssl/ca.pem --cert=/etc/ssl/etcd/ssl/node-control.pem --key=/etc/ssl/etcd/ssl/node-control-key.pem snapshot save snapshot-xingguang.db
  • 恢复
# 将备份的db分发到三个实例上,如果--name之前是etcd0,要指定为新的名称,同时etcd的数据目录也分别生成为m1.etcd,m2.etcd,m3.etcd,三个实例都要恢复
# 第一个实例
etcdctl snapshot 
 --cacert=/etc/ssl/etcd/ssl/ca.pem 
 --cert=/etc/ssl/etcd/ssl/node-control.pem 
 --key=/etc/ssl/etcd/ssl/node-control-key.pem 
 restore /root/xingguang/etcd/snapshot-xingguang.db 
 --name m1 
 --initial-cluster m1=https://10.21.194.17:2380,m2=10.21.194.18:2380,m3=10.21.194.19:2380 
 --initial-cluster-token k8s_etcd 
 --initial-advertise-peer-urls https://10.21.194.17:2380

# 第二个实例
etcdctl snapshot 
 --cacert=/etc/ssl/etcd/ssl/ca.pem 
 --cert=/etc/ssl/etcd/ssl/node-control.pem 
 --key=/etc/ssl/etcd/ssl/node-control-key.pem 
 restore /root/xingguang/etcd/snapshot-xingguang.db 
 --name m2 
 --initial-cluster m1=https://10.21.194.17:2380,m2=10.21.194.18:2380,m3=10.21.194.19:2380 
 --initial-cluster-token k8s_etcd 
 --initial-advertise-peer-urls https://10.21.194.18:2380

# 第三个实例
etcdctl snapshot 
 --cacert=/etc/ssl/etcd/ssl/ca.pem 
 --cert=/etc/ssl/etcd/ssl/node-control.pem 
 --key=/etc/ssl/etcd/ssl/node-control-key.pem 
 restore /root/xingguang/etcd/snapshot-xingguang.db 
 --name m3 
 --initial-cluster m1=https://10.21.194.17:2380,m2=10.21.194.18:2380,m3=10.21.194.19:2380 
 --initial-cluster-token k8s_etcd 
 --initial-advertise-peer-urls https://10.21.194.19:2380
 
# 恢复之后要修改etcd的启动命令,三个实例都要改数据目录和--name
vim /lib/systemd/system/etcd.service
ETCD_NAME m1
ETCD_DATA_DIR m1.etcd

# 重启etcd

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5699148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存