了解etcd

  1. etcd流程
    etcd集群是一个分布式系统,使用Raft协议来维护集群内部各个节点状态的一致性。
    主机状态leader,follower、candidate
    当集群初始化时候,每个节点都是follower角色
    通过心跳与其他节点同步数据
    当follower在一定时间内没有收到来自主节点的心跳,将会自己角色改变为candidate,并发起一次选主投票
    配置etcd集群,建议尽可能满足奇数个节点
  2. 部署单节点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
  3. 部署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

    数据会在集群内的三个节点实时同步!
  4. 参数的意义
    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
  5. 版本
    etcd有两个版本,2和3,不做配置,默认为,2版本
    export ETCDCTL_API=3 设置为3版本
    做快照必须在版本3上做
    集群内节点的版本必须一致,否则看不到数据
  6. 添加节点
    添加新节点需要在版本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

 

posted @ 2020-08-03 11:42  汝南  阅读(190)  评论(0)    收藏  举报