zoukankan      html  css  js  c++  java
  • etcd

    etcd概述:

    • Etcd 使用raft协议来维护集群内各个结点的致性。
    • 简单地说,Etcd 集群是一个分布式系统,由多个结点相互通信构成整体对外服务,每个结点都存储了完整的数据,并且通过 raft 协议保证每个结点维护的数据是一致的。

    Etcd使用raft共识算法解决一致性问题:

    每一个 Raft 集群中都包含多个服务器,在任意时刻,每一台服务器只可能处于 Leader、Follower 以及 Candidate 三种状态;

    在处于正常的状态时,集群中只会存在一个 Leader,其余的服务器都是 Follower。

     

    所有的 Follower 节点都是被动的,它们不会主动发出任何的请求,只会响应 Leader 和 Candidate 发出的请求,对于每一个用户的可变操作,都会被路由给 Leader 节点进行处理,除了 Leader 和 Follower 节点之外,Candidate 节点其实只是集群运行过程中的一个临时状态。

    手动搭建一个简单的etcd集群:

    环境及工具准备:

    三台linux虚机(172.31.0.81、172.31.0.82、172.31.0.82)

    Etcd下载:https://github.com/coreos/etcd/releases/download/v3.1.5/etcd-v3.1.5-linux-amd64.tar.gz

     

    分别在每台虚机上执行以下操作:

    • 建立 /var/etcd/目录:

     mkdir /var/etcd/ 

    • 将etcd-v3.1.5-linux-amd64.tar.gz拷至 /var/etcd/目录下并解压:

     tar xzf etcd-v3.1.5-linux-amd64.tar.gz 

    • 进入etcd-v3.1.5-linux-amd64目录会发现有两个可执行程序(etcd、etcdctl)和一些文档文件

     

    • 对于三台不同的虚机,执行以下三条不同的命令(etcd 在 listen-client-urls 上接收客户端访问。etcd 成员将 advertise-client-urls 指定的 URl 上通告给其他成员、代理和客户端。):
    ./etcd --name etcd0 --initial-advertise-peer-urls http://172.31.0.81:2380 
      --listen-peer-urls http://172.31.0.81:2380 
      --listen-client-urls http://172.31.0.81:2379,http://127.0.0.1:2379 
      --advertise-client-urls http://172.31.0.81:2379 
      --initial-cluster-token etcd-cluster-1 
      --initial-cluster etcd0=http://172.31.0.81:2380,etcd1=http://172.31.0.82:2380,etcd2=http://172.31.0.83:2380 
      --initial-cluster-state new
    
    ./etcd --name etcd1 --initial-advertise-peer-urls http://172.31.0.82:2380 
      --listen-peer-urls http://172.31.0.82:2380 
      --listen-client-urls http://172.31.0.82:2379,http://127.0.0.1:2379 
      --advertise-client-urls http://172.31.0.82:2379 
      --initial-cluster-token etcd-cluster-1 
      --initial-cluster etcd0=http://172.31.0.81:2380,etcd1=http://172.31.0.82:2380,etcd2=http://172.31.0.83:2380 
      --initial-cluster-state new
     
    ./etcd --name etcd2 --initial-advertise-peer-urls http://172.31.0.83:2380 
      --listen-peer-urls http://172.31.0.83:2380 
      --listen-client-urls http://172.31.0.83:2379,http://127.0.0.1:2379 
      --advertise-client-urls http://172.31.0.83:2379 
      --initial-cluster-token etcd-cluster-1 
      --initial-cluster etcd0=http://172.31.0.81:2380,etcd1=http://172.31.0.82:2380,etcd2=http://172.31.0.83:2380 
      --initial-cluster-state new
    • 接下来是比较长的日志打印,当出现以下类似字段时表明建立集群成功:

     

    • 在任意一台虚机上开一个终端,进入到etcd-v3.1.5-linux-amd64目录执行

     ./etcdctl -peers 127.0.0.1:2379 member list 

    会发现集群已经建立,leader已经选举出来:

     验证etcd:

    当在 172.31.0.81 虚机上执行 ./etcdctl set myval "tongyishu" 时

    在 172.31.0.82 和 172.31.0.83 虚机上执行 ./etcdctl get myval 就会输出 "tongyishu" 字段,这就是etcd分布式数据存储的一致性

  • 相关阅读:
    杭电2050
    杭电2043,小细节。。。。。
    杭电2034,坑爹的人见人爱a-b
    杭电2035--人见人爱A^B
    杭电2032--杨辉三角
    杭电2029--Palindromes _easy version(回文串)
    杭电2028--Lowest Common Multiple Plus
    NPOI大数据分批写入同个Excel
    [每日一题] OCP1z0-047 :2013-07-25 权限――角色与对象权限
    Ubuntu下安装搜狗拼音输入法
  • 原文地址:https://www.cnblogs.com/tongyishu/p/12055520.html
Copyright © 2011-2022 走看看