Etcd教程 — 第一章 Etcd简介、Etcd单机安装

1 Etcd介绍

1.1 介绍

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

1.2 Etcd特点

Etcd具有以下特点:

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

2 Etcd单机安装

2.1 开放端口

开放每台机器上的2379、2380端口的命令:

firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent

重启防火墙:

firewall-cmd --reload

查看开放的端口:

firewall-cmd --list-port

2.2 安装包及安装教程

安装包下载地址:https://github.com/etcd-io/etcd/tags

选择最新版本,同时里面还有Linux、macOS (Darwin)、Docker这三种安装方式的步骤以及安装包。
在这里插入图片描述

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

2.3 Linux安装Etcd

2.3.1 创建执行脚本

在 linux的 /opt/soft/etcd/ 目录下创建一个脚本文件:

vim etcd

2.3.2 脚本内容

ETCD_VER=v3.5.13

# 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 /opt/soft/etcd/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /opt/soft/etcd/etcd-download-test && mkdir -p /opt/soft/etcd/etcd-download-test

curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /opt/soft/etcd/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar -zxvf /opt/soft/etcd/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /opt/soft/etcd/etcd-download-test --strip-components=1
rm -f /opt/soft/etcd/etcd-${ETCD_VER}-linux-amd64.tar.gz

#查看安装是否成功的相关命令
/opt/soft/etcd/etcd-download-test/etcd --version
/opt/soft/etcd/etcd-download-test/etcdctl version
/opt/soft/etcd/etcd-download-test/etcdutl version

2.3.3 执行脚本里的命令

/opt/soft/etcd 执行:

./etcd

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

chmod 777 etcd

2.3.4 查看Etcd安装是否成功

2.3.4.1 查看Etcd服务端安装是否成功
/opt/soft/etcd/etcd-download-test/etcd --version

如下显示则安装成功:

etcd Version: 3.5.13
Git SHA: c9063a0dc
Go Version: go1.21.8
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=/opt/soft/etcd/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.3.4.2 查看Etcd客户端安装是否成功
/opt/soft/etcd/etcd-download-test/etcdctl version

如下显示则安装成功:

etcdctl version: 3.5.13
API version: 3.5

2.3.5 测试

  1. 启动Etcd
/opt/soft/etcd/etcd-download-test/etcd
  1. 添加/查看数据
/opt/soft/etcd/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
/opt/soft/etcd/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo

[root@node1192 ~]# /opt/soft/etcd/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
OK
[root@node1192 ~]# /opt/soft/etcd/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
foo
bar

2.4 macOS (Darwin)安装Etcd(未实操)

ETCD_VER=v3.5.13

# 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 mv /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.5 Docker安装Etcd(推荐)

Docker安装Etcd前,需要先在Linux上安装Docker,Docker的安装步骤参见:centos7安装docker

1 创建Etcd的数据目录

mkdir -p /opt/soft/etcd/data

2 Docker部署Etcd

  1. 拉取镜像:
# 拉取etcd镜像
docker pull quay.io/coreos/etcd:v3.5.13
  1. Docker运行Etcd:
docker run -d \
  -p 2379:2379 \
  -p 2380:2380 \
  --restart=always \
  --mount type=bind,source=/opt/soft/etcd/data,destination=/etcd-data \
  --name etcd \
  quay.io/coreos/etcd:v3.5.13 \
  /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

3 Docker查看Etcd版本及使用

相关命令:

# 查看Etcd服务器版本
docker exec etcd /usr/local/bin/etcd --version

# 查看Etcd客户端版本
docker exec etcd /usr/local/bin/etcdctl version
docker exec etcd /usr/local/bin/etcdutl version

# 查看Etcd健康状况
docker exec etcd /usr/local/bin/etcdctl endpoint health

# Etcd添加数据
docker exec etcd /usr/local/bin/etcdctl put foo bar

# Etcd查看数据
docker exec etcd /usr/local/bin/etcdctl get foo

# Etcd查看所有数据
docker exec etcd /usr/local/bin/etcdctl get --prefix ""

# Etcd删除数据
docker exec etcd /usr/local/bin/etcdctl del foo

执行结果:

[root@node1192 soft]# docker exec etcd /usr/local/bin/etcd --version
etcd Version: 3.5.13
Git SHA: c9063a0dc
Go Version: go1.21.8
Go OS/Arch: linux/amd64

[root@node1192 soft]# docker exec etcd /usr/local/bin/etcdctl version
etcdctl version: 3.5.13
API version: 3.5

[root@node1192 soft]# docker exec etcd /usr/local/bin/etcdutl version
etcdutl version: 3.5.13
API version: 3.5

[root@node1192 soft]# docker exec etcd /usr/local/bin/etcdctl endpoint health
127.0.0.1:2379 is healthy: successfully committed proposal: took = 5.561765ms

[root@node1192 soft]# docker exec etcd /usr/local/bin/etcdctl put foo bar
OK

[root@node1192 soft]# docker exec etcd /usr/local/bin/etcdctl get foo
foo
bar

[root@node1192 soft]# docker exec etcd /usr/local/bin/etcdctl get --prefix ""
foo
bar

[root@node1192 soft]# docker exec etcd /usr/local/bin/etcdctl del foo
1
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值