一、建立集群

1、在每台机器上建立环境变量

  1. TOKEN=token-01
  2. CLUSTER_STATE=new
  3. NAME_1=machine-1
  4. NAME_2=machine-2
  5. NAME_3=machine-3
  6. HOST_1=10.240.0.17
  7. HOST_2=10.240.0.18
  8. HOST_3=10.240.0.19
  9. CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380
  10. 2、在每台机器上运行如下命令
  1. # For machine 1
  2. THIS_NAME=${NAME_1}
  3. THIS_IP=${HOST_1}
  4. etcd --data-dir=data.etcd --name ${THIS_NAME} \
  5. --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
  6. --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
  7. --initial-cluster ${CLUSTER} \
  8. --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}
  1. # For machine 2
  2. THIS_NAME=${NAME_2}
  3. THIS_IP=${HOST_2}
  4. etcd --data-dir=data.etcd --name ${THIS_NAME} \
  5. --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
  6. --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
  7. --initial-cluster ${CLUSTER} \
  8. --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}
  1. # For machine 3
  2. THIS_NAME=${NAME_3}
  3. THIS_IP=${HOST_3}
  4. etcd --data-dir=data.etcd --name ${THIS_NAME} \
  5. --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
  6. --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
  7. --initial-cluster ${CLUSTER} \
  8. --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}
  9. 3、连接测试
  1. export ETCDCTL_API=3
  2. HOST_1=10.240.0.17
  3. HOST_2=10.240.0.18
  4. HOST_3=10.240.0.19
  5. ENDPOINTS=$HOST_1:2379,$HOST_2:2379,$HOST_3:2379
  6. etcdctl --endpoints=$ENDPOINTS member list
  1. etcdctl --endpoints=$ENDPOINTS put foo "Hello World!"
  1. etcdctl --endpoints=$ENDPOINTS get foo
  2. etcdctl --endpoints=$ENDPOINTS --write-out="json" get foo
  3. ===选举
  1. etcdctl --endpoints=$ENDPOINTS elect one p1
  2. # another client with the same name blocks
  3. etcdctl --endpoints=$ENDPOINTS elect one p2
  1. ==分布式锁
  1. etcdctl --endpoints=$ENDPOINTS lock mutex1
  2. # another client with the same name blocks
  3. etcdctl --endpoints=$ENDPOINTS lock mutex1
  4. ==查看集群状态
  1. etcdctl --write-out=table --endpoints=$ENDPOINTS endpoint status
  1. etcdctl --endpoints=$ENDPOINTS endpoint health
  1. ==快照
  1. ENDPOINTS=$HOST_1:2379
  2. etcdctl --endpoints=$ENDPOINTS snapshot save my.db
  3. ==升级
  1. # write key in etcd version 2 store
  2. export ETCDCTL_API=2
  3. etcdctl --endpoints=http://$ENDPOINT set foo bar
  4. # read key in etcd v2
  5. etcdctl --endpoints=$ENDPOINTS --output="json" get foo
  6. # stop etcd node to migrate, one by one
  7. # migrate v2 data
  8. export ETCDCTL_API=3
  9. etcdctl --endpoints=$ENDPOINT migrate --data-dir="default.etcd" --wal-dir="default.etcd/member/wal"
  10. # restart etcd node after migrate, one by one
  11. # confirm that the key got migrated
  12. etcdctl --endpoints=$ENDPOINTS get /foo

  1.  
  1.  
  1.  
  1.  
  1.  
  1.  

