1. 使用 apt 或 yum 安装 etcd

命令如下:

sudo apt-get install etcd

或者

sudo yum install etcd

这样安装的缺点是:安装的 etcd 版本过低为 2.2.5,该版本使用 Go 的版本为 1.6 如下所示:

wohu@ubuntu-dev:~$ etcd
2021-04-17 09:18:52.987281 I | etcdmain: etcd Version: 2.2.5
2021-04-17 09:18:52.987309 I | etcdmain: Git SHA: Not provided (use ./build instead of go build)
2021-04-17 09:18:52.987314 I | etcdmain: Go Version: go1.6rc2
2021-04-17 09:18:52.987318 I | etcdmain: Go OS/Arch: linux/amd64
2021-04-17 09:18:52.987322 I | etcdmain: setting maximum number of CPUs to 8, total number of available CPUs is 8
2021-04-17 09:18:52.987327 W | etcdmain: no data-dir provided, using default data-dir ./default.etcd
2021-04-17 09:18:52.987477 C | etcdmain: listen tcp 127.0.0.1:2380: bind: address already in use
wohu@ubuntu-dev:~$

而我们现在通常使用的是 etcd 3.x 版本以上,所以不符合我们的要求。

对应的我们可以使用 apt 或者 yum 卸载已经安装的 etcd,命令如下:

sudo apt-get remove etcd

2. 二进制包安装 etcd

我们安装 etcd3.4.15 版本,安装脚本如下:

ETCD_VER=v3.4.15# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/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-testcurl -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# install end and check etcd version
/tmp/etcd-download-test/etcd --version
/tmp/etcd-download-test/etcdctl version

安装完成后的输出结果:

etcd Version: 3.4.15
Git SHA: aa7126864
Go Version: go1.12.17
Go OS/Arch: linux/amd64
etcdctl version: 3.4.15
API version: 3.4

2.1 启动 etcd

# start a local etcd server
/tmp/etcd-download-test/etcd

启动时命令打印如下:

