Etcd教程 — Etcd单机版安装_etcd单机部署

Etcd教程 — Etcd单机版安装

前述

Etcd教程 — 第一章 Etcd简介、Etcd单机安装安装的单机版Etcd,可以使用,但是本机只能访问本机的Etcd,其他电脑是无法使用该机Etcd的,所以本文重点解决的就是Etcd不能访问。

1 Linux安装Etcd

1.1 创建安装执行脚本

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

vim etcd

1.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 /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 D O W N L O A D _ U R L / {DOWNLOAD\_URL}/ DOWNLOAD_URL/{ETCD_VER}/etcd- E T C D _ V E R − l i n u x − a m d 64. t a r . g z − o / o p t / s o f t / e t c d / e t c d − {ETCD\_VER}-linux-amd64.tar.gz -o /opt/soft/etcd/etcd- ETCD_VERlinuxamd64.tar.gzo/opt/soft/etcd/etcd{ETCD_VER}-linux-amd64.tar.gz
tar xzvf /opt/soft/etcd/etcd- E T C D _ V E R − l i n u x − a m d 64. t a r . g z − C / o p t / s o f t / e t c d / e t c d − d o w n l o a d − t e s t − − s t r i p − c o m p o n e n t s = 1 r m − f / o p t / s o f t / e t c d / e t c d − {ETCD\_VER}-linux-amd64.tar.gz -C /opt/soft/etcd/etcd-download-test --strip-components=1 rm -f /opt/soft/etcd/etcd- ETCD_VERlinuxamd64.tar.gzC/opt/soft/etcd/etcddownloadteststripcomponents=1rmf/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

1.3 执行脚本里的命令

/opt/soft/etcd 执行:

./etcd

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

chmod 777 etcd

1.4 查看Etcd安装是否成功

1.4.1 查看Etcd服务端安装是否成功

/opt/soft/etcd/etcd-download-test/etcd --version

如下显示则安装成功:

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

1.4.2 查看Etcd客户端安装是否成功

/opt/soft/etcd/etcd-download-test/etcdctl version

如下显示则安装成功:

etcdctl version: 3.5.4
API version: 3.5

1.5 启动Etcd

/opt/soft/etcd/etcd-download-test/etcd

1.6 测试

/opt/soft/etcd/etcd-download-test/etcdctl put foo bar

/opt/soft/etcd/etcd-download-test/etcdctl get foo

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

关闭firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

2.2 修改配置

1、切换至 /opt/soft/etcd/etcd-download-test/ 目录,将 etcdetcdctl 这两个二进制文件复制到 /usr/local/bin 目录下,这样就可以在系统中直接调用etcd/etcdctl这两个程序了。

cp etcd etcdctl /usr/local/bin

2、输入命令etcd,即可启动一个单节点的etcd服务,ctrl+c即可停止服务。这里讲解一下etcd服务启动后控制台显示的各个参数的意义:

