目录

【1、下载二进制程序】

【2、安装etcd集群】

【3、查询集群状态】

【4、存入读取数据】

【5、注意事项】

【6、参考链接】

简介:
     Etcd的官网文档及其在GitHub上的文档,已经非常全了,而且简洁明了,无论是二进制安装、还是Docker下运行、命令操作,都有详细的说明。但直接复制安装还是会出错的,只有亲手做一遍,才能发现有哪些问题。


【1、下载二进制程序】

#分别在三台主机上下载并安装etcd和etcdctl程序

#设定ETCD的版本

ETCD_VER=v3.3.8

# 设置下载地址URL

GITHUB_URL=https://github.com/coreos/etcd/releases/download

DOWNLOAD_URL=${GITHUB_URL}

#清除之前的临时文件和目录,创建新的目录

rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz

rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test

#使用curl下载etcd二进制文件

#地址为 https://github.com/coreos/etcd/releases/download/v3.3.8/etcd-v3.3.8-linux-amd64.tar.gz

#解包后删除压缩包

curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz

tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1

rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz

#将etcd 和 etcdctl可执行程序移动到系统路径中,方便直接运行程序

sudo mv /tmp/etcd-download-test/etcd* /usr/local/bin

#查询etcd和etcdctl版本,

#检查是否能正常运行程序。

etcd --version

ETCDCTL_API=3 etcdctl version


【2、安装etcd集群】

#在节点node1上执行

TOKEN=token-01

CLUSTER_STATE=new

NAME_1=node1

NAME_2=node2

NAME_3=node3

HOST_1=192.168.3.161

HOST_2=192.168.3.162

HOST_3=192.168.3.163

CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380

THIS_NAME=${NAME_1}

THIS_IP=${HOST_1}

etcd --data-dir=data.etcd --name ${THIS_NAME} \

--initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \

--advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \

--initial-cluster ${CLUSTER} \

--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

#此处注意,直接复制github网站上的代码,执行时会报错

#2018-06-29 16:57:54.048863 E | etcdmain: error verifying flags, '.--initial-advertise-peer-urls' is not a valid flag. See 'etcd --help'.

#https://github.com/coreos/etcd/blob/master/Documentation/demo.md

#需要清除掉--短横线之前的空格字符

#在节点node2上执行

TOKEN=token-01

CLUSTER_STATE=new

NAME_1=node1

NAME_2=node2

NAME_3=node3

HOST_1=192.168.3.161

HOST_2=192.168.3.162

HOST_3=192.168.3.163

CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380

THIS_NAME=${NAME_2}

THIS_IP=${HOST_2}

etcd --data-dir=data.etcd --name ${THIS_NAME} \

--initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \

--advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \

--initial-cluster ${CLUSTER} \

--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

#在节点node3上执行

TOKEN=token-01

CLUSTER_STATE=new

NAME_1=node1

NAME_2=node2

NAME_3=node3

HOST_1=192.168.3.161

HOST_2=192.168.3.162

HOST_3=192.168.3.163

CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380

THIS_NAME=${NAME_3}

THIS_IP=${HOST_3}

etcd --data-dir=data.etcd --name ${THIS_NAME} \

--initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \

--advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \

--initial-cluster ${CLUSTER} \

--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}


【3、查询集群状态】


export ETCDCTL_API=3

HOST_1=192.168.3.161

HOST_2=192.168.3.162

HOST_3=192.168.3.163

ENDPOINTS=$HOST_1:2379,$HOST_2:2379,$HOST_3:2379

etcdctl --endpoints=$ENDPOINTS --write-out=table member list

etcdctl --endpoints=$ENDPOINTS --write-out=table endpoint status

etcdctl --endpoints=$ENDPOINTS --write-out=table endpoint health

图1查询集群的状态


【4、存入读取数据】


#在同一网段的其他机器上,下载并解包etcdctl,

#使用etcdctl命令访问etcd的集群

export ETCDCTL_API=3

HOST_1=192.168.3.161

HOST_2=192.168.3.162

HOST_3=192.168.3.163

ENDPOINTS=$HOST_1:2379,$HOST_2:2379,$HOST_3:2379

etcdctl --endpoints=$ENDPOINTS put myurl www.sina.com.cn

etcdctl --endpoints=$ENDPOINTS get myurl

图2使用etcdctl 存入和读取数据

#或者使用curl 访问etcd集群,

#通过集群中的任何一个节点,都可以访问到数据

HOST_1=192.168.3.161

HOST_2=192.168.3.162

HOST_3=192.168.3.163

curl -X PUT http://${HOST_1}:2379/v2/keys/myurl -d value=www.china.com

curl -X GET http://${HOST_1}:2379/v2/keys/myurl

curl -X GET http://${HOST_2}:2379/v2/keys/myurl

curl -X GET http://${HOST_3}:2379/v2/keys/myurl

curl http://192.168.3.161:2379/v2/keys

图3使用curl 存入和读取数据

【5、注意事项】

1、直接复制粘贴github上的代码会出错,需要清除etcd命令中--短横线之前的空格

2018-06-29 16:57:54.048863 E | etcdmain: error verifying flags, '.--initial-advertise-peer-urls' is not a valid flag. See 'etcd --help'.

