一、单节点 etcd 备份恢复
1.1 单节点 etcd 部署
在备份前我们先部署一个单节点的etcd服务
1 | [root@localhost ~]# yum install etcd-3.3.11 |
查看etcd状态
1 | [root@localhost ~]# ETCDCTL_API=3 etcdctl member list -w table |
接着我们写入一条测试数据
1 | [root@localhost ~]# ETCDCTL_API=3 etcdctl put ok 123 |
1.2 备份单节点 etcd
如果etcd使用了证书,需要在etcdctl后面添加--cacert=ca.crt --cert=etcd-client.crt --key=etcd-client.key
参数正确引用证书即可
将etcd备份到用户~/etcd-snapshot.db
宿主目录下
1 | [root@localhost ~]# ETCDCTL_API=3 etcdctl --endpoints 127.0.0.1:2379 snapshot save ~/etcd-snapshot.db |
1.3 恢复单节点 etcd
开始恢复前使用 ps -ef |grep etcd
查看etcd的运行用户,后面恢复数据后需要改数据目录的属主
1 | [root@localhost ~]# systemctl stop etcd |
二、etcd 集群备份恢复
2.1 etcd 集群部署
etcd 默认使用端口 2379 和 2380,2379用于接收客户端请求,2380 用于 etcd 节点之间的对等通信
主机名 | IP地址 | 备注 |
---|---|---|
etcd1 | 192.168.223.131 | 新建集群 |
etcd2 | 192.168.223.137 | 新建集群 |
etcd3 | 192.168.223.140 | 加入集群 |
参数 | 说明 |
---|---|
ETCD_DATA_DIR | 数据存储目录 |
ETCD_LISTEN_PEER_URLS | 监听地址,用于节点之间通信的url,可多个,集群内数据交互(如选举,数据同步等) |
ETCD_LISTEN_CLIENT_URLS | 监听地址,的用于客户端通信的url,同样可以监听多个 |
ETCD_NAME | etcd集群中的节点名,这里可以随意,不重复就行 |
ETCD_INITIAL_ADVERTISE_PEER_URLS | 在集群中宣告用于节点之间通信的url,节点间将以该值进行通信 |
ETCD_ADVERTISE_CLIENT_URLS | 在集群中宣告使用的客户端通信url,该值用于etcd代理或etcd成员与etcd节点通信 |
ETCD_INITIAL_CLUSTER | 集群中的成员集合 |
ETCD_INITIAL_CLUSTER_STATE | 初始化集群的标志,新建使用 new,加入一个存在的集群为 existing |
1 | # 配置所有节点hosts |
1 | [root@etcd3 ~]# ETCDCTL_API=3 etcdctl --endpoints=etcd1:2379 member list -w table |
2.2 etcd 集群数据备份
1 | #这里为了测试,向etcd中写入测试数据,生产环境直接备份 |
2.3 etcd 集群数据恢复
1 | 删除集群数据 |
2.4 使用证书部署 etcd 集群
生成etcd证书
1 | etcd下载地址:https://github.com/etcd-io/etcd/releases |
1 | # 生成etcd证书和etcd证书的key |
生成CA证书和私钥
1 | [root@etcd1 ~]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca - |
1 | # 如果以后可能会扩容,可以在ip那多写几个ip预留出来,或者扩容时添加ip重新生成证书,重启etcd集群 |
修改各etcd节点配置
1 | # 修改所有etcd节点/etc/etcd/etcd.conf配置文件(把http换成https) |
查看etcd集群状态
1 | [root@etcd1 etcd]# ETCDCTL_API=3 etcdctl --cacert=ca.pem --cert=etcd.pem --key=etcd-key.pem --endpoints=https://etcd1:2379 member list -w table |