wohu@ubuntu-dev:~/tools$ /tmp/etcd-download-test/etcd
[WARNING] Deprecated '--logger=capnslog' flag is set; use '--logger=zap' flag instead
2021-04-17 09:47:53.260038 I | etcdmain: etcd Version: 3.4.15
2021-04-17 09:47:53.260065 I | etcdmain: Git SHA: aa7126864
2021-04-17 09:47:53.260070 I | etcdmain: Go Version: go1.12.17
2021-04-17 09:47:53.260074 I | etcdmain: Go OS/Arch: linux/amd64
2021-04-17 09:47:53.260078 I | etcdmain: setting maximum number of CPUs to 8, total number of available CPUs is 8
2021-04-17 09:47:53.260086 W | etcdmain: no data-dir provided, using default data-dir ./default.etcd
[WARNING] Deprecated '--logger=capnslog' flag is set; use '--logger=zap' flag instead
2021-04-17 09:47:53.260311 I | embed: name = default
2021-04-17 09:47:53.260318 I | embed: data dir = default.etcd
2021-04-17 09:47:53.260323 I | embed: member dir = default.etcd/member
2021-04-17 09:47:53.260327 I | embed: heartbeat = 100ms
2021-04-17 09:47:53.260333 I | embed: election = 1000ms
2021-04-17 09:47:53.260337 I | embed: snapshot count = 100000
2021-04-17 09:47:53.260349 I | embed: advertise client URLs = http://localhost:2379
2021-04-17 09:47:53.350082 I | etcdserver: starting member 8e9e05c52164694d in cluster cdf818194e3a8c32
raft2021/04/17 09:47:53 INFO: 8e9e05c52164694d switched to configuration voters=()
raft2021/04/17 09:47:53 INFO: 8e9e05c52164694d became follower at term 0
raft2021/04/17 09:47:53 INFO: newRaft 8e9e05c52164694d [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
raft2021/04/17 09:47:53 INFO: 8e9e05c52164694d became follower at term 1
raft2021/04/17 09:47:53 INFO: 8e9e05c52164694d switched to configuration voters=(10276657743932975437)
2021-04-17 09:47:53.394166 W | auth: simple token is not cryptographically signed
2021-04-17 09:47:53.444208 I | etcdserver: starting server... [version: 3.4.15, cluster version: to_be_decided]
2021-04-17 09:47:53.444331 I | etcdserver: 8e9e05c52164694d as single-node; fast-forwarding 9 ticks (election ticks 10)
raft2021/04/17 09:47:53 INFO: 8e9e05c52164694d switched to configuration voters=(10276657743932975437)
2021-04-17 09:47:53.444616 I | etcdserver/membership: added member 8e9e05c52164694d [http://localhost:2380] to cluster cdf818194e3a8c32
2021-04-17 09:47:53.445514 I | embed: listening for peers on 127.0.0.1:2380
raft2021/04/17 09:47:53 INFO: 8e9e05c52164694d is starting a new election at term 1
raft2021/04/17 09:47:53 INFO: 8e9e05c52164694d became candidate at term 2
raft2021/04/17 09:47:53 INFO: 8e9e05c52164694d received MsgVoteResp from 8e9e05c52164694d at term 2
raft2021/04/17 09:47:53 INFO: 8e9e05c52164694d became leader at term 2
raft2021/04/17 09:47:53 INFO: raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 2
2021-04-17 09:47:53.651082 I | etcdserver: setting up the initial cluster version to 3.4
2021-04-17 09:47:53.661434 N | etcdserver/membership: set the initial cluster version to 3.4
2021-04-17 09:47:53.661471 I | etcdserver/api: enabled capabilities for version 3.4
2021-04-17 09:47:53.661496 I | etcdserver: published {Name:default ClientURLs:[http://localhost:2379]} to cluster cdf818194e3a8c32
2021-04-17 09:47:53.661520 I | embed: ready to serve client requests
2021-04-17 09:47:53.662148 N | embed: serving insecure client requests on 127.0.0.1:2379, this is strongly discouraged!

2.2 读写 etcd

# write,read to etcd
wohu@ubuntu-dev:~/tools$ /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
OK
wohu@ubuntu-dev:~/tools$ /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
foo
bar
wohu@ubuntu-dev:~/tools$

3. Docker 安装 etcd

etcd 使用 gcr.io/etcd-development/etcd 作为主要的容器仓库, quay.io/coreos/etcd 作为备用候选的容器仓库。

安装命令:

rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \docker rmi gcr.io/etcd-development/etcd:v3.4.15 || true && \docker run \-p 2379:2379 \-p 2380:2380 \--mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \--name etcd-gcr-v3.4.15 \gcr.io/etcd-development/etcd:v3.4.15 \/usr/local/bin/etcd \--name s1 \--data-dir /etcd-data \--listen-client-urls http://0.0.0.0:2379 \--advertise-client-urls http://0.0.0.0:2379 \--listen-peer-urls http://0.0.0.0:2380 \--initial-advertise-peer-urls http://0.0.0.0:2380 \--initial-cluster s1=http://0.0.0.0:2380 \--initial-cluster-token tkn \--initial-cluster-state new \--log-level info \--logger zap \--log-outputs stderr

测试是否安装成功:

docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcd --version"
docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl version"
docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl get foo"

4. etcd 前端工具

强烈推荐通过 etcdkeeper 作为 etcd 的 web 前端工具,

参考:
https://github.com/etcd-io/etcd/releases/

etcd 笔记(02)— etcd 安装(apt 或 yum 安装 、二进制包安装、Docker 安装 etcd、etcd 前端工具etcdkeeper)相关推荐

  1. linux上安装python、igraph源码包_linux ubuntu 安装/卸载/删除python-igraph方法

    如何在Ubuntu 16.10上安装python-igraph? 首先使用以下命令更新系统: sudo add-apt-repository ppa:igraph/ppa # Add the Laun ...

  2. linux下安装Jenkins(centos7,另附使用docker安装)

    目录 1.下载安装包 2.修改配置 3.登陆Jenkins 4.安装git相关插件(用于自动化部署) 5.使用docker安装jenkins 6.docker安装jenkins常见问题: 1.下载安装 ...

  3. docker安装mysql远程不能访问_虚拟机中docker安装mysql远程无法访问

    问题:虚拟机中docker安装mysql远程无法访问 背景: [root@localhost ~]# docker run -p 3306:3306 --name mysql01 -e MYSQL_R ...

  4. 利用yum下载rpm包并批量安装

    一.下载rpm包 方法一:downloadonly 1.yum自动下载RPM包及其所有依赖的包至/root/rpm目录:yum install yum-plugin-downloadonly yum ...

  5. yum 下载RPM包而不进行安装

    yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了--downloadonly(只下载)的选项来达到这个目的. $ sudo yum install --downloadonly < ...

  6. linux yum下载RPM包后再安装LAMP环境

    1.下载yum插件 yum-downloadonly,实现只下载软件包的功能. yum install yum-downloadonly 或者 yum install yum-plugin-downl ...

  7. Centos7使用yum下载rpm包而不执行安装

    yum-downloadonly是yum的一个插件,使得yum可以从RHN或者yum的仓库只下载包而不安装. 举例,从yum源下载ricci软件包 # yum install --downloadon ...

  8. linux安装中文字体 yum,CentOS 7.6环境下安装中文字体库

    这样的对象依赖于本地的字段.新装的linux没有安装字段库,和相应的字体. 1.fc-list查看字体库 2.yum -y install fontconfig安装 3.安装好后/usr/share目 ...

  9. 通过kubeadm的方式以及二进制包的方式安装k8s的对比总结---K8S_Google工作笔记0016

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 一般我们 都用kubeadm去安装k8s因为这种方式比较快,一般最快半个小时可搭建完毕.

最新文章

  1. swoole 内存Memory
  2. [导入]ASP.NET生成高质量缩略图通用函数(c#代码)
  3. 2013\Province_Java_A\2.振兴中华
  4. linux启动nifi指令,Nifi 组件脚本开发 - ExecuteScript 使用指南 (二)
  5. 【深度学习torch——error】——“xxx.pt is a zip archive(did you mean to use torch.jit.load()?)
  6. 字符串长度(PHP学习)
  7. 《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》
  8. 9 10次c语言上机作业答案,第十五次上机作业带答案
  9. 华为首秀 AI 全栈软件平台!
  10. Glib2之dbus用法(五)
  11. codeforces776D
  12. 三大开源bi工具_Superset,基于web的开源BI工具,github三万star
  13. 基于多尺度稀疏表示的视网膜OCT图像阴影修复
  14. 平安保险IT员工收入揭秘
  15. 计算机常用工具软件实训总结报告,计算机常用工具软件实训报告
  16. HMTL中隐藏域(type=hidden)
  17. mysql 5.6 64 位安装 缺少libai.so_CentOS6.7安装部署LNMP(nginx1.8.0+php5.6.10+mysql5.6.12) 法外狂徒...
  18. FLutter web app 运行显示空白页
  19. mac终端里新建html文件,mac命令行终端怎么创建文件 mac命令行终端创建文件教程...
  20. SolrCloud 的搭建、使用

热门文章

  1. RabbitMQ 入门系列(4)— RabbitMQ 启动、停止节点和应用程序、用户管理、权限配置
  2. Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
  3. TVM编译机器学习到 WASM 和 WebGPU
  4. Docker Buildx插件
  5. web站点的欢迎页面
  6. 2021年大数据HBase(十三):HBase读取和存储数据的流程
  7. 2021年大数据Spark(三十七):SparkStreaming实战案例二 UpdateStateByKey
  8. 黑客基础知识与防护(一)
  9. python 保存内容到记事本里面
  10. Resource entery xx is already defined