ETCD实战的更多相关文章

  1. 一篇文章带你搞懂 etcd 3.5 的核心特性

    作者 唐聪,腾讯云资深工程师,极客时间专栏<etcd实战课>作者,etcd活跃贡献者,主要负责腾讯云大规模k8s/etcd平台.有状态服务容器化.在离线混部等产品研发设计工作. etcd ...

  2. etcd学习(8)-etcd中Lease的续期

    etcd中的Lease 前言 Lease Lease 整体架构 key 如何关联 Lease Lease的续期 过期 Lease 的删除 checkpoint 机制 总结 参考 etcd中的Lease ...

  3. etcd学习(10)-etcd对比Consul和zooKeeper如何选型

    etcd选型对比 前言 基本架构和原理 etcd Consul ZooKeeper 选型对比 总结 参考 etcd选型对比 前言 对比 Consul, ZooKeeper.选型etcd有那些好处呢? ...

  4. 谈谈Raft

    本文主要参考 极客时间-etcd 实战课 GitChat-分布式锁的最佳实践之:基于 Etcd 的分布式锁 谈到分布式协调组件,我们第一个想到的应该是大名鼎鼎的Zookeeper,像我们常用的Kafk ...

  5. 长篇图解etcd核心应用场景及编码实战

    大家好啊,我是字母哥,今天写一篇关于etcd的文章,其实网上也有很多关于etcd的介绍,我就简明扼要,总结提炼,期望大家通过这一篇文章掌握etcd的核心知识以及编码技能! 本文首先用大白话给大家介绍一 ...

  6. etcd:用于服务发现的键值存储系统

    etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现.etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理 ...

  7. Key/Value存储系统etcd的特性

    etcd 是一个高可用的Key/Value存储系统,和其他KV存储系统不同的是,它的灵感来自于 ZooKeeper 和 Doozer,主要用于分享配置和服务发现.利用 etcd 的特性,应用程序可以在 ...

  8. MySQL多数据源笔记5-ShardingJDBC实战

    Sharding-JDBC集分库分表.读写分离.分布式主键.柔性事务和数据治理与一身,提供一站式的解决分布式关系型数据库的解决方案. 从2.x版本开始,Sharding-JDBC正式将包名.Maven ...

  9. .NET Core实战项目之CMS 第九章 设计篇-白话架构设计

    前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...

随机推荐

  1. 传奇装备锻造升级UPGRADEITEMEX功能详解

    装备升级功能可以指定升级物品及属性,按指定机率得到结果.需要升级的装备物品必须放在身上.命令格式UPGRADEITEMEX 物品位置(0-12) 属性位置(0-14) 成功机率(0-100) 点数机率 ...

  2. Hadoop2.0之YARN组件

    官方文档:https://hadoop.apache.org/docs/stable/,目前官方已经是3.x,但yarn机制没有太大变化 一.简介 在Hadoop1.0中,没有yarn,所有的任务调度 ...

  3. 【转载】C/C++编译过程分析

    转自:http://www.360doc.com/content/14/0109/16/835125_343879650.shtml C/C++编译过程 C/C++编译过程主要分为4个过程 1) 编译 ...

  4. redis常用配置参数

    首先弄清楚当前redis读取的是哪个配置文件,然后去配置文件修改,例如windows 打开服务列表,点击Redis,右键属性 "D:\Program Files\Redis\redis-se ...

  5. 2.5 【配置环境】多浏览器驱动 (chrome、IE、Firefox)❀

    来源:http://blog.csdn.net/huilan_same/article/details/51896672 http://www.cnblogs.com/thinkCoding/p/64 ...

  6. ssh复制秘钥成功后仍然需要输入密码

    执行免秘钥操作 ssh-copy-id -i ~/.ssh/id_rsa.pub lyg@192.168.1.65 被登录机器的文件权限: //用户权限 chmod 700 /home/usernam ...

  7. go基础_函数

    函数的基本写法 func add(a int, b int) int { return a + b } 如果2个参数的类型一样,可以简写为 func add(a, b int) int { retur ...

  8. blog主题——樱花

    贮存一下,blog代码 QAQ 页脚html <!--live2d--> <script src="https://blog-static.cnblogs.com/file ...

  9. 报bug mui分享微信 ,qq 分享失败

    1. iOS分享链接到微信,分享成功,但是分享的只有title,其他参数都没有 原因是mui分享进行了更新,msg新增了 msg.type 这个配置参数 qq : msg.type='text' 微信 ...

  10. Presto入门介绍

    (一)背景 MapReduce不能满足大数据快速实时adhoc查询计算的性能要求,Facebook2012年开发,2013年开源 (二)是什么 基于内存的并行计算,Facebook推出的分布式SQL交 ...