栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Etcd教程 — 第一章

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Etcd教程 — 第一章

Etcd教程 — 第一章
  • 一、Etcd介绍
    • 1.1 介绍
    • 1.2 etcd特点
  • 二、 Etcd单机安装
    • 2.1 安装方式
      • 2.1.1 yum install etcd
      • 2.1.2 通过系统工具安装etcd【版本比较滞后】
      • 2.1.3 二进制包、源码编译、Docker容器【推荐方式】
    • 2.2 Linux安装
      • 2.2.1 创建执行脚本
      • 2.2.2 脚本内容
      • 2.2.3 执行脚本里的命令
      • 2.2.4 查看Etcd安装是否成功
        • 2.2.4.1 查看Etcd服务端安装是否成功
        • 2.2.4.2 查看Etcd客户端安装是否成功
        • 2.2.4.3 查看Etcd客户端安装是否成功
      • 2.2.5 启动Etcd
      • 2.2.6 测试
    • 2.3 macOS (Darwin)安装
    • 2.4 Docker安装
  • 三、Etcd集群安装
    • 3.1 Etcd 集群方式
    • 3.2 前言
    • 3.3 静态启动
      • 3.3.1 安装 goreman工具
      • 3.3.2 编写Procfile文件
      • 3.3.3 执行 goreman启动命令
      • 3.3.4 查看端口情况
    • 3.4 Etcd 动态发现
    • 3.5 DNS发现

一、Etcd介绍 1.1 介绍

etcd 是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。

1.2 etcd特点

etcd 具有以下特点:

完全复制:集群中的每个节点都可以使用完整的存档
高可用性:Etcd可用于避免硬件的单点故障或网络问题
一致性:每次读取都会返回跨多主机的最新写入
简单:包括一个定义良好、面向用户的API(gRPC)
安全:实现了带有可选的客户端证书身份验证的自动化TLS
快速:每秒10000次写入的基准速度
可靠:使用Raft算法实现了强一致、高可用的服务存储目录

二、 Etcd单机安装 2.1 安装方式 2.1.1 yum install etcd 2.1.2 通过系统工具安装etcd【版本比较滞后】 2.1.3 二进制包、源码编译、Docker容器【推荐方式】

下载安装包地址:https://github.com/etcd-io/etcd/tags
选择最新版本,里面有安装步骤和安装包。

注:2.2到2.4的安装方式在github上都有写,详见:https://github.com/etcd-io/etcd/releases/tag/v3.5.4

2.2 Linux安装 2.2.1 创建执行脚本

在 linux的 /tmp 目录下创建一个命令行文件:

vim etcd
2.2.2 脚本内容
ETCD_VER=v3.5.4

# choose either URL 翻译:选择下面两个任意一个地址即可
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}

rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test

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

#查看安装是否成功的相关命令
/tmp/etcd-download-test/etcd --version
/tmp/etcd-download-test/etcdctl version
/tmp/etcd-download-test/etcdutl version
2.2.3 执行脚本里的命令

在 /tmp 执行:

./etcd

如果在执行时提示权限不够,则需要授权,然后再次执行即可:

chmod 777 etcd
2.2.4 查看Etcd安装是否成功 2.2.4.1 查看Etcd服务端安装是否成功
/tmp/etcd-download-test/etcd --version

如下显示则安装成功:

etcd Version: 3.5.4
Git SHA: 08407ff76
Go Version: go1.16.15
Go OS/Arch: linux/amd64

注意:需要将etcd加入到环境变量中,否则会在 3.3.3 执行 goreman启动命令 步骤时报 /bin/sh: etcd: 未找到命令 。

vim ~/.bashrc

将etcd环境变量添加到文件末尾。

export GOROOT=/usr/local/go #GOROOT是系统上安装Go软件包的位置。
export GOPATH=/root/go/GOPATH #GOPATH是工作目录的位置。这个是自己创建的,想放在哪都行
export ETCD=/tmp/etcd-download-test #ETCD

#export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
export PATH=$GOPATH/bin:$GOROOT/bin:$ETCD:$PATH
export GOPROXY="https://goproxy.cn"

加完后按esc键退出编辑模式,输入:wq保存退出。

source ~/.bashrc 更新配置文件。

2.2.4.2 查看Etcd客户端安装是否成功
/tmp/etcd-download-test/etcdctl version

如下显示则安装成功:

etcdctl version: 3.5.4
API version: 3.5

2.2.4.3 查看Etcd客户端安装是否成功
/tmp/etcd-download-test/etcdutl version

如下显示则安装成功:

etcdutl version: 3.5.4
API version: 3.5

