ETCD集群安装实验
目录
【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集群安装实验的更多相关文章
- centos下etcd集群安装
先仔细了解学习etcd 官方: https://github.com/etcd-io/etcd https://www.cnblogs.com/softidea/p/6517959.html http ...
- etcd集群安装部署
1. 集群架构 由于我们只有两个机房,所以选择的是以上图中所示的数据同步方案, 通过做镜像的方式保证两个集群的数据实时同步. 整体架构如上图所示, 整个全局元数据中心包括两套集群,廊坊集群和马驹桥集群 ...
- etcd集群安装
etcd 是一个分布式一致性k-v存储系统,可用于服务注册发现与共享配置,具有以下优点:1.简单:相比于晦涩难懂的paxos算法,etcd基于相对简单且易实现的raft算法实现一致性,并通过gRPC提 ...
- kubernetes 集群安装etcd集群,带证书
install etcd 准备证书 https://www.kubernetes.org.cn/3096.html 在master1需要安装CFSSL工具,这将会用来建立 TLS certificat ...
- 使用docker方式安装etcd集群,带TLS证书
网上文档也多,安装的时候,还是踩了几个坑. 现在作一个安装记录吧. 1,先作自签名的证书ca-csr.json(为了和k8s共用根证书,可能将信息调为k8s). { "CN": & ...
- 使用k8s operator安装和维护etcd集群
关于Kubernetes Operator这个新生事物,可以参考下文来了解这一技术的来龙去脉: https://yq.aliyun.com/articles/685522?utm_content=g_ ...
- Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群
这里的etcd集群复用我们测试的3个节点,3个node都要安装并启动,注意修改配置文件 1.TLS认证文件分发:etcd集群认证用,除了本机有,分发到其他node节点 scp ca.pem kuber ...
- yum安装etcd集群
前一篇文章介绍了如何yum安装简单的kubernetes集群,其中etcd是单点部署.本篇我们来搭建etcd集群,方便日后搭建kubernetes HA集群架构. 1,环境配置说明 etcd1 ...
- etcd简介及集群安装部署使用
目录 1. 简介 2. Linux下载安装 3. 单机模式启动 4. 指定各集群成员的方式配置集群 5. 使用discovery service的方式配置集群 6. 集群模式下客户端命令行 7. et ...
随机推荐
- gitlab提交代码
cd existing_foldergit initgit remote add origin http://10.26.1.9/root/yunlian.gitgit add .git commit ...
- 图解android开发在界面上显示图片
图解android开发在界面上显示图片<申明:转自百度> <原文章地址:http://jingyan.baidu.com/article/49711c6153a277fa441b7c ...
- 线段树 || BZOJ1756: Vijos1083 小白逛公园 || P4513 小白逛公园
题面:小白逛公园 题解: 对于线段树的每个节点除了普通线段树该维护的东西以外,额外维护lsum(与左端点相连的最大连续区间和).rsum(同理)和sum……就行了 代码: #include<cs ...
- 20175320 2018-2019-2 《Java程序设计》第4周学习总结
20175320 2018-2019-2 <Java程序设计>第4周学习总结 教材学习内容总结 本周学习了教材的第五章的内容.在这章中介绍了子类与继承,着重讲了子类继承的规则以及使用sup ...
- linux vue uwsgi nginx 部署路飞学城 安装 vue
vue+uwsgi+nginx部署路飞学城 有一天,老男孩的苑日天给我发来了两个神秘代码,听说是和mjj的结晶 超哥将这两个代码,放到了一个网站上,大家可以自行下载 路飞学城django代码#这个代码 ...
- POJ 3279 - Fliptile - [状压+暴力枚举]
题目链接:http://poj.org/problem?id=3279 Sample Input 4 4 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 Sample Output 0 ...
- Java 关于密码处理的工具类[MD5编码][AES加密/解密]
项目中又遇到了加密问题,又去翻了半天,然后做测试,干脆就把常用的两类小结一下. 1.第一种所谓的MD5加密 其实也不算加密,只是基于Hash算法的不可逆编码而已,等于说,一旦经过MD5处理,是不可能从 ...
- InnoDB中锁的算法(2)
Ⅰ.上节回顾 session1: (root@localhost) [test]> select * from l; +---+------+------+------+ | a | b | c ...
- Cocoa 框架 For iOS(一) 框架的介绍,Objectivie-C运行时能力的解析等 (转载)
http://blog.csdn.net/totogo2010/article/details/8081253 Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助. ...
- Tomcat不加项目名称访问设置
一.Tomcat不加项目名称访问设置 一.方法一:修改配置文件server.xml 1.修改配置文件server.xml <Host appBase="webapps" au ...