2、主机的时间应该同步,可以安装NTP服务,否则会告警:

2018-06-29 18:04:29.328082 W | rafthttp: the clock difference against peer 5d5a6e579c03726b is too high [3.777632896s > 1s]


【6、参考链接】


etcd官方网址

https://coreos.com/etcd/docs/latest/demo.html

https://github.com/coreos/etcd/releases/

https://github.com/coreos/etcd/blob/master/Documentation/demo.md

etcd rest API基本操作

https://segmentfault.com/a/1190000005649865

ETCD集群安装实验的更多相关文章

  1. centos下etcd集群安装

    先仔细了解学习etcd 官方: https://github.com/etcd-io/etcd https://www.cnblogs.com/softidea/p/6517959.html http ...

  2. etcd集群安装部署

    1. 集群架构 由于我们只有两个机房,所以选择的是以上图中所示的数据同步方案, 通过做镜像的方式保证两个集群的数据实时同步. 整体架构如上图所示, 整个全局元数据中心包括两套集群,廊坊集群和马驹桥集群 ...

  3. etcd集群安装

    etcd 是一个分布式一致性k-v存储系统,可用于服务注册发现与共享配置,具有以下优点:1.简单:相比于晦涩难懂的paxos算法,etcd基于相对简单且易实现的raft算法实现一致性,并通过gRPC提 ...

  4. kubernetes 集群安装etcd集群,带证书

    install etcd 准备证书 https://www.kubernetes.org.cn/3096.html 在master1需要安装CFSSL工具,这将会用来建立 TLS certificat ...

  5. 使用docker方式安装etcd集群,带TLS证书

    网上文档也多,安装的时候,还是踩了几个坑. 现在作一个安装记录吧. 1,先作自签名的证书ca-csr.json(为了和k8s共用根证书,可能将信息调为k8s). { "CN": & ...

  6. 使用k8s operator安装和维护etcd集群

    关于Kubernetes Operator这个新生事物,可以参考下文来了解这一技术的来龙去脉: https://yq.aliyun.com/articles/685522?utm_content=g_ ...

  7. Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群

    这里的etcd集群复用我们测试的3个节点,3个node都要安装并启动,注意修改配置文件 1.TLS认证文件分发:etcd集群认证用,除了本机有,分发到其他node节点 scp ca.pem kuber ...

  8. yum安装etcd集群

       前一篇文章介绍了如何yum安装简单的kubernetes集群,其中etcd是单点部署.本篇我们来搭建etcd集群,方便日后搭建kubernetes HA集群架构. 1,环境配置说明 etcd1 ...

  9. etcd简介及集群安装部署使用

    目录 1. 简介 2. Linux下载安装 3. 单机模式启动 4. 指定各集群成员的方式配置集群 5. 使用discovery service的方式配置集群 6. 集群模式下客户端命令行 7. et ...

随机推荐

  1. mysql提权常用方法。 hack某某

    一般是root权限,知道mysql root权限,root账号密码 启动项提权:原理:利用高权限的root写入一个vbs脚本到启动项,再通过一些方法如ddos,社工管理员之类的方法来让服务器重启,运行 ...

  2. linux vue uwsgi nginx 部署路飞学城 安装 vue

    vue+uwsgi+nginx部署路飞学城 有一天,老男孩的苑日天给我发来了两个神秘代码,听说是和mjj的结晶 超哥将这两个代码,放到了一个网站上,大家可以自行下载 路飞学城django代码#这个代码 ...

  3. Compile caffe on unbutu 16.0.4

    1. apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhd ...

  4. sql server实例内存使用统计

    转载于: http://blog.csdn.net/shutao917/article/details/51444424 SQL SERVER内存按存放数据的类型,大概可以分为三类: 1.buffer ...

  5. Objective-C语法之代码块(block)的使用 (转载)

    代码块本质上是和其他变量类似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值. 脱字符(^)是块的语法标记.按照我们熟悉的参数语法规约所定 ...

  6. mysql报错Ignoring the redo log due to missing MLOG_CHECKPOINT between

    mysql报错Ignoring the redo log due to missing MLOG_CHECKPOINT between mysql版本:5.7.19 系统版本:centos7.3 由于 ...

  7. C#基础加强(2)之密闭类、静态类及扩展方法

    密闭类 简介 密闭类是被 sealed 关键字修饰的类,密闭类不能有子类.一般只有系统的一些基本类声明为密闭类,例如 String 类. 相关面试题 是否可以编写一个类继承自 String 类? 我们 ...

  8. Cartographer源码阅读(4):Node和MapBuilder对象2

    MapBuilder的成员变量sensor::Collator sensor_collator_; 再次阅读MapBuilder::AddTrajectoryBuilder方法.首先构造了mappin ...

  9. ORACLE——NVL()、NVL2() 函数的用法

    NVL和NVL2两个函数虽然不经常用,但是偶尔也会用到,所以了解一下. 语法: --如果表达式1为空则显示表达式2的值,如果表达式1不为空,则显示表达式1的值 NVL(表达式1,表达式2); --如果 ...

  10. Python-python中数组和列表读取一列的方法

    转载自:https://blog.csdn.net/songyunli1111/article/details/78109976 在python中,普通的列表list和numpy中的数组array是不 ...