2.2.5 启动Etcd
# start a local etcd server
/tmp/etcd-download-test/etcd
2.2.6 测试
# write,read to etcd
/tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
/tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
2.3 macOS (Darwin)安装
ETCD_VER=v3.5.4

# choose either URL 翻译:选择下面两个任意一个地址即可

GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}

rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test

curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64

/tmp/etcd-download-test/etcd --version
/tmp/etcd-download-test/etcdctl version
/tmp/etcd-download-test/etcdutl version
2.4 Docker安装
rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && 
  docker rmi gcr.io/etcd-development/etcd:v3.5.4 || true && 
  docker run 
  -p 2379:2379 
  -p 2380:2380 
  --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data 
  --name etcd-gcr-v3.5.4 
  gcr.io/etcd-development/etcd:v3.5.4 
  /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.5.4 /bin/sh -c "/usr/local/bin/etcd --version"
docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl version"
docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl get foo"
docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdutl version"
三、Etcd集群安装

在实际生产环境中,为了整个集群的高可用,Etcd通常会以集群的方式部署,以避免单点故障。

3.1 Etcd 集群方式

静态启动、Etcd 动态发现、DNS发现

3.2 前言

集群模式下会用到的参数如下:

--name
etcd集群中的节点名,这里可以随意,可区分且不重复就行

--listen-peer-urls
监听用于节点之间通信的url,可监听多个,集群内部将通过这些url进行数据交互(如选举,数据同步等)

--initial-advertise-peer-urls
建议用于节点之间通信的url,节点间将以该值进行通信。

--listen-client-urls
监听的用于客户端通信的url,同样可以监听多个。

--advertise-client-urls
建议使用的客户端通信url,该值用于etcd代理或etcd成员与etcd节点通信。

--initial-cluster-token etcd-cluster-1
节点的token值,设置该值后集群将生成唯一id,并为每个节点也生成唯一id,当使用相同配置文件再启动一个集群时,只要该token值不一样,etcd集群就不会相互影响。

--initial-cluster
也就是集群中所有的initial-advertise-peer-urls 的合集

--initial-cluster-state new
新建集群的标志,初始化状态使用 new,建立之后改此值为 existing

3.3 静态启动

静态方式需要集群中的每个成员在启动前都知道其他成员的地址和集群的大小。

**注意**应先安装Etcd然后在使用goreman来配置集群,否则会报未找到etcd命令。

单台机器上搭建etcd集群,可以使用goreman工具来操作。

3.3.1 安装 goreman工具

goreman安装配置

3.3.2 编写Procfile文件

编写Procfile.learner文件:

# Use goreman to run `go get github.com/mattn/goreman`
# Change the path of bin/etcd if etcd is located elsewhere

etcd1: etcd --name infra1 --listen-client-urls http://127.0.0.1:12379 --advertise-client-urls http://127.0.0.1:12379 --listen-peer-urls http://127.0.0.1:12380 --initial-advertise-peer-urls http://127.0.0.1:12380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof

etcd2: etcd --name infra2 --listen-client-urls http://127.0.0.1:22379 --advertise-client-urls http://127.0.0.1:22379 --listen-peer-urls http://127.0.0.1:22380 --initial-advertise-peer-urls http://127.0.0.1:22380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof

etcd3: etcd --name infra3 --listen-client-urls http://127.0.0.1:32379 --advertise-client-urls http://127.0.0.1:32379 --listen-peer-urls http://127.0.0.1:32380 --initial-advertise-peer-urls http://127.0.0.1:32380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof
#proxy: bin/etcd grpc-proxy start --endpoints=127.0.0.1:2379,127.0.0.1:22379,127.0.0.1:32379 --listen-addr=127.0.0.1:23790 --advertise-client-url=127.0.0.1:23790 --enable-pprof

# A learner node can be started using Procfile.learner
3.3.3 执行 goreman启动命令
goreman -f ./Procfile.learner start

注意:如果报以下错误,则说明应先安装Etcd然后在使用goreman来配置集群

07:29:58 etcd1 | Starting etcd1 on port 5000
07:29:58 etcd2 | Starting etcd2 on port 5100
07:29:58 etcd3 | Starting etcd3 on port 5200
07:29:58 etcd1 | /bin/sh: etcd: 未找到命令
07:29:58 etcd2 | /bin/sh: etcd: 未找到命令
07:29:58 etcd3 | /bin/sh: etcd: 未找到命令
07:29:58 etcd1 | Terminating etcd1
07:29:58 etcd2 | Terminating etcd2
07:29:58 etcd3 | Terminating etcd3

3.3.4 查看端口情况 3.4 Etcd 动态发现 3.5 DNS发现
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/940919.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号