了解etcd
- etcd流程
etcd集群是一个分布式系统,使用Raft协议来维护集群内部各个节点状态的一致性。
主机状态leader,follower、candidate
当集群初始化时候,每个节点都是follower角色
通过心跳与其他节点同步数据
当follower在一定时间内没有收到来自主节点的心跳,将会自己角色改变为candidate,并发起一次选主投票
配置etcd集群,建议尽可能满足奇数个节点 - 部署单节点etcd集群
[root@vms51 ~]# yum isntall etcd -y
[root@vms51 ~]# vim /etc/etcd/etcd.conf
[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.108.51:2380,http://localhost:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.108.51:2379,http://localhost:2379"
ETCD_NAME="default"
#[Clustering]
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
[root@vms51 ~]# systemctl restart etcd
[root@vms51 ~]# etcdctl member list
[root@vms51 ~]# etcdctl cluster-health
[root@vms51 ~]# etcdctl ls /
[root@vms51 ~]# etcdctl mkdir /aa
[root@vms51 ~]# etcdctl ls /
/aa - 部署etcd多节点集群
三节点都要装 yum isntall etcd -y
[root@vms51 ~]# cat /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/cluster.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.108.51:2380,http://localhost:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.108.51:2379,http://localhost:2379"
ETCD_NAME="etcd-51"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.108.51:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.108.51:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd-51=http://192.168.108.51:2380,etcd-52=http://192.168.108.52:2380,etcd-53=http://192.168.108.53:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
[root@vms52 ~]# cat /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/cluster.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.108.52:2380,http://localhost:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.108.52:2379,http://localhost:2379"
ETCD_NAME="etcd-52"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.108.52:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.108.52:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd-51=http://192.168.108.51:2380,etcd-52=http://192.168.108.52:2380,etcd-53=http://192.168.108.53:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
[root@vms53 ~]# cat /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/cluster.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.108.53:2380,http://localhost:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.108.53:2379,http://localhost:2379"
ETCD_NAME="etcd-53"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.108.53:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.108.53:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd-51=http://192.168.108.51:2380,etcd-52=http://192.168.108.52:2380,etcd-53=http://192.168.108.53:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
systemctl restart etcd
etcdctl cluster-health
etcdctl member list[root@vms51 ~]# etcdctl ls /
[root@vms51 ~]# etcdctl mkdir /aa
[root@vms51 ~]# etcdctl ls /
/aa
数据会在集群内的三个节点实时同步! - 参数的意义
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必须保持唯一。
etcdctl member add etcd-54 http://192.168.108.54:2380 - 版本
etcd有两个版本,2和3,不做配置,默认为,2版本
export ETCDCTL_API=3 设置为3版本
做快照必须在版本3上做
集群内节点的版本必须一致,否则看不到数据 - 添加节点
添加新节点需要在版本2下操作,版本3会报错
[root@vms54 ~]# yum install etcd -y
[root@vms54 ~]# cat /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/cluster.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.108.54:2380,http://localhost:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.108.54:2379,http://localhost:2379"
ETCD_NAME="etcd-54"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.108.54:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.108.54:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd-51=http://192.168.108.51:2380,etcd-52=http://192.168.108.52:2380,etcd-53=http://192.168.108.53:2380,etcd-54=http://192.168.108.54:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="existing"
[root@vms51 ~]# etcdctl member add etcd-54 http://192.168.108.54:2380 #在leader节点上添加
Added member named etcd-54 with ID 16407f9d3e09c96 to cluster
ETCD_NAME="etcd-54"
ETCD_INITIAL_CLUSTER="etcd-54=http://192.168.108.54:2380,etcd-53=http://192.168.108.53:2380,etcd-51=http://192.168.108.51:2380,etcd-52=http://192.168.108.52:2380"
ETCD_INITIAL_CLUSTER_STATE="existing"
[root@vms51 ~]# etcdctl member list
16407f9d3e09c96: name=etcd-54 peerURLs=http://192.168.108.54:2380 clientURLs=http://192.168.108.54:2379,http://localhost:2379 isLeader=false
cd338f95176e7eb5: name=etcd-53 peerURLs=http://192.168.108.53:2380 clientURLs=http://192.168.108.53:2379,http://localhost:2379 isLeader=false
d13555f74ecbefa7: name=etcd-51 peerURLs=http://192.168.108.51:2380 clientURLs=http://192.168.108.51:2379,http://localhost:2379 isLeader=true
f709fac2d2871b31: name=etcd-52 peerURLs=http://192.168.108.52:2380 clientURLs=http://192.168.108.52:2379,http://localhost:2379 isLeader=false
[root@vms54 ~]# systemctl start etcd
It is the quality of one's convictions that determines success, not the number of followers.

浙公网安备 33010602011771号