ETCD流程
ETCD集群是一个分布式系统,使用Raft协议来维护集群内各个节点状态的一致性.
主机状态Leader,Follower,Candidate.
当集群初始化时候,每个节点都是Follower角色.
通过心跳与其他节点同步数据.
当Follower在一定时间内没有收到来自主节点的心跳,会将自己角色改变为Candidate,并发起一次选主投票.
配置etcd集群,建议可能是奇数个节点,而不要偶数个节点.
ETCD搭建
同之前搭建k8s 1.19.0版本一样,首先准备好3台机器
Etcd1:192.168.135.81
Etcd2:192.168.135.82
Etcd3:192.168.135.83
先在所有etcd节点上安装etcd
对于etcd来说,配置文件在/etc/etcd这个目录下面
其中[Member]用于配置单节点,[Clustering]用于配置集群
配置文件
ETCD_DATA_DIR="/var/lib/etcd/cluster.etcd" ---数据保留路径
ETCD_LISTEN_PEER_URLS="http://192.168.135.81:2380,http://localhost:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.135.81:2379,http://localhost:2379"
ETCD_NAME="etcd-81" ---节点名
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.135.81:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379,http://192.168.26.135:2379"
ETCD_INITIAL_CLUSTER="etcd-81=http://192.168.135.81:2380,etcd-82=http://192.168.135.82:2380,etcd-83=http://192.168.135.83:2380" ---初始化节点的时候的所有节点
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" ---相当于一种密钥,需在所有节点都一致
ETCD_INITIAL_CLUSTER_STATE="new"
参数含义
ETCD_NAME 节点名称,默认为default 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必须保持唯一.
在所有节点的这份配置文件需保持同步(不同节点ip不同,注意红框中需修改成对应的ip)
然后依次启动3个节点的etcd服务
查看集群状态信息 etcdctl member list
到此etcd集群搭建完成
验证
现在在各节点通过etcdctl查看根下无任何数据
在Leader节点创建一个文件aa成功后,所有节点均有该文件
(不管在哪个节点创建或删除,均会同步至所有节点,此处为节约篇幅省略)
注:这里的根并不是系统的,而是指的etcd子系统的根/
ETCD的管理
版本管理
以上篇幅均采用的是ETCD的v2写法.
对于ETCD来说,它有2个版本,设置成v3版,子命令会增多,并且以键值对存储
通过export命令将环境设置成v3版本后子命令就变多了
定义一个键值对
快照备份
对ETCD做快照(数据备份),可通过恢复快照的方式把数据恢复
etcdctl snapshot save snap1.db
快照里包含我们所写数据的,比如k1=v1
模拟数据被清空数据恢复
开始恢复数据:
在所有节点上关闭etcd,并删除/var/lib/etcd/里的所有数据
在所有节点将快照文件的所属组改成etcd
所有节点运行
etcdctl snapshot restore snap1.db --name etcd-8X --initial-cluster etcd-81=http://192.168.135.81:2380,etcd-82=http://192.168.135.82:2380,etcd-83=http://192.168.135.83:2380 --initial-advertise-peer-urls http://192.168.135.8X:2380 --data-dir /var/lib/etcd/cluster.etcd
所有节点运行chown -R etcd.etcd /var/lib/etcd/改成etcd所属组
然后所有节点systemctl start etcd服务后查看,数据已恢复