参考链接:https://www.cnblogs.com/xishuai/p/docker-etcd.html
节点信息
节点名称 |
节点IP地址 |
rke01 |
192.168.1.11 |
rke02 |
192.168.1.16 |
rke03 |
192.168.1.15 |
数据备份
查询数据有多少条记录
etcdctl get --prefix "" | grep -c '^'
|
备份etcd数据到本地
etcdctl --endpoints=http://x.x.x.x:2379 snapshot save etcd_backup_20240809.tar.gz
|
查看备份文件的数据
etcdctl --endpoints=http://x.x.x.x:2379 snapshot status etcd_backup_20240809.tar.gz -w table Deprecated: Use `etcdutl snapshot status` instead.
+----------+----------+------------+------------+ | HASH | REVISION | TOTAL KEYS | TOTAL SIZE | +----------+----------+------------+------------+ | 8c54a0ac | 15687011 | 10141 | 4.8 MB | +----------+----------+------------+------------+
|
同步文件到恢复节点
scp etcd_backup_20240808.tar.gz rke01:/root/ scp etcd_backup_20240808.tar.gz rke02:/root/ scp etcd_backup_20240808.tar.gz rke03:/root/
|
数据恢复
确认上传的恢复数据和备份数据保持一致:
etcdctl snapshot status etcd_backup_20240809.tar.gz -w table Deprecated: Use `etcdutl snapshot status` instead.
+----------+----------+------------+------------+ | HASH | REVISION | TOTAL KEYS | TOTAL SIZE | +----------+----------+------------+------------+ | 8c54a0ac | 15687011 | 10141 | 4.8 MB | +----------+----------+------------+------------+
|
恢复rke01:
etcdctl snapshot restore etcd_backup_20240809.tar.gz \ --data-dir=/opt/etcd --name rke01 \ --initial-advertise-peer-urls http://192.168.1.11:2380 \ --initial-cluster-token docker-etcd \ --initial-cluster rke01=http://192.168.1.11:2380,rke02=http://192.168.1.16:2380,rke03=http://192.168.1.15:2380
|
恢复rke02:
etcdctl snapshot restore etcd_backup_20240809.tar.gz \ --data-dir=/opt/etcd --name rke02 \ --initial-advertise-peer-urls http://192.168.1.16:2380 \ --initial-cluster-token docker-etcd \ --initial-cluster rke01=http://192.168.1.11:2380,rke02=http://192.168.1.16:2380,rke03=http://192.168.1.15:2380
|
恢复rke03:
etcdctl snapshot restore etcd_backup_20240809.tar.gz \ --data-dir=/opt/etcd --name rke03 \ --initial-advertise-peer-urls http://192.168.1.15:2380 \ --initial-cluster-token docker-etcd \ --initial-cluster rke01=http://192.168.1.11:2380,rke02=http://192.168.1.16:2380,rke03=http://192.168.1.15:2380
|
部署ETCD集群
启动参数描述
选项 |
描述 |
--name |
节点名称。 |
--data-dir |
服务运行数据保存的路径。 |
--snapshot-count |
触发截取快照保存到磁盘的事务提交次数。 |
--heartbeat-interval |
Leader发送一次心跳到followers的时间间隔(毫秒)。 |
--election-timeout |
重新投票的超时时间,follower未收到心跳包触发重新投票的时间(毫秒)。 |
--listen-peer-urls |
和同伴通信的地址。 |
--listen-client-urls |
对外提供服务的地址。 |
--advertise-client-urls |
对外公告的该节点客户端监听地址。 |
--initial-advertise-peer-urls |
该节点同伴监听地址。 |
--initial-cluster |
集群中所有节点的信息。 |
--initial-cluster-state |
新建集群时为new ;已存在集群时为existing 。 |
--initial-cluster-token |
创建集群的token。 |
创建容器
rke01:
docker run -d --name etcd --net host -v /opt/etcd:/etcd \ --restart always quay.io/coreos/etcd:v3.5.15 \ /usr/local/bin/etcd \ --data-dir=/etcd --name rke01 \ --initial-advertise-peer-urls http://192.168.1.11:2380 --listen-peer-urls http://0.0.0.0:2380 \ --advertise-client-urls http://192.168.1.11:2379 --listen-client-urls http://0.0.0.0:2379 \ --initial-cluster-state new \ --initial-cluster-token docker-etcd \ --initial-cluster rke01=http://192.168.1.11:2380,rke02=http://192.168.1.16:2380,rke03=http://192.168.1.15:2380
|
rke02:
docker run -d --name etcd --net host -v /opt/etcd:/etcd \ --restart always quay.io/coreos/etcd:v3.5.15 \ /usr/local/bin/etcd \ --data-dir=/etcd --name rke02 \ --initial-advertise-peer-urls http://192.168.1.16:2380 --listen-peer-urls http://0.0.0.0:2380 \ --advertise-client-urls http://192.168.1.16:2379 --listen-client-urls http://0.0.0.0:2379 \ --initial-cluster-state new \ --initial-cluster-token docker-etcd \ --initial-cluster rke01=http://192.168.1.11:2380,rke02=http://192.168.1.16:2380,rke03=http://192.168.1.15:2380
|
rke03:
docker run -d --name etcd --net host -v /opt/etcd:/etcd \ --restart always quay.io/coreos/etcd:v3.5.15 \ /usr/local/bin/etcd \ --data-dir=/etcd --name rke03 \ --initial-advertise-peer-urls http://192.168.1.15:2380 --listen-peer-urls http://0.0.0.0:2380 \ --advertise-client-urls http://192.168.1.15:2379 --listen-client-urls http://0.0.0.0:2379 \ --initial-cluster-state new \ --initial-cluster-token docker-etcd \ --initial-cluster rke01=http://192.168.1.11:2380,rke02=http://192.168.1.16:2380,rke03=http://192.168.1.15:2380
|
etcdctl命令
配置客户端
docker cp etcd:/usr/local/bin/etcdctl /usr/local/bin/
|
选项 |
描述 |
etcdctl snapshot save |
保存etcd快照到指定文件。 |
etcdctl snapshot restore |
从指定文件恢复etcd快照。 |
etcdctl endpoint health |
检查etcd端点的健康状态。 |
etcdctl endpoint status |
显示etcd端点的状态信息。 |
etcdctl put |
设置键值对。 |
etcdctl get |
获取键的值。 |
etcdctl del |
删除键。 |
etcdctl member list |
列出集群成员信息。 |
etcdctl member add |
添加集群成员。 |
etcdctl member remove |
移除集群成员。 |
etcdctl member update |
更新集群成员的peer URL。 |
查看集群状态
etcdctl member list -w table +------------------+---------+-------+--------------------------+--------------------------+------------+ | ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER | +------------------+---------+-------+--------------------------+--------------------------+------------+ | 37499ff739d6c21 | started | rke03 | http://192.168.1.15:2380 | http://192.168.1.15:2379 | false | | 79e7c26cb0fc149 | started | rke02 | http://192.168.1.16:2380 | http://192.168.1.16:2379 | false | | b4773de1c1f38771 | started | rke01 | http://192.168.1.11:2380 | http://192.168.1.11:2379 | false | +------------------+---------+-------+--------------------------+--------------------------+------------+
|
查看恢复的所有数据
统计数据,判断迁移是否成功
etcdctl get --prefix "" | grep -c '^'
|