{“level”:“info”,“ts”:“2022-06-05T22:46:31.751+0800”,“caller”:“etcdmain/etcd.go:73”,“msg”:“Running: “,“args”:[“etcd”]}
{“level”:“warn”,“ts”:“2022-06-05T22:46:31.751+0800”,“caller”:“etcdmain/etcd.go:105”,“msg”:”‘data-dir’ was empty; using default”,“data-dir”:“default.etcd”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.751+0800”,“caller”:“etcdmain/etcd.go:116”,“msg”:“server has been already initialized”,“data-dir”:“default.etcd”,“dir-type”:“member”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.751+0800”,“caller”:“embed/etcd.go:131”,“msg”:“configuring peer listeners”,“listen-peer-urls”:[“http://localhost:2380”]}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.752+0800”,“caller”:“embed/etcd.go:139”,“msg”:“configuring client listeners”,“listen-client-urls”:[“http://localhost:2379”]}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.752+0800”,“caller”:“embed/etcd.go:308”,“msg”:“starting an etcd server”,“etcd-version”:“3.5.4”,“git-sha”:“08407ff76”,“go-version”:“go1.16.15”,“go-os”:“linux”,“go-arch”:“amd64”,“max-cpu-set”:1,“max-cpu-available”:1,“member-initialized”:true,“name”:“default”,“data-dir”:“default.etcd”,“wal-dir”:“”,“wal-dir-dedicated”:“”,“member-dir”:“default.etcd/member”,“force-new-cluster”:false,“heartbeat-interval”:“100ms”,“election-timeout”:“1s”,“initial-election-tick-advance”:true,“snapshot-count”:100000,“snapshot-catchup-entries”:5000,“initial-advertise-peer-urls”:[“http://localhost:2380”],“listen-peer-urls”:[“http://localhost:2380”],“advertise-client-urls”:[“http://localhost:2379”],“listen-client-urls”:[“http://localhost:2379”],“listen-metrics-urls”:[],“cors”:[“*”],“host-whitelist”:[“*”],“initial-cluster”:“”,“initial-cluster-state”:“new”,“initial-cluster-token”:“”,“quota-size-bytes”:2147483648,“pre-vote”:true,“initial-corrupt-check”:false,“corrupt-check-time-interval”:“0s”,“auto-compaction-mode”:“periodic”,“auto-compaction-retention”:“0s”,“auto-compaction-interval”:“0s”,“discovery-url”:“”,“discovery-proxy”:“”,“downgrade-check-interval”:“5s”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.752+0800”,“caller”:“etcdserver/backend.go:81”,“msg”:“opened backend db”,“path”:“default.etcd/member/snap/db”,“took”:“75.889µs”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.752+0800”,“caller”:“etcdserver/server.go:529”,“msg”:“No snapshot found. Recovering WAL from scratch!”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.753+0800”,“caller”:“etcdserver/raft.go:483”,“msg”:“restarting local member”,“cluster-id”:“cdf818194e3a8c32”,“local-member-id”:“8e9e05c52164694d”,“commit-index”:6}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.753+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“8e9e05c52164694d switched to configuration voters=()”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.753+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“8e9e05c52164694d became follower at term 3”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.753+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“newRaft 8e9e05c52164694d [peers: [], term: 3, commit: 6, applied: 0, lastindex: 6, lastterm: 3]”}
{“level”:“warn”,“ts”:“2022-06-05T22:46:31.754+0800”,“caller”:“auth/store.go:1220”,“msg”:“simple token is not cryptographically signed”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.754+0800”,“caller”:“mvcc/kvstore.go:415”,“msg”:“kvstore restored”,“current-rev”:1}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.755+0800”,“caller”:“etcdserver/quota.go:94”,“msg”:“enabled backend quota with default value”,“quota-name”:“v3-applier”,“quota-size-bytes”:2147483648,“quota-size”:“2.1 GB”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.755+0800”,“caller”:“etcdserver/server.go:851”,“msg”:“starting etcd server”,“local-member-id”:“8e9e05c52164694d”,“local-server-version”:“3.5.4”,“cluster-version”:“to_be_decided”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.757+0800”,“caller”:“embed/etcd.go:277”,“msg”:“now serving peer/client/metrics”,“local-member-id”:“8e9e05c52164694d”,“initial-advertise-peer-urls”:[“http://localhost:2380”],“listen-peer-urls”:[“http://localhost:2380”],“advertise-client-urls”:[“http://localhost:2379”],“listen-client-urls”:[“http://localhost:2379”],“listen-metrics-urls”:[]}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.757+0800”,“caller”:“etcdserver/server.go:752”,“msg”:“starting initial election tick advance”,“election-ticks”:10}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.758+0800”,“caller”:“embed/etcd.go:581”,“msg”:“serving peer traffic”,“address”:“127.0.0.1:2380”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.758+0800”,“caller”:“embed/etcd.go:553”,“msg”:“cmux::serve”,“address”:“127.0.0.1:2380”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.758+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“8e9e05c52164694d switched to configuration voters=(10276657743932975437)”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.758+0800”,“caller”:“membership/cluster.go:421”,“msg”:“added member”,“cluster-id”:“cdf818194e3a8c32”,“local-member-id”:“8e9e05c52164694d”,“added-peer-id”:“8e9e05c52164694d”,“added-peer-peer-urls”:[“http://localhost:2380”]}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.758+0800”,“caller”:“membership/cluster.go:584”,“msg”:“set initial cluster version”,“cluster-id”:“cdf818194e3a8c32”,“local-member-id”:“8e9e05c52164694d”,“cluster-version”:“3.5”}
{“level”:“info”,“ts”:“2022-06-05T22:46:31.758+0800”,“caller”:“api/capability.go:75”,“msg”:“enabled capabilities for version”,“cluster-version”:“3.5”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.453+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“8e9e05c52164694d is starting a new election at term 3”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.453+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“8e9e05c52164694d became pre-candidate at term 3”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.454+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“8e9e05c52164694d received MsgPreVoteResp from 8e9e05c52164694d at term 3”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.454+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“8e9e05c52164694d became candidate at term 4”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.454+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“8e9e05c52164694d received MsgVoteResp from 8e9e05c52164694d at term 4”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.454+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“8e9e05c52164694d became leader at term 4”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.454+0800”,“logger”:“raft”,“caller”:“etcdserver/zap_raft.go:77”,“msg”:“raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 4”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.474+0800”,“caller”:“etcdserver/server.go:2042”,“msg”:“published local member to cluster through raft”,“local-member-id”:“8e9e05c52164694d”,“local-member-attributes”:“{Name:default ClientURLs:[http://localhost:2379]}”,“request-path”:“/0/members/8e9e05c52164694d/attributes”,“cluster-id”:“cdf818194e3a8c32”,“publish-timeout”:“7s”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.475+0800”,“caller”:“embed/serve.go:98”,“msg”:“ready to serve client requests”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.475+0800”,“caller”:“embed/serve.go:140”,“msg”:“serving client traffic insecurely; this is strongly discouraged!”,“address”:“127.0.0.1:2379”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.475+0800”,“caller”:“etcdmain/main.go:44”,“msg”:“notifying init daemon”}
{“level”:“info”,“ts”:“2022-06-05T22:46:33.475+0800”,“caller”:“etcdmain/main.go:50”,“msg”:“successfully notified init daemon”}

1.etcd-version:etcd的版本。
2.git-sha。
3.go-version:基于的go语言版本。
4.go-os:运行的系统。
5.go-arch:运行的系统架构。
6.max-cpu-set:设置的CPU数量。
7.max-cpu-available:最多可用的CPU数量。
8.member-initialized:集群成员是否初始化,默认false。

9.name表示节点名称,默认为default。
2.data-dir 保存日志和快照的数据目录,默认为当前工作目录default.etcd/目录下。
3.在http://localhost:2380和集群中其他节点通信。
4.在http://localhost:2379提供和客户端交互。
5.heartbeat-interval:为100ms,该参数的作用是leader多久发送一次心跳到followers,默认值是100ms。
6.election-timeout:为1000ms,该参数的作用是重新投票的超时时间,如果follow在该时间间隔没有收到心跳包,会触发重新投票,默认为1000ms。
7.snapshot-count:为10000,该参数的作用是指定有多少事务被提交时,触发截取快照保存到磁盘。
8.集群和每个节点都会生成一个uuid,且固定不变,cluster-id:集群UUID,local-member-id:本机UUID。

{“level”:“info”,“ts”:“2022-06-05T22:46:31.758+0800”,“caller”:“membership/cluster.go:421”,“msg”:“added member”,“cluster-id”:“cdf818194e3a8c32”,“local-member-id”:“8e9e05c52164694d”,“added-peer-id”:“8e9e05c52164694d”,“added-peer-peer-urls”:[“http://localhost:2380”]}

9.启动的时候会运行raft,选举出leader

2.3 创建etcd数据保存文件

mkdir -p /opt/soft/etcd/etcd_data/

2.4 创建etcd配置文件

/opt/soft/etcd/下创建 etcd.conf 文件,注意要修改EtcdIp为所在服务器的Ip

vim /opt/soft/etcd/etcd.conf

#########################################################
########### 请根据各节点服务器实际情况修改配置 ##########
#########################################################

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Go语言工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Go语言全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Golang知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Golang知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-JTdULsjv-1712868467011)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux上安装etcd,你可以按照以下步进行操作: 1. 首先,确保你的Linux系统已连接到互联网。 2. 打开终端,并使用curl命令下载etcd的二进制文件。你可以在etcd的官方GitHub页面(https://github.com/etcd-io/etcd/releases)上找到最新版本的下载链接。选择适合你系统架构的二进制文件下载。 ``` curl -L https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz -o etcd-v3.5.0-linux-amd64.tar.gz ``` 3. 解压下载的二进制文件: ``` tar xzvf etcd-v3.5.0-linux-amd64.tar.gz ``` 4. 进入解压后的etcd目录: ``` cd etcd-v3.5.0-linux-amd64 ``` 5. 将etcdetcdctl二进制文件复制到系统路径中: ``` sudo cp etcd /usr/local/bin sudo cp etcdctl /usr/local/bin ``` 6. 创建etcd的配置文件,例如etcd.conf: ``` sudo nano /etc/etcd.conf ``` 在配置文件中,你可以指定etcd的监听地址、数据目录等。根据需要进行配置。 7. 创建一个systemd服务单元文件,例如etcd.service: ``` sudo nano /etc/systemd/system/etcd.service ``` 在服务单元文件中,添加以下内容: ``` [Unit] Description=etcd After=network.target [Service] ExecStart=/usr/local/bin/etcd --config-file /etc/etcd.conf Restart=always Type=simple [Install] WantedBy=multi-user.target ``` 8. 启用并启动etcd服务: ``` sudo systemctl enable etcd.service sudo systemctl start etcd.service ``` 现在,etcd就已经成功安装在你的Linux系统上,并作为一个后台服务在运行。你可以根据需要进一步配置和使用etcd来实现分布式键值存